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

O VPC Service Controls (VPC SC) ajuda a proteger as trocas de dados entre o Google Cloud e o SAP Business Data Cloud (BDC). Dependendo da direção da integração, é possível configurar regras de saída para consultar tabelas SAP do Google Cloud ou regras de entrada para publicar dados no SAP BDC.

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.

  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.

    O perímetro restringe as leituras do 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 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.yaml
    

    Substitua:

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

    Anexe 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 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

  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.

    O perímetro de serviço pode restringir a API BigLake se a resposta contiver:

    resources:
    - projects/PROJECT_ID
    ...
    restrictedServices:
    - biglake.googleapis.com
    
  2. Exportar 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.yaml
    

    Substitua:

    • 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.
  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