Dependendo da integração, é necessário configurar regras para os seguintes fluxos de dados:
- Consultar dados do SAP (SAP para BDC): para consultar tabelas do SAP no Google Cloud, configure uma regra de saída.
- Publicar dados no SAP (BDC para SAP) : para publicar dados no SAP, configure uma regra de entrada.
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 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 não no mesmo
perímetro.
Configurar regras de saída
Essa configuração será aplicada se o cenário do SAP for 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 buckets do SAP Cloud Storage 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 de 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 essa 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 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 aplicado no projeto restringir o serviço biglake.googleapis.com, configure uma regra de entrada para permitir que os principais federados do SAP acessem as APIs 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.
O 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 anexe 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 do 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}