BigQuery Omni の VPC Service Controls の設定

このドキュメントでは、VPC Service Controls の境界内から指定した外部クラウド リソースへのアクセスを制限する下り(外向き)ポリシーを設定する方法について説明します。

VPC Service Controls の境界を使用して、BigQuery Omni から外部クラウドへのアクセスを制限できます。VPC Service Controls によって、Identity and Access Management(IAM)から独立している Google Cloud サービスに対するセキュリティが強化されます。たとえば、VPC Service Controls の境界を設定すると、BigQuery Omni テーブルから特定の S3 バケットへのエクスポートを制限できます。

VPC Service Controls の詳細については、VPC Service Controls の概要をご覧ください。

準備

サービス境界の構成に必要な権限があることを確認します。VPC Service Controls の構成に必要な IAM ロールの一覧を表示するには、VPC Service Controls のドキュメントで IAM を使用したアクセス制御をご覧ください。

Cloud Console を使用して VPC Service Controls を設定する

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

    [VPC Service Controls] に移動

  2. BigQuery Omni の VPC Service Controls を設定するには、サービス境界の作成ガイドの手順と、下り(外向き)ルール ペインで次の操作を行います。

    1. [下り(外向き)ルール] パネルで、[ルールの追加] をクリックします。

    2. [API 属性から] セクションで、[ID] リストからオプションを選択します。

    3. [外部リソースの属性へ] を選択します。

    4. 外部リソースを追加するには、[Add external resources] をクリックします。

    5. [外部リソースの追加] ダイアログの [外部リソース名] に、有効なリソース名を入力します。例:

      • Amazon S3 の場合: s3://BUCKET_NAME

        BUCKET_NAME は、Amazon S3 バケットの名前に置き換えます。

      • Azure Storage の場合: azure://myaccount.blob.core.windows.net/CONTAINER_NAME

        CONTAINER NAME は、Azure Storage コンテナの名前に置き換えます。

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

    6. 外部リソースで許可するメソッドを選択します。

      1. すべてのメソッドを許可する場合は、[メソッド] リストで [すべてのメソッド] を選択します。
      2. 特定のメソッドを許可する場合は、[選択したメソッド] を選択し、[メソッドを選択] をクリックして、外部リソースを許可するメソッドを選択します。 。
    7. [境界を作成] をクリックします。

gcloud CLI を使用して VPC Service Controls を設定する

gcloud CLI を使用して VPC Service Controls を設定するには、次の手順に従います。

  1. デフォルトのアクセス ポリシーを設定します
  2. 下り(外向き)ポリシーの入力ファイルを作成します
  3. 下り(外向き)ポリシーを追加します

デフォルトのアクセス ポリシーを設定する

アクセス ポリシーは、アクセスレベルとサービス境界用の組織全体のコンテナです。デフォルトのアクセス ポリシーの設定、またはアクセス ポリシー名の取得については、アクセス ポリシーの管理をご覧ください。

下り(外向き)ポリシー入力ファイルを作成する

下り(外向き)ルールのブロックは、境界からその境界外のリソースへのアクセスを許可します。外部リソースの場合、externalResources プロパティは、VPC Service Controls の境界内からアクセスできる外部リソースパスを定義します。

下り(外向き)ルールは、JSON ファイルまたは YAML ファイルを使用して構成できます。次のサンプルでは、.yaml 形式を使用します。

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: "*"
      *OR*
      - permission: "externalResource.read"
    externalResources:
      - EXTERNAL_RESOURCE_PATH
  egressFrom:
    identityType: IDENTITY_TYPE
    *OR*
    identities:
    - serviceAccount:SERVICE_ACCOUNT
  • egressTo: 境界外の指定されたプロジェクトの Google Cloud リソースで許可されたサービス オペレーションを一覧表示する to ブロックを開始します。

  • operations: クライアントが from ブロック条件を満たすアクセス可能なサービスとアクションまたはメソッドのリスト。

  • serviceName: BigQuery Omni の場合は、bigquery.googleapis.com に設定します。

  • methodSelectors: from ブロック条件を満たすクライアントがアクセスできるメソッドのリスト。制限付きのメソッドとサービスの権限については、サポートされているサービス メソッドの制限をご覧ください。

  • method または permission: method フィールドは、有効なサービス メソッドにすることも、指定したサービスのすべてのメソッドへのアクセスを許可する \"*\" に設定することもできます。

    permission フィールドは、有効なサービス権限(\"*\"externalResource.readexternalResource.write など)にする必要があります。この権限を必要とするオペレーションで、境界外にある指定のリソースにアクセスできます。

  • externalResources: 境界内のクライアントがアクセスできる外部リソースのリスト。EXTERNAL_RESOURCE_PATH は、有効な AWS S3 バケット(s3://bucket_name など)または Azure ストレージ パス(azure://myaccount.blob.core.windows.net/container_name など)に置き換えます。

  • egressFrom: 境界内の指定プロジェクトの Google Cloud リソースで許可されたサービス オペレーションを一覧表示する from ブロックを開始します。

  • identityType または identities: identityType 属性は、境界外の指定されたリソースへのアクセスに使用できる ID のタイプを定義します。IDENTITY_TYPE は次のいずれかの有効な値に置き換えます。

    • ANY_IDENTITY: すべての ID を許可します。
    • ANY_USER_ACCOUNT: すべてのユーザーを許可します。
    • ANY_SERVICE_ACCOUNT: すべてのサービス アカウントを許可する

    identities 属性は、境界外の指定されたリソースにアクセスできるサービス アカウントのリストです。

  • serviceAccount(省略可): SERVICE_ACCOUNT を、境界外の指定されたリソースにアクセスできるサービス アカウントに置き換えます。

Examples

次の例は、境界内の AWS の s3://mybucket S3 ロケーションへの下り(外向き)オペレーションを許可するポリシーです。

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: "*"
    externalResources:
      - s3://mybucket
      - s3://mybucket2
  egressFrom:
    identityType: ANY_IDENTITY

次の例では、Azure ストレージ バケットへの下り(外向き)オペレーションを許可しています。

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: "*"
    externalResources:
      - azure://myaccount.blob.core.windows.net/mycontainer
  egressFrom:
    identityType: ANY_IDENTITY

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

下り(外向き)ポリシーを追加する

新しいサービス境界を作成するときに下り(外向き)ポリシーを追加するには、gcloud access-context-manager perimeters create コマンドを使用します。たとえば、次のコマンドは、新しい境界omniPerimeterプロジェクト番号を持つプロジェクトを含む12345BigQuery API を制限し、egress.yamlファイル:

gcloud access-context-manager perimeters create omniPerimeter \
    --title="Omni Perimeter" \
    --resources=projects/12345 \
    --restricted-services=bigquery.googleapis.com \
    --egress-policies=egress.yaml

既存のサービス境界に下り(外向き)ポリシーを追加するには、gcloud access-context-manager perimeters update コマンドを使用します。たとえば、次のコマンドは、egress.yaml ファイルで定義された下り(外向き)ポリシーを omniPerimeter という名前の既存のサービス境界に追加します。

gcloud access-context-manager perimeters update omniPerimeter
    --set-egress-policies=egress.yaml

境界を確認する

境界を確認するには、gcloud access-context-manager perimeters describe コマンドを使用します。

gcloud access-context-manager perimeters describe PERIMETER_NAME

PERIMETER_NAME は、境界の名前に置き換えます。

たとえば、次のコマンドは境界 omniPerimeter を記述します。

gcloud access-context-manager perimeters describe omniPerimeter

詳細については、サービス境界の管理をご覧ください。

次のステップ