運用を守るセキュリティ設計

中小企業でも安心して使える、多層防御によるセキュリティアーキテクチャ

セキュリティトークン認証レート制限認証情報管理アクセス制御
読了時間: 8分

このトピックについて

業務システムでは、セキュリティが何より重要です。
不正アクセスやデータ漏洩は、会社の信用を失墜させかねません。

このプロジェクトでは、中小企業でも安心して使えるよう、多層防御のセキュリティ設計を採用しました。

セキュリティの多層防御

1つの防御策だけに頼るのは危険です。
複数の層で防御することで、1つが突破されても次の層で守れます。

この考え方、実運用では本当に効いてきますよね。

セキュリティの4層構造
第1層: トークン認証

秘密トークンで正規のアクセスか確認

通過
第2層: レート制限

短時間の大量リクエストをブロック

通過
第3層: 入力値検証

不正なデータを処理前にはじく

通過
第4層: 認証情報の安全管理

暗号化ストレージ + 自動更新

第1層: トークン認証

GASからの通信には、32文字以上の秘密トークンを使用します。
このトークンを知らない第三者からのアクセスは自動的に拒否されます。

トークン管理のポイント

第2層: レート制限

短時間に大量のリクエストが来た場合、自動的にブロックする仕組みです。
「うっかり連打」まで含めて守れるのがポイントです。

レート制限の動作
リクエスト受信

クライアントIP + トークン末尾8文字で識別

カウント確認

過去1分間のリクエスト数をチェック

60回未満
許可してカウント+1
60回以上
429 Too Many Requestsを返却

レート制限で防げること

  • 悪意のある大量アクセス: 攻撃者によるサービス妨害
  • 操作ミス: ボタンの連打による重複処理
  • 無限ループ: プログラムバグによる無限リクエスト

レスポンスヘッダーでの通知

APIレスポンスには、残りのリクエスト回数が含まれています。

第3層: 入力値検証

送信されたデータが正しい形式かどうか、処理前に厳密にチェックします。

検証で不正が見つかった場合

処理を開始する前にエラーを返却します。これにより、不正なデータが請求書サービスに送信されることを防ぎます。

第4層: 認証情報の安全管理

請求書サービスへの接続に必要な認証情報(アクセストークン)は、特別な管理が必要です。

認証情報管理の3つの工夫

トークン自動更新の流れ
トークン取得リクエスト

APIを呼び出す前にトークンを取得

有効期限チェック

残り60秒以上あるか確認

有効
キャッシュから取得して使用
期限切れ間近
分散ロックを取得して更新
API呼び出し

有効なトークンでリクエスト

分散ロックの仕組み

複数のリクエストが同時にトークン更新を試みると、以下の問題が発生します。

  • 同じトークンを何度も更新(無駄なAPI呼び出し)
  • 古いトークンと新しいトークンが混在(不整合)

分散ロックにより、同時に1つのインスタンスだけがトークン更新を行えるようにしています。

セキュリティ設計のまとめ

この設計で実現できること

運営側にとって

  • セキュリティ対応の工数削減: 自動化された保護機構
  • インシデント対応の容易さ: トークン変更だけで対処可能
  • 監査対応: 構造化ログで履歴を追跡

利用者にとって

  • 安心して利用: 多層防御で守られている
  • 透明性: レート制限の残り回数がわかる
  • 迅速なエラー通知: 問題があればすぐに把握