Configuración de los Controles del servicio de VPC para SAP BDC

En este documento, se explica cómo configurar las reglas de entrada y salida de los Controles del servicio de VPC (VPC SC) para SAP Business Data Cloud (BDC).

Según tu integración, debes configurar reglas para los siguientes flujos de datos:

  • Consultar datos de SAP (SAP a BDC): Para consultar tablas de SAP desde Google Cloud, debes configurar una regla de salida.
  • Publicar datos en SAP (BDC a SAP): Para publicar datos en SAP, debes configurar una regla de entrada.

Reglas de salida para consultar SAP

Es posible que veas este error cuando consultes tablas de SAP:

VPC Service Controls: Request is prohibited by organization's policy. File: gs://example-bucket/path/to/file

Esto sucede porque BigQuery debe leer los buckets externos de Cloud Storage que alojan los datos de la tabla. Si tu perímetro restringe storage.googleapis.com, es posible que recibas un error RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER porque el bucket externo está fuera de tu perímetro. Para resolver este problema, configura una regla de salida. Para obtener más información, consulta Recursos que no están en el mismo perímetro.

Configura reglas de salida

Esta configuración se aplica si tu entorno de SAP se implementa en Google Cloud.

Si tu proyecto usa Controles del servicio de VPC y el perímetro restringe storage.googleapis.com, debes configurar una regla de salida para permitir que BigQuery lea los buckets de Cloud Storage de SAP para las consultas de tablas.

  1. Verifica el perímetro actual.

    PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER
    gcloud access-context-manager perimeters describe ${PERIMETER_NAME}
    

    Reemplaza lo siguiente:

    • ACCESS_POLICY: Tu política de acceso.
    • PERIMETER: Tu perímetro de servicio.

    Tu perímetro restringe las lecturas de bucket de Cloud Storage si la respuesta incluye lo siguiente:

    resources:
    - projects/PROJECT_ID
    ...
    restrictedServices:
    - storage.googleapis.com
    
  2. Exporta las reglas de salida actuales y agrega una regla para permitir las lecturas de bucket de 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
    

    Reemplaza lo siguiente:

    • ACCESS_POLICY: Tu política de acceso.
    • PERIMETER: Tu perímetro de servicio.

    Agrega esta regla a egress-policies.yaml para permitirte leer buckets de Cloud Storage fuera del 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. Actualiza el perímetro de servicio:

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

    Verifica las políticas de salida actualizadas:

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

Reglas de entrada para publicar datos en SAP

SAP necesita consultar la API de Lakehouse para leer las tablas de Lakehouse. Es posible que tus reglas de VPC SC bloqueen esto si el perímetro del proyecto restringe el servicio biglake.googleapis.com.

Si tu proyecto tiene habilitados los Controles del servicio de VPC y el perímetro aplicado en el proyecto restringe el servicio biglake.googleapis.com, debes configurar una regla de entrada para permitir que las entidades federadas de SAP accedan a las APIs de Lakehouse.

Configura reglas de entrada

  1. Verifica el perímetro actual.

    PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER
    gcloud access-context-manager perimeters describe ${PERIMETER_NAME}
    

    Reemplaza lo siguiente:

    • ACCESS_POLICY: Tu política de acceso.
    • PERIMETER: Tu perímetro de servicio.

    Tu perímetro de servicio puede restringir la API de Lakehouse si la respuesta contiene lo siguiente:

    resources:
    - projects/PROJECT_ID
    ...
    restrictedServices:
    - biglake.googleapis.com
    
  2. Exporta las reglas de entrada actuales y agrega una regla para permitir que las entidades federadas de SAP llamen a las APIs de 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
    

    Reemplaza lo siguiente:

    • ACCESS_POLICY: Tu política de acceso.
    • PERIMETER: Tu perímetro de servicio.

    Agrega una regla para la entidad federada de 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:
        - '*'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto que contiene el grupo de identidades para cargas de trabajo.
    • POOL_NAME: El nombre del grupo de identidades para cargas de trabajo.
    • SUBJECT: El UUID que emite la entidad emisora del lado de SAP para la carga de trabajo.
  3. Actualiza el perímetro de servicio:

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

    Verifica las políticas actualizadas:

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

¿Qué sigue?