Regras de saída para consultar o SAP
Este erro pode aparecer ao consultar tabelas do SAP:
VPC Service Controls: Request is prohibited by organization's policy. File: gs://example-bucket/path/to/file
Isso ocorre porque o BigQuery precisa ler os buckets externos do Cloud Storage que hospedam os dados da tabela. Se o perímetro restringir
storage.googleapis.com, talvez você receba um erro
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER porque o bucket externo está
fora do perímetro. Para resolver esse problema, configure uma regra de saída.
Para mais informações, consulte Recursos que não estão no mesmo
perímetro.
Configurar regras de saída
Essa configuração se aplica se o cenário do SAP estiver implantado no Google Cloud.
Se o projeto usar o VPC Service Controls e o perímetro restringir
storage.googleapis.com, configure uma regra de saída para permitir que o
BigQuery leia os buckets do Cloud Storage do SAP para consultas de tabela.
Verifique o perímetro atual.
PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER gcloud access-context-manager perimeters describe ${PERIMETER_NAME}Substitua:
ACCESS_POLICY: sua política de acesso.PERIMETER: seu perímetro de serviço.
O perímetro restringe as leituras do bucket do Cloud Storage se a resposta incluir:
resources: - projects/PROJECT_ID ... restrictedServices: - storage.googleapis.comExporte as regras de saída atuais e anexe uma regra para permitir leituras de bucket do 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.yamlSubstitua:
ACCESS_POLICY: sua política de acesso.PERIMETER: seu perímetro de serviço.
Anexe esta regra a
egress-policies.yamlpara permitir a leitura de buckets do Cloud Storage fora do perímetro:- 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: - '*'Atualize o perímetro de serviço:
gcloud access-context-manager perimeters update ${PERIMETER_NAME} \ --set-egress-policies=egress-policies.yamlVerifique as políticas de saída atualizadas:
gcloud access-context-manager perimeters describe ${PERIMETER_NAME}
Regras de entrada para publicar dados no SAP
O SAP precisa consultar a API BigLake para ler
as tabelas do Apache Iceberg gerenciadas pelo Lakehouse. As regras do VPC Service Controls podem
bloquear isso se o perímetro do projeto restringir o serviço
biglake.googleapis.com.
Se o projeto tiver o VPC Service Controls aplicado e o perímetro aplicado ao
projeto restringir o serviço biglake.googleapis.com, configure
uma regra de entrada para permitir que os principais federados do SAP acessem a
API BigLake.
Configurar regras de entrada
Verifique o perímetro atual.
PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER gcloud access-context-manager perimeters describe ${PERIMETER_NAME}Substitua:
ACCESS_POLICY: sua política de acesso.PERIMETER: seu perímetro de serviço.
O perímetro de serviço pode restringir a API BigLake se a resposta contiver:
resources: - projects/PROJECT_ID ... restrictedServices: - biglake.googleapis.comExportar as regras de entrada atuais e adicionar uma regra para permitir que os principais federados do SAP chamem as APIs Lakehouse.
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.yamlSubstitua:
ACCESS_POLICY: sua política de acesso.PERIMETER: seu perímetro de serviço.
Anexe uma regra para o principal federado do 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: - '*'Substitua:
PROJECT_ID: o ID do projeto que contém o pool de Identidade da carga de trabalho.POOL_NAME: o nome do pool de identidade da carga de trabalho.SUBJECT: o UUID emitido pelo emissor do lado da SAP para a carga de trabalho.
Atualize o perímetro de serviço:
gcloud access-context-manager perimeters update ${PERIMETER_NAME} \ --set-ingress-policies=ingress-policies.yamlVerifique as políticas atualizadas:
gcloud access-context-manager perimeters describe ${PERIMETER_NAME}