このページでは、サービス境界の作成方法について説明します。
始める前に
サービス境界の構成について確認します。
サービス境界での VPC ネットワークの管理について確認します。
VPC Service Controls へのアクセスの許可について確認します。
境界を作成する際、保護されたサービスへの外部アクセスを構成する場合は、先にアクセスレベルを 1 つ以上作成してから境界を作成します。
サービス境界を作成する
このセクションでは、サービス境界を作成し、境界にプロジェクトまたは VPC ネットワークを追加して、サービスを保護する方法について説明します。
サービス境界を作成する際、必要に応じて、境界外から保護されたサービスへのアクセスを許可することや、境界内の他のサービスやユーザーにアクセス可能なサービスを指定できます。境界を作成した後に、これらの設定を構成することもできます。
サービス境界の作成後または既存のサービス境界の更新後、変更が反映されて有効になるまでに 30 分ほどかかる場合があります。この間、境界がエラー メッセージ Error 403: Request is prohibited by organization's policy.
を含むリクエストをブロックする場合があります。
Console
Google Cloud Console のナビゲーション メニューで [セキュリティ] をクリックし、続いて [VPC Service Controls] をクリックします。
プロンプトが表示されたら、組織、フォルダ、またはプロジェクトを選択します。
既存のアクセス ポリシーを選択するか、新しいアクセス ポリシーを作成します。アクセス ポリシーのスコープに、境界に追加するすべてのプロジェクトと VPC ネットワークが含まれていることを確認します。
[VPC Service Controls] ページで、境界モードを選択します。デフォルトでは、自動適用モードが選択されています。ドライランの境界を作成する場合は、[ドライラン モード] をクリックします。
自動適用の境界では、保護されたサービスへのアクセスが、実際に阻止されます。ドライランの境界では、サービスが保護されている場合と同様に、境界違反をログに記録しますが、それらのサービスへのアクセスは阻止されません。自動適用モードとドライラン モードの詳細については、サービス境界をご覧ください。
[新しい境界] をクリックします。
[新しい VPC サービス境界] ページの [境界名] ボックスに、境界の名前を入力します。
境界名の最大長は 50 文字で、先頭は英字にする必要があります。ASCII ラテン文字(a~z、A~Z)、数字(0~9)、アンダースコア(
_
)のみを使用できます。境界名では大文字と小文字が区別され、アクセス ポリシー内で一意である必要があります。境界内で保護するプロジェクトまたは VPC ネットワークを追加する手順は次のとおりです。
[リソースの追加] をクリックします。
境界にプロジェクトを追加するには、[リソースの追加] ペインで [プロジェクトを追加] をクリックします。
プロジェクトを選択するには、[プロジェクトを追加] ダイアログでプロジェクトのチェックボックスをオンにします。
[Add selected resources] をクリックします。追加されたプロジェクトが [プロジェクト] セクションに表示されます。
VPC ネットワークを境界に追加するには、[リソースの追加] ペインで、[VPC ネットワークを追加] をクリックします。
- プロジェクトのリストで、VPC ネットワークを含むプロジェクトをクリックします。
- VPC ネットワークを追加するには、[リソースの追加] ダイアログで、VPC ネットワークのチェックボックスをオンにします。
- [Add selected resources] をクリックします。追加したネットワークが [VPC ネットワーク] セクションに表示されます。
境界内で保護するサービスを選択するには、以下のようにします。
[制限付きサービス] をクリックします。
[制限付きサービス] ペインで [サービスを追加] をクリックします。
境界内のサービスを保護するには、[制限するサービスの指定] ダイアログで、そのサービスのチェックボックスをオンにします。
[n 個のサービスを追加] をクリックします。ここで、n は、前の手順で選択したサービスの数です。
省略可: 境界内にアクセスできるサービスを定義する場合は、以下のようにします。
[VPC のアクセス可能なサービス] をクリックします。
[VPC のアクセス可能なサービス] ペインで [選択したサービス] を選択します。
境界が保護するすべての制限付きサービスをアクセス可能なサービスのリストにすばやく追加するには、[すべての制限付きサービスを含める] を選択します。このオプションを使用すると、制限付きサービスに加えて、個別のサービスを含めることができます。
[VPC でアクセス可能なサービスを追加] をクリックします。
境界の作成後にアクセス可能なサービスを追加することもできます。
[アクセス可能なサービスを指定してください] ページで、境界内でアクセス可能にするサービスを選択します。
[n 個のサービスを追加] をクリックします。ここで、n は、前の手順で選択したサービスの数です。
省略可: アクセスレベルを使用して、境界の外部から保護されたリソースへのアクセスを許可するには、以下のようにします。
[アクセスレベル] をクリックします。
[上り(内向き)ポリシー: アクセスレベル] ペインで、[アクセスレベルを選択] ボックスをクリックします。
境界が作成された後にアクセスレベルを追加することもできます。
境界に適用するアクセスレベルのチェックボックスを選択します。
境界外の API クライアントから境界内のリソースへのアクセスを許可するには、以下のようにします。
[上り(内向き)ポリシー] をクリックします。
[上り(内向き)ルール] ペインで、[ルールの追加] をクリックします。
API クライアントの属性から、アクセスを必要とする境界外部のソースを指定します。ソースとしてプロジェクト、アクセスレベル、VPC ネットワークを指定できます。
[To attributes of Google Cloud resources/services] で、ソースがアクセスできる境界内のリソースを指定します。
上り(内向き)ルールの属性のリストについては、上り(内向き)ルールのリファレンスをご覧ください。
境界外のリソースに境界内の API クライアントまたはリソースに対するアクセスを許可するには、以下のようにします。
[下り(外向き)ポリシー] をクリックします。
[下り(外向き)ルール] ペインで、[ルールの追加] をクリックします。
API クライアントの From 属性と Google Cloud リソース / サービスの To 属性を指定します。
下り(外向き)ルールの属性の一覧については、下り(外向き)ルールのリファレンスをご覧ください。
[境界を作成] をクリックします。
gcloud
自動適用モードで新しい境界を作成するには、gcloud access-context-manager perimeters create
コマンドを使用します。
gcloud access-context-manager perimeters create NAME \ --title=TITLE \ --resources=RESOURCES \ --restricted-services=RESTRICTED-SERVICES \ --ingress-policies=INGRESS-FILENAME.yaml \ --egress-policies=EGRESS-FILENAME.yaml \ [--access-levels=LEVELS] \ [--enable-vpc-accessible-services] \ [--vpc-allowed-services=ACCESSIBLE-SERVICES] \ --policy=POLICY_NAME
ドライラン モードで新しい境界を作成するには、gcloud access-context-manager perimeters dry-run create
コマンドを使用します。
gcloud access-context-manager perimeters dry-run create NAME \ --perimeter-title=TITLE \ --perimeter-type=TYPE \ --perimeter-resources=RESOURCES \ --perimeter-restricted-services=RESTRICTED-SERVICES \ --perimeter-ingress-policies=INGRESS-FILENAME.yaml \ --perimeter-egress-policies=EGRESS-FILENAME.yaml \ [--perimeter-access-levels=LEVELS] \ [--perimeter-enable-vpc-accessible-services] \ [--perimeter-vpc-allowed-services=ACCESSIBLE-SERVICES] \ --policy=POLICY_NAME
以下を置き換えます。
NAME は、境界の名前です。
境界名の最大長は 50 文字で、先頭は英字にする必要があります。ASCII ラテン文字(a~z、A~Z)、数字(0~9)、アンダースコア(
_
)のみを使用できます。境界名では大文字と小文字が区別され、アクセス ポリシー内で一意である必要があります。TITLE は、人間が読める境界のタイトルです。
TYPE は、境界のタイプです。例: 標準境界、ブリッジ境界など。
RESOURCES は、1 つ以上のプロジェクト番号または VPC ネットワーク名のカンマ区切りリストです。たとえば、
projects/12345
や//compute.googleapis.com/projects/my-project/global/networks/vpc1
です。プロジェクトと VPC ネットワークのみを使用できます。プロジェクトの形式はprojects/project_number
です。VPC の形式は://compute.googleapis.com/projects/project-id/global/networks/network_name
です。プロジェクトを指定する場合は、プロジェクト番号のみがサポートされます。プロジェクト名やプロジェクト ID は、使用できません。RESTRICTED-SERVICES は、1 つ以上のサービスを含むカンマ区切りのリストです。たとえば、
storage.googleapis.com
や、storage.googleapis.com,bigquery.googleapis.com
です。INGRESS-FILENAME は、ソース、ID、サービス、プロジェクトの各属性の値を含む JSON または YAML ファイルです。上り(内向き)ルールの属性のリストについては、上り(内向き)ルールのリファレンスをご覧ください。
EGRESS-FILENAME は、ID、プロジェクト、サービスの各属性の値を含む JSON または YAML ファイルです。下り(外向き)ルールの属性の一覧については、下り(外向き)ルールのリファレンスをご覧ください。
POLICY_NAME は組織のアクセス ポリシーの名前です。例:
330193482019
デフォルトのアクセス ポリシーを設定していない場合に限り、ポリシー名を含める必要があります。
その他のオプション
--access-levels
または--perimeter-access-levels
は、境界の作成時にアクセスレベルを追加する場合にのみ必要です。LEVELS は、サービス境界に適用する 1 つ以上のアクセスレベルのカンマ区切りリストです。アクセスレベルは、境界の作成後に追加することもできます。
--enable-vpc-accessible-services
と--vpc-allowed-services
、または--perimeter-enable-vpc-accessible-services
と--perimeter-vpc-allowed-services
は、境界の作成時に VPC のアクセス可能なサービスを追加する場合にのみ必要です。ACCESSIBLE-SERVICES は、境界内にある 1 つ以上のサービスのカンマ区切りのリストで、ネットワークにアクセスを許可します。このリストにないサービスにはアクセスできません。サービスにアクセスできるようにするには、境界の構成時にサービスを保護する必要があります。
境界で保護されているすべてのサービスを簡単に含めるには、ACCESSIBLE-SERVICES のリストに
RESTRICTED-SERVICES
を指定します。例:--perimeter-vpc-allowed-services=RESTRICTED-SERVICES
VPC のアクセス可能なサービスは、境界を作成した後に定義することもできます。
たとえば、次のコマンドでは、プロジェクト example-project
と example-project2
を含む ProdPerimeter
という名前の新しいドライラン モードの境界を作成し、Cloud Storage API と BigQuery API を制限します。
gcloud access-context-manager perimeters \ dry-run create ProdPerimeter --perimeter-title="Production Perimeter" \ --perimeter-type="regular" \ --perimeter-resources=projects/12345,projects/67890 \ --perimeter-restricted-services=storage.googleapis.com,bigquery.googleapis.com \ --perimeter-ingress-policies=ingress.yaml \ --perimeter-egress-policies=egress.yaml \ --policy=330193482019
API
サービス境界を作成するには、accessPolicies.servicePerimeters.create
を呼び出します。
POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/servicePerimeters
ここで
- POLICY_NAME は組織のアクセス ポリシーの名前です。例:
330193482019
リクエストの本文
リクエストの本文には、サービス境界を定義する ServicePerimeter
リソースを含める必要があります。
ServicePerimeter
リソースでは、perimeterType
に PERIMETER_TYPE_REGULAR
を指定します。
ドライラン モード
指定された境界は、spec
と useExplicitDryRunSpec
を true に設定して含める必要があります。
レスポンスの本文
成功した場合は、呼び出しのレスポンス本文に Operation
リソースが含まれ、これにより POST
オペレーションの詳細がわかります。
次のステップ
- ドライラン モードでサービス境界への影響をテストする方法を確認する。
- 既存のサービス境界を管理する方法を確認する。
- VPC Service Controls の一般的な問題のトラブルシューティング方法を確認する。
- このcodelab を完了して、VPC Service Controls を使用してプロジェクトとそのサービスを保護する方法を確認する。