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
)へのアクセスを制限する方法について説明します。境界を設定したら、connectors.googleapis.com
サービスにアクセスできる他の Google Cloud サービスまたはユーザーを決定するポリシーを構成できます。
考慮事項
- 接続が 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 は完了するまでに時間がかかることがあります。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 の境界を作成するポリシーを選択します。
組織のリソース ID は、Google Cloud コンソールを使用して確認できます。詳細については、組織リソース 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 は完了するまでに時間がかかることがあります。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