Dependendo da sua integração, você precisa configurar regras para os seguintes fluxos de dados:
- Consulta de dados do SAP (SAP para BDC): para consultar tabelas do SAP no Google Cloud, configure uma regra de saída.
- Publicação de dados no SAP (BDC para SAP): para publicar dados no SAP, é necessário configurar uma regra de entrada.
Regras de saída para consultar o SAP
Você pode encontrar este erro ao consultar tabelas do SAP:
VPC Service Controls: Request is prohibited by organization's policy. File: gs://example-bucket/path/to/file
Isso acontece 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, você poderá receber um erro
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER porque o bucket externo está
fora do perímetro. Para resolver isso, 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 ambiente do SAP estiver implantado em 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 buckets do SAP Cloud Storage para consultas de tabelas.
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.
Seu perímetro restringe as leituras de bucket do Cloud Storage se a resposta incluir:
resources: - projects/PROJECT_ID ... restrictedServices: - storage.googleapis.comExporte as regras de saída atuais e adicione 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.
Adicione 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 Lakehouse para ler as tabelas do Lakehouse. As regras do VPC SC 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 restringir o serviço biglake.googleapis.com, configure uma regra de entrada para permitir que os principais federados do SAP acessem as APIs do Lakehouse.
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.
Seu perímetro de serviço pode restringir a API Lakehouse se a resposta contiver:
resources: - projects/PROJECT_ID ... restrictedServices: - biglake.googleapis.comExporte as regras de entrada atuais e adicione uma regra para permitir que os principais federados do SAP chamem as APIs do 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.
Adicione uma regra para o principal federado da 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 identidades 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}