Selon votre intégration, vous devez configurer des règles pour les flux de données suivants :
- Interroger des données SAP (SAP vers BDC) : pour interroger des tables SAP à partir de Google Cloud, vous devez configurer une règle de sortie.
- Publier des données dans SAP (BDC vers SAP) : pour publier des données dans SAP, vous devez configurer une règle d'entrée.
Règles de sortie pour interroger SAP
L'erreur suivante peut s'afficher lorsque vous interrogez des tables SAP :
VPC Service Controls: Request is prohibited by organization's policy. File: gs://example-bucket/path/to/file
Cela se produit, car BigQuery doit lire les buckets externes Cloud Storage qui hébergent les données de la table. Si votre périmètre limite storage.googleapis.com, vous pouvez recevoir une erreur RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER, car le bucket externe se trouve en dehors de votre périmètre. Pour résoudre ce problème, configurez une règle de sortie.
Pour en savoir plus, consultez Ressources ne se trouvant pas dans le même
périmètre.
Configurer des règles de sortie
Cette configuration s'applique si votre environnement SAP est déployé sur Google Cloud.
Si votre projet utilise VPC Service Controls et que le périmètre limite storage.googleapis.com, vous devez configurer une règle de sortie pour autoriser BigQuery à lire les buckets SAP Cloud Storage pour les requêtes de table.
Vérifiez le périmètre actuel.
PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER gcloud access-context-manager perimeters describe ${PERIMETER_NAME}Remplacez les éléments suivants :
ACCESS_POLICY: votre règle d'accès.PERIMETER: votre périmètre de service.
Votre périmètre limite les lectures de bucket Cloud Storage si la réponse inclut les éléments suivants :
resources: - projects/PROJECT_ID ... restrictedServices: - storage.googleapis.comExportez les règles de sortie actuelles et ajoutez une règle pour autoriser les lectures de buckets 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.yamlRemplacez les éléments suivants :
ACCESS_POLICY: votre règle d'accès.PERIMETER: votre périmètre de service.
Ajoutez cette règle à
egress-policies.yamlpour pouvoir lire les buckets Cloud Storage en dehors du périmètre :- 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: - '*'Mettez à jour le périmètre de service :
gcloud access-context-manager perimeters update ${PERIMETER_NAME} \ --set-egress-policies=egress-policies.yamlVérifiez les règles de sortie mises à jour :
gcloud access-context-manager perimeters describe ${PERIMETER_NAME}
Règles d'Ingress pour publier des données dans SAP
SAP doit interroger l'API Lakehouse pour lire les tables Lakehouse. Vos règles VPC SC peuvent bloquer cette opération si le périmètre du projet limite le service biglake.googleapis.com.
Si VPC Service Controls est appliqué à votre projet et que le périmètre appliqué au projet limite le service biglake.googleapis.com, vous devez configurer une règle d'entrée pour autoriser les principaux fédérés SAP à accéder aux API Lakehouse.
Configurer des règles d'entrée
Vérifiez le périmètre actuel.
PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER gcloud access-context-manager perimeters describe ${PERIMETER_NAME}Remplacez les éléments suivants :
ACCESS_POLICY: votre règle d'accès.PERIMETER: votre périmètre de service.
Votre périmètre de service peut limiter l'API Lakehouse si la réponse contient les éléments suivants :
resources: - projects/PROJECT_ID ... restrictedServices: - biglake.googleapis.comExportez les règles d'entrée actuelles et ajoutez une règle pour autoriser les principaux fédérés SAP à appeler les API 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.yamlRemplacez les éléments suivants :
ACCESS_POLICY: votre règle d'accès.PERIMETER: votre périmètre de service.
Ajoutez une règle pour le principal fédéré 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: - '*'Remplacez les éléments suivants :
PROJECT_ID: ID du projet contenant le pool d'identités de charge de travail.POOL_NAME: nom du pool d'identités de charge de travail.SUBJECT: UUID émis par l'émetteur côté SAP pour la charge de travail.
Mettez à jour le périmètre de service :
gcloud access-context-manager perimeters update ${PERIMETER_NAME} \ --set-ingress-policies=ingress-policies.yamlVérifiez les règles mises à jour :
gcloud access-context-manager perimeters describe ${PERIMETER_NAME}