このページでは、下り(外向き)プロキシ構成の前提条件、組織 ID の取得方法、組織内アクセス制限ヘッダーの追加方法、ターゲット URL のリストを使用したプロキシの構成方法について説明します。
Google Cloud を管理する Google Cloud 管理者と、下り(外向き)プロキシを構成する下り(外向き)プロキシ管理者は、連携して組織内アクセス制限を構成する必要があります。 組織内アクセス制限で検証されたパートナー ソリューションについては、検証済みのパートナー ソリューションをご覧ください。
始める前に
下り(外向き)プロキシ管理者は、下り(外向き)プロキシが組織内アクセス制限ヘッダーを追加するように構成する前に、次の前提条件を満たしている必要があります。
組織で Google Cloud 管理者ロールと下り(外向き)プロキシ管理者ロールが異なる場合は、Google Cloud 管理者が下り(外向き)プロキシ管理者と連携して下り(外向き)プロキシを構成するようにしてください。
組織のすべてのユーザーからのアウトバンド トラフィックが下り(外向き)プロキシを通過するように、組織のファイアウォール ルールを構成するか、マネージド デバイスを構成します。
組織の下り(外向き)プロキシに次の機能があることを確認します。
- ヘッダーの挿入。下り(外向き)プロキシを通過するアウトバンド リクエストに、カスタム HTTP ヘッダーを挿入します。
- TLS インスペクション。下り(外向き)プロキシへのトラフィックが暗号化されている場合、下り(外向き)プロキシはパケットを復号し、ヘッダーを挿入して、パケットをターゲットに送信する前に再暗号化する必要があります。
ヘッダーをフィルタして挿入。省略可。次のフィルタを 1 つ以上サポートし、フィルタ条件と一致するリクエストにのみヘッダーを追加します。
- ターゲット URL。下り(外向き)プロキシが照合できるターゲット URL のリスト。
- デバイス ID。下り(外向き)プロキシが照合するデバイス ID のリスト。デバイス ID は、下り(外向き)プロキシに伝播される必要があります。
- ユーザー ID。下り(外向き)プロキシが照合するユーザー ID のリスト。ユーザー ID は、下り(外向き)プロキシに伝播される必要があります。
組織 ID を取得する
Google Cloud 管理者は、組織内アクセス制限ヘッダーに追加できるように Google Cloud 組織 ID を取得する必要があります。
組織リソース ID を調べるには、次のコマンドを実行します。
gcloud organizations list
このコマンドによって、所属するすべての組織リソースと、対応する組織リソース ID を一覧表示します。
組織 ID を取得したら、組織内アクセス制限ヘッダーを追加するか、下り(外向き)プロキシ管理者と連携してヘッダーを追加します。
組織内アクセス制限ヘッダーを追加する
下り(外向き)プロキシ管理者がアウトバンド リクエストに組織内アクセス制限ヘッダーを追加するには、次の手順を行います。
- ヘッダーを作成します。
- ヘッダーをエンコードします。
- 下り(外向き)プロキシを構成します。
ヘッダーを作成する
ヘッダーの JSON 表現を、次の形式で作成します。
X-Goog-Allowed-Resources: HEADER_VALUE
HEADER_VALUE
には、承認済み Google Cloud 組織 ID のカンマ区切りリストが含まれます。この値は、ウェブセーフな base64 エンコードでエンコードする必要があります。
HEADER_VALUE
の JSON 構造は次のとおりです。
{
"resources": [string,..],
"options": string
}
resources
。文字列のリスト。このリスト内の各文字列は、Google Cloud 組織 ID を参照する必要があります。このリストの組織 ID は、評価時に承認済み組織とみなされます。options
。次のいずれかの値を含む文字列。"strict"
。すべてのリクエスト タイプに組織内アクセス制限ヘッダーをサポートされている Google Cloud サービスに適用します。"cloudStorageReadAllowed"
。Cloud Storage への読み取りリクエストは許可されますが、サポートされている Google Cloud サービスに対するすべてのリクエスト タイプに組織内アクセス制限ヘッダーが適用されます。 このオプションを使用すると、Cloud Storage の次の読み取りオペレーションにアクセスできます。storage.objects.get
storage.objects.list
storage.objects.getIamPolicy
storage.buckets.get
storage.buckets.list
storage.buckets.getIamPolicy
このオプションを説明するために、Alex が Example Organization の管理者で、Lee がこの組織の従業員である例を考えてみましょう。一般公開の Cloud Storage バケットに静的コンテンツを保存し、Example Organization の外部に存在する altostrat.com などのウェブサイトを考えてみましょう。Alex がstrict
オプションを使用して Lee のアクセスを Example Organization のみに制限する場合、Lee は、altostrat.com が所有する一般公開の Cloud Storage バケットに存在する altostrat.com の静的コンテンツへのアクセスを拒否されます。この動作はLee がウェブサイトを効果的にブラウジングする能力に影響し、そして静的コンテンツの保存に一般公開の Cloud Storage を使用するウェブサイトでも、同じ動作が発生します。Lee が altostrat.com の静的コンテンツを表示できるようにして、他のすべての Google Cloud アクセスを Example Organization のみに制限するには、Alex はcloudStorageReadAllowed
オプションを使用します。
有効な組織内アクセス制限ヘッダーの例を次に示します。
{
"resources": ["organizations/1234", "organizations/3456"],
"options": "strict"
}
ヘッダーをエンコードする
ウェブセーフな base64 形式で組織 ID をエンコードします。エンコードは、RFC 4648 セクション 5 の仕様に従う必要があります。
たとえば、ヘッダー値の JSON 表現が authorized_orgs.json
ファイルに保存されている場合、ファイルをエンコードするには、次の basenc コマンドを実行します。
$ cat authorized_orgs.json | basenc --base64url -w0
ewogInJlc291cmNlcyI6IFsib3JnYW5pemF0aW9ucy8xMjM0NTY3ODkiLCAib3JnYW5pemF0aW9ucy8xMDExMTIxMzE0Il0sCiAib3B0aW9ucyI6ICJzdHJpY3QiCn0K
組織 ID をエンコードした後のヘッダーの例を示します。
// Encoded representation
X-Goog-Allowed-Resources: ewogInJlc291cmNlcyI6IFsib3JnYW5pemF0aW9ucy8xMjM0NTY3ODkiLCAib3JnYW5pemF0aW9ucy8xMDExMTIxMzE0Il0sCiAib3B0aW9ucyI6ICJzdHJpY3QiCn0K
// Plain-text representation (As HTTP disallows some characters, encode the organization ID)
// Plain-text representation is included here only for readability
X-Goog-Allowed-Resources: {"resources": ["organizations/1234", "organizations/3456"], "options": "strict"}
下り(外向き)プロキシを構成する
管理対象デバイスから送信されたリクエストにヘッダーを挿入するために、下り(外向き)プロキシを構成します。
組織の Google Cloud ユーザーが HTTP ヘッダーを明示的に指定した場合、下り(外向き)プロキシが Google Cloud 管理者によって指定された値で、そのユーザー指定の値をオーバーライドします。
このヘッダーを Google Cloud 以外のターゲットに追加しないようにするには、次のターゲットのみのリクエストに対して組織内アクセス制限ヘッダーを追加するように下り(外向き)プロキシを構成します。
*.google.com
*.googleapis.com
*.gcr.io
*.pkg.dev
*.cloudfunctions.net
*.run.app
*.tunnel.cloudproxy.app
*.datafusion.googleusercontent.com
組織内アクセス制限違反が原因で発生するエラー メッセージについては、エラー メッセージをご覧ください。
次のステップ
- 組織内アクセス制限の使用について学ぶ。