GCP - Understanding Domain-Wide Delegation
この投稿は、https://www.hunters.security/en/blog/delefriend-a-newly-discovered-design-flaw-in-domain-wide-delegation-could-leave-google-workspace-vulnerable-for-takeoverの紹介です。詳細についてはリンクを参照してください。
ドメインワイドデリゲーションの理解
Google Workspaceのドメインワイドデリゲーションは、Google Workspace Marketplaceからの外部アプリまたは内部のGCPサービスアカウントがユーザーを代表してWorkspace全体のデータにアクセスできるようにします。この機能は、Google APIとやり取りするアプリやユーザーの模倣が必要なサービスが効率を高め、タスクを自動化することで人為的なエラーを最小限に抑えます。OAuth 2.0を使用して、アプリの開発者や管理者はこれらのサービスアカウントにユーザーデータへのアクセス権を個々のユーザーの同意なしに与えることができます。
Google Workspaceでは、次の2つの主要なグローバルデリゲートオブジェクトアイデンティティを作成できます:
GWSアプリケーション: Workspace Marketplaceからのアプリケーションをデリゲートアイデンティティとして設定できます。各Workspaceアプリケーションは、潜在的な誤用を最小限に抑えるためにGoogleによる審査を受けた後、マーケットプレイスで利用可能になります。これにより、誤用のリスクは完全に排除されませんが、そのようなインシデントが発生する難易度は大幅に増加します。
GCPサービスアカウント: こちらでGCPサービスアカウントについて詳しく学ぶ。
ドメインワイドデリゲーション: 内部構造
これがGCPサービスアカウントがGoogle APIに他のGoogle Workspaceのアイデンティティを代表してアクセスする方法です:
アイデンティティがJWTを作成: アイデンティティは、サービスアカウントの秘密鍵(JSONキーペアファイルの一部)を使用してJWTに署名します。このJWTには、サービスアカウントに関するクレーム、模倣するターゲットユーザー、リクエストされているREST APIへのアクセスのOAuthスコープが含まれています。
アイデンティティがアクセストークンをリクエストに使用: アプリケーション/ユーザーは、JWTを使用してGoogleのOAuth 2.0サービスからアクセストークンをリクエストします。リクエストには、模倣するターゲットユーザー(ユーザーのWorkspaceメール)と、アクセスがリクエストされているスコープが含まれます。
GoogleのOAuth 2.0サービスがアクセストークンを返す: アクセストークンは、サービスアカウントが指定されたスコープのユーザーを代表してアクションを実行する権限を表します。このトークンは通常、短命であり、定期的に更新する必要があります(アプリケーションの必要に応じて)。JWTトークンで指定されたOAuthスコープがアクセストークンに対して有効であり、影響を与えることが重要です。たとえば、複数のスコープを持つアクセストークンは、多数のREST APIアプリケーションに対して有効です。
アイデンティティがアクセストークンを使用してGoogle APIを呼び出す: 関連するアクセストークンを使用して、サービスは必要なREST APIにアクセスできます。アプリケーションは、これらのアクセストークンをGoogle APIに向けたHTTPリクエストの「Authorization」ヘッダーに使用します。これらのAPIは、トークンを使用して模倣されたアイデンティティを検証し、必要な権限を持っていることを確認します。
Google APIが要求されたデータを返す: アクセストークンが有効であり、サービスアカウントに適切な権限がある場合、Google APIは要求されたデータを返します。たとえば、次の図では、_users.messages.list_メソッドを使用して、対象のWorkspaceユーザーに関連するすべてのGmailメッセージIDをリストアップしています。
Last updated