サービス境界を作成する

このページでは、サービス境界の作成方法について説明します。

始める前に

サービス境界を作成する

このセクションでは、サービス境界を作成し、境界にプロジェクトまたは VPC ネットワークを追加して、サービスを保護する方法について説明します。

サービス境界を作成する際、必要に応じて、境界外から保護されたサービスへのアクセスを許可することや、境界内の他のサービスやユーザーにアクセス可能なサービスを指定できます。境界を作成した後に、これらの設定を構成することもできます。

サービス境界の作成後または既存のサービス境界の更新後、変更が反映されて有効になるまでに 30 分ほどかかる場合があります。この間、境界がエラー メッセージ Error 403: Request is prohibited by organization's policy. を含むリクエストをブロックする場合があります。

コンソール

  1. Google Cloud Console のナビゲーション メニューで [セキュリティ] をクリックし、続いて [VPC Service Controls] をクリックします。

    [VPC Service Controls] に移動

  2. プロンプトが表示されたら、組織、フォルダ、またはプロジェクトを選択します。

  3. [VPC Service Controls] ページで、境界モードを選択します。デフォルトでは、自動適用モードが選択されています。ドライランの境界を作成する場合は、[ドライラン モード] をクリックします。

    自動適用の境界では、保護されたサービスへのアクセスが、実際に阻止されます。ドライランの境界では、サービスが保護されている場合と同様に、境界違反をログに記録しますが、それらのサービスへのアクセスは阻止されません。自動適用モードとドライラン モードの詳細については、サービス境界をご覧ください。

  4. [新しい境界] をクリックします。

  5. [新しい VPC サービス境界] ページの [境界名] ボックスに、境界の名前を入力します。

    境界名の最大長は 50 文字で、先頭は英字にする必要があります。ASCII ラテン文字(a~z、A~Z)、数字(0~9)、アンダースコア(_)のみを使用できます。境界名では大文字と小文字が区別され、アクセス ポリシー内で一意である必要があります。

  6. 境界内で保護するプロジェクトまたは VPC ネットワークを追加する手順は次のとおりです。

    1. [リソースの追加] をクリックします。

    2. 境界にプロジェクトを追加するには、[リソースの追加] ペインで [プロジェクトを追加] をクリックします。

      1. プロジェクトを選択するには、[プロジェクトを追加] ダイアログでプロジェクトのチェックボックスをオンにします。

      2. [Add selected resources] をクリックします。追加されたプロジェクトが [プロジェクト] セクションに表示されます。

    3. VPC ネットワークを境界に追加するには、[リソースの追加] ペインで、[VPC ネットワークを追加] をクリックします。

      1. プロジェクトのリストで、VPC ネットワークを含むプロジェクトをクリックします。
      2. VPC ネットワークを追加するには、[リソースの追加] ダイアログで、VPC ネットワークのチェックボックスをオンにします。
      3. [Add selected resources] をクリックします。追加したネットワークが [VPC ネットワーク] セクションに表示されます。
  7. 境界内で保護するサービスを選択するには、以下のようにします。

    1. [制限付きサービス] をクリックします。

    2. [制限付きサービス] ペインで [サービスを追加] をクリックします。

    3. 境界内のサービスを保護するには、[制限するサービスの指定] ダイアログで、そのサービスのチェックボックスをオンにします。

    4. [n 個のサービスを追加] をクリックします。ここで、n は、前の手順で選択したサービスの数です。

  8. 省略可: 境界内にアクセスできるサービスを定義する場合は、以下のようにします。

    1. [VPC のアクセス可能なサービス] をクリックします。

    2. [VPC のアクセス可能なサービス] ペインで [選択したサービス] を選択します。

      境界が保護するすべての制限付きサービスをアクセス可能なサービスのリストにすばやく追加するには、[すべての制限付きサービスを含める] を選択します。このオプションを使用すると、制限付きサービスに加えて、個別のサービスを含めることができます。

    3. [VPC でアクセス可能なサービスを追加] をクリックします。

      境界の作成後にアクセス可能なサービスを追加することもできます。

    4. [アクセス可能なサービスを指定してください] ページで、境界内でアクセス可能にするサービスを選択します。

    5. [n 個のサービスを追加] をクリックします。ここで、n は、前の手順で選択したサービスの数です。

  9. 省略可: アクセスレベルを使用して、境界の外部から保護されたリソースへのアクセスを許可するには、以下のようにします。

    1. [アクセスレベル] をクリックします。

    2. [上り(内向き)ポリシー: アクセスレベル] ペインで、[アクセスレベルを選択] ボックスをクリックします。

      境界が作成された後にアクセスレベルを追加することもできます。

    3. 境界に適用するアクセスレベルのチェックボックスを選択します。

  10. 境界外の API クライアントから境界内のリソースへのアクセスを許可するには、以下のようにします。

    1. [上り(内向き)ポリシー] をクリックします。

    2. [上り(内向き)ルール] ペインで、[ルールの追加] をクリックします。

    3. API クライアントの属性から、アクセスを必要とする境界外部のソースを指定します。ソースとしてプロジェクト、アクセスレベル、VPC ネットワークを指定できます。

    4. [To attributes of Google Cloud resources/services] で、ソースがアクセスできる境界内のリソースを指定します。

      上り(内向き)ルールの属性のリストについては、上り(内向き)ルールのリファレンスをご覧ください。

  11. 境界外のリソースに境界内の API クライアントまたはリソースに対するアクセスを許可するには、以下のようにします。

    1. [下り(外向き)ポリシー] をクリックします。

    2. [下り(外向き)ルール] ペインで、[ルールの追加] をクリックします。

    3. API クライアントの From 属性Google Cloud リソース / サービスの To 属性を指定します。

      下り(外向き)ルールの属性の一覧については、下り(外向き)ルールのリファレンスをご覧ください。

  12. [境界を作成] をクリックします。

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-projectexample-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 リソースでは、perimeterTypePERIMETER_TYPE_REGULAR を指定します。

ドライラン モード

指定された境界は、specuseExplicitDryRunSpec を true に設定して含める必要があります。

レスポンスの本文

成功した場合は、呼び出しのレスポンス本文に Operation リソースが含まれ、これにより POST オペレーションの詳細がわかります。

次のステップ