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.
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.comExporta 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.yamlReemplaza lo siguiente:
ACCESS_POLICY: Tu política de acceso.PERIMETER: Tu perímetro de servicio.
Agrega esta regla a
egress-policies.yamlpara 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: - '*'Actualiza el perímetro de servicio:
gcloud access-context-manager perimeters update ${PERIMETER_NAME} \ --set-egress-policies=egress-policies.yamlVerifica 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
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.comExporta 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.yamlReemplaza 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.
Actualiza el perímetro de servicio:
gcloud access-context-manager perimeters update ${PERIMETER_NAME} \ --set-ingress-policies=ingress-policies.yamlVerifica las políticas actualizadas:
gcloud access-context-manager perimeters describe ${PERIMETER_NAME}