このページでは、下り(外向き)プロキシ構成の前提条件、組織 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
組織内アクセス制限違反が原因で発生するエラー メッセージについては、エラー メッセージをご覧ください。
次のステップ
- 組織内アクセス制限の使用について学ぶ。