Integration Connectors の VPC Service Controls の設定
VPC Service Controls では、Integration Connectors の Google Cloud サービスの周囲にセキュリティ境界を定義できます。サービスのセキュリティ境界を使用すると、VPC Service Controls の境界内でデータを制限し、データ漏洩のリスクを軽減できます。VPC Service Controls に慣れていない場合は、次の情報を確認することをおすすめします。
このドキュメントでは、VPC Service Controls の境界を使用して、Integration Connectors サービス(connectors.googleapis.com
)へのアクセスを制限する方法について説明します。境界を設定したら、他の Google Cloud サービスまたはユーザーが connectors.googleapis.com
サービスにアクセスできるかどうかを決定するポリシーを構成できます。
考慮事項
- 接続が Google Cloud リソースに接続する場合、そのリソースは VPC Service Controls の境界内からアクセスできる必要があります。
- パブリック エンドポイントへの既存の接続がある場合は、VPC Service Controls の境界を設定する前に、この接続が、バックエンド システムへの接続に PSC(Private Service Connect)アタッチメントを使用していることを確認します。PSC アタッチメントを使用しない場合、VPC Service Controls の境界を設定した後、パブリック エンドポイントへの既存の接続に失敗します。
- 接続が Google Cloud 以外のリソースに接続する場合、接続の宛先は PSC アタッチメントである必要があります。PSC 接続がない接続は失敗します。
- Google Cloud プロジェクトに VPC Service Controls の境界を設定している場合、プロジェクトでイベント サブスクリプション機能を使用することはできません。
準備
VPC Service Controls の境界の構成に必要な権限があることを確認します。VPC Service Controls の構成に必要な IAM ロールの一覧を表示するには、VPC Service Controls のドキュメントの IAM を使用したアクセス制御をご覧ください。VPC Service Controls の境界を作成する
VPC Service Controls 境界を作成するには、Google Cloud console
、gcloud
コマンド、または accessPolicies.servicePerimeters.create API のいずれかを使用します。詳細については、サービス境界を作成するをご覧ください。
次の手順は、gcloud
コマンドを使用して、ユーザー アクセスが有効な VPC Service Controls の境界を作成する方法を示しています。
- 境界へのアクセスを許可するユーザーの詳細を含む
access.yaml
ファイルを作成します。次に例を示します。- members: - user:USER_EMAIL
- 組織のアクセス ポリシー ID を取得するには、次のコマンドを使用します。
- ユーザーのアクセスレベルを作成します。
gcloud access-context-manager levels create ACCESS_LEVEL_NAME \ --title "CUSTOM_TITLE" \ --basic-level-spec access.yaml \ --policy=POLICY_ID
このコマンドの POLICY_ID は、前のステップで取得した値です。
- Google Cloud プロジェクトのグローバル設定で、
vpcsc
属性の値をtrue
に設定します。curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{"vpcsc": true}' \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/settings
このコマンドは、オペレーション ID を返し、長時間実行オペレーション(LRO)を開始します。完了するまでに時間がかかることがあります。LRO が完了するまで待ちます。次のコマンドを使用して、オペレーションの進行状況を追跡できます。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/operations/OPERATION_ID
- VPC Service Controls の境界を作成し、ユーザーにアクセス権を付与します。
gcloud access-context-manager perimeters create PERIMETER_NAME \ --title="PERIMETER_TITLE" \ --resources=projects/PROJECT_ID \ --restricted-services=connectors.googleapis.com \ --access_levels=ACCESS_LEVEL_NAME
このコマンドが完了するまでに時間がかかります。その間、新しいターミナルで他のタスクを実行できます。
アクセスレベルを更新して、既存の境界にconnectors.googleapis.com
サービスを追加する場合は、次のコマンドを実行します。gcloud access-context-manager perimeters update PERIMETER_NAME \ --add-restricted-services="connectors.googleapis.com" \ --add-access-levels=ACCESS_LEVEL_NAME \ --policy=POLICY_ID
gcloud access-context-manager policies list --organization=ORGANIZATION_ID
このコマンドは、組織のすべてのポリシーを一覧表示します。リストから、VPC Service Controls の境界を作成するポリシーを選択します。
Google Cloud コンソールを使用して、組織のリソース ID を表示できます。詳細については、組織リソース ID の取得をご覧ください。
境界を確認する
境界を確認するには、gcloud access-context-manager perimeters describe PERIMETER_NAME コマンドを使用します。次に例を示します。
gcloud access-context-manager perimeters describe PERIMETER_NAME
詳細については、サービス境界の管理をご覧ください。
VPC Service Controls の境界からプロジェクトを削除する
VPC Service Controls の境界から Google Cloud プロジェクトを削除するには、次の手順を行います。
- Google Cloud プロジェクトのグローバル設定で、
vpcsc
属性の値をfalse
に設定します。curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{"vpcsc": false}' \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/settings
このコマンドは、オペレーション ID を返し、長時間実行オペレーション(LRO)を開始します。完了するまでに時間がかかることがあります。LRO が完了するまで待ちます。次のコマンドを使用して、オペレーションの進行状況を追跡できます。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/operations/OPERATION_ID
- VPC Service Controls の境界からプロジェクトを削除します。
gcloud access-context-manager perimeters update accessPolicies/POLICY_ID/servicePerimeters/PERIMETER_NAME