統合に応じて、次のデータフローのルールを構成する必要があります。
- SAP データのクエリ(SAP から BDC): Google Cloudから SAP テーブルにクエリを実行するには、下り(外向き)ルール を構成する必要があります。
- SAP へのデータの公開(BDC から SAP): SAP にデータを公開するには、上り(内向き)ルール を構成する必要があります。
SAP にクエリを実行するための下り(外向き)ルール
SAP テーブルにクエリを実行すると、次のエラーが表示されることがあります。
VPC Service Controls: Request is prohibited by organization's policy. File: gs://example-bucket/path/to/file
これは、BigQuery がテーブルデータをホストする Cloud Storage 外部バケットを読み取る必要があるために発生します。境界で
storage.googleapis.com が制限されている場合、外部バケットが境界外にあるため、RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER
エラーが発生することがあります。この問題を解決するには、下り(外向き)ルールを構成します。
詳細については、同じ境界にない
リソースをご覧ください。
下り(外向き)ルールを構成する
この構成は、SAP 環境が Google Cloudにデプロイされている場合に適用されます。
プロジェクトで VPC Service Controls が使用され、境界で storage.googleapis.com
が制限されている場合は、テーブルクエリで BigQuery が SAP Cloud Storage
バケットを読み取れるように下り(外向き)ルールを構成する必要があります。
現在の境界を確認します。
PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER gcloud access-context-manager perimeters describe ${PERIMETER_NAME}次のように置き換えます。
ACCESS_POLICY: アクセス ポリシー。PERIMETER: サービス境界。
レスポンスに次のものが含まれている場合、境界は Cloud Storage バケットの読み取りを制限します。
resources: - projects/PROJECT_ID ... restrictedServices: - storage.googleapis.com現在の外向きルールをエクスポートし、Cloud Storage バケットの読み取りを許可するルールを追加します。
PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER gcloud access-context-manager perimeters describe ${PERIMETER_NAME} \ --format="yaml(status.egressPolicies)" | sed '1,2d; s/^ //' > egress-policies.yaml次のように置き換えます。
ACCESS_POLICY: アクセス ポリシー。PERIMETER: サービス境界。
境界外の Cloud Storage バケットを読み取れるように、このルールを
egress-policies.yamlに追加します。- egressFrom: identityType: ANY_IDENTITY egressTo: operations: - methodSelectors: - method: google.storage.buckets.get - method: google.storage.objects.get - method: google.storage.objects.list serviceName: storage.googleapis.com resources: - '*'サービス境界を更新します。
gcloud access-context-manager perimeters update ${PERIMETER_NAME} \ --set-egress-policies=egress-policies.yaml更新された下り(外向き)ポリシーを確認します。
gcloud access-context-manager perimeters describe ${PERIMETER_NAME}
SAP にデータを公開するための上り(内向き)ルール
SAP は、Lakehouse テーブルを読み取るために Lakehouse API にクエリを実行する必要があります。プロジェクトの境界で
biglake.googleapis.com サービスが制限されている場合、VPC SC ルールによってこの処理がブロックされる可能性があります。
プロジェクトに VPC Service Controls が適用され、プロジェクトに適用された境界で biglake.googleapis.com
サービスが制限されている場合は、SAP フェデレーション プリンシパルが Lakehouse API
にアクセスできるように上り(内向き)ルールを構成する必要があります。
上り(内向き)ルールを構成する
現在の境界を確認します。
PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER gcloud access-context-manager perimeters describe ${PERIMETER_NAME}次のように置き換えます。
ACCESS_POLICY: アクセス ポリシー。PERIMETER: サービス境界。
レスポンスに次のものが含まれている場合、サービス境界は Lakehouse API を制限できます。
resources: - projects/PROJECT_ID ... restrictedServices: - biglake.googleapis.com現在の外向きルールをエクスポートし、SAP フェデレーション プリンシパルが Lakehouse API を呼び出せるようにルールを追加します。
PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER gcloud access-context-manager perimeters describe ${PERIMETER_NAME} \ --format="yaml(status.ingressPolicies)" | sed '1,2d; s/^ //' > ingress-policies.yaml次のように置き換えます。
ACCESS_POLICY: アクセス ポリシー。PERIMETER: サービス境界。
SAP フェデレーション プリンシパルのルールを追加します。
- ingressFrom: identities: - principal://iam.googleapis.com/projects/PROJECT_ID/locations/global/workloadIdentityPools/POOL_NAME/subject/SUBJECT sources: - accessLevel: '*' ingressTo: operations: - methodSelectors: - method: '*' serviceName: biglake.googleapis.com resources: - '*'次のように置き換えます。
PROJECT_ID: Workload Identity プールを含むプロジェクトのプロジェクト ID。POOL_NAME: Workload Identity プールの名前。SUBJECT: ワークロードの SAP 側の発行者によって発行された UUID。
サービス境界を更新します。
gcloud access-context-manager perimeters update ${PERIMETER_NAME} \ --set-ingress-policies=ingress-policies.yaml更新されたポリシーを確認します。
gcloud access-context-manager perimeters describe ${PERIMETER_NAME}