このページでは、Google Cloud 管理者が下り(外向き)プロキシを構成することなく組織内アクセス制限をテストする方法について説明します。
組織内アクセス制限ヘッダーを作成してテストするには、次のようにします。
組織の Google Cloud 組織 ID を取得するには、
gcloud organizations list
コマンドを使用します。gcloud organizations list
出力例は次のとおりです。
DISPLAY_NAME: Organization A ID: 123456789 DIRECTORY_CUSTOMER_ID: a1b2c3d4
組織 ID を取得したら、ヘッダー値の JSON 表現を次の形式で作成します。
{ "resources": ["organizations/123456789"], "options": "strict" }
RFC 4648 セクション 5 の仕様に沿って、リクエスト ヘッダーの値をエンコードします。
たとえば、ヘッダー値の JSON 表現が
authorized_orgs.json
ファイルに保存されている場合、basenc を使用したエンコードは次のようになります。$ OR_HEADER=`cat authorized_orgs.json | basenc --base64url -w0` $ echo $OR_HEADER ewogInJlc291cmNlcyI6IFsib3JnYW5pemF0aW9ucy8xMjM0NTY3ODkiXQogIm9wdGlvbnMiOiAic3RyaWN0Igp9Cgo=
ヘッダー構成で承認済みの Google Cloud 組織内のリソースへのアクセスが許可されるかどうかをテストするには、承認済みの Google Cloud 組織内のリソースに対する curl リクエストを作成します。curl リクエストの例を次に示します。
# Get auth token $ TOKEN=$(gcloud auth print-access-token) # Make a request that includes the organization restriction header; this call makes a request to the logging API for a project within the same organization listed in the header $ curl -H "X-Goog-Allowed-Resources: ${OR_HEADER}" -X POST -d '{"projectIds": ["my-project-123"]}' -H 'Content-Type: application/json' -H "Authorization: Bearer ${TOKEN}" "https://logging.googleapis.com/v2/entries:list" # A successful request returns log entries in this project
ヘッダー構成で承認済みの Google Cloud 組織外のリソースへのアクセスが拒否されるかどうかをテストするには、承認済みの Google Cloud 組織外のリソースへの curl リクエストを作成します。curl リクエストの例を次に示します。
# Get auth token $ TOKEN=$(gcloud auth print-access-token) # Make a request that includes the organization restriction header; this call makes a request to the logging API for a project not within the same organization listed in the header $ curl -H "X-Goog-Allowed-Resources: ${OR_HEADER}" -X POST -d '{"projectIds": ["other-project-123"]}' -H 'Content-Type: application/json' -H "Authorization: Bearer ${TOKEN}" "https://logging.googleapis.com/v2/entries:list" { "error": { "code": 403, "message": "Access denied by organization restriction. Contact your administrator for additional information.", "status": "PERMISSION_DENIED", "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "reason": "ORG_RESTRICTION_VIOLATION", "domain": "googleapis.com", "metadata": { "service": "logging.googleapis.com", "consumer": "other-project-123" } } ] } }
アクセス拒否のエラー メッセージは、リソースへのリクエストが拒否されたことを示しています。
次のステップ
- 組織内アクセス制限の使用について学ぶ。
- 組織内アクセス制限でサポートされているサービスについて学ぶ。