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を作成: アイデンティティは、JWTにサービスアカウントの秘密鍵(JSONキーペアファイルの一部)を使用して署名します。このJWTには、サービスアカウントに関するクレーム、模倣するターゲットユーザー、リクエストされているREST APIへのアクセスのOAuthスコープに関する情報が含まれています。
アイデンティティがJWTを使用してアクセストークンをリクエスト: アプリケーション/ユーザーは、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をリストアップしています。
最終更新