Configuração do VPC Service Controls para BDC do SAP

Este documento explica como configurar regras de entrada e saída do VPC Service Controls (VPC SC) para o SAP Business Data Cloud (BDC).

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.

  1. 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.com
    
  2. Exporte 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.yaml
    

    Substitua:

    • ACCESS_POLICY: sua política de acesso.
    • PERIMETER: seu perímetro de serviço.

    Adicione esta regra a egress-policies.yaml para 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:
        - '*'
    
  3. Atualize o perímetro de serviço:

    gcloud access-context-manager perimeters update ${PERIMETER_NAME} \
        --set-egress-policies=egress-policies.yaml
    

    Verifique 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

  1. 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.com
    
  2. Exporte 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.yaml
    

    Substitua:

    • 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.
  3. Atualize o perímetro de serviço:

    gcloud access-context-manager perimeters update ${PERIMETER_NAME} \
        --set-ingress-policies=ingress-policies.yaml
    

    Verifique as políticas atualizadas:

    gcloud access-context-manager perimeters describe ${PERIMETER_NAME}
    

A seguir