A seconda dell'integrazione, devi configurare le regole per i seguenti flussi di dati:
- Esecuzione di query sui dati SAP (da SAP a BDC): per eseguire query sulle tabelle SAP da Google Cloud, devi configurare una regola in uscita.
- Pubblicazione di dati su SAP (da BDC a SAP): per pubblicare dati su SAP, devi configurare una regola in entrata.
Regole in uscita per l'esecuzione di query su SAP
Potresti visualizzare questo errore quando esegui query sulle tabelle SAP:
VPC Service Controls: Request is prohibited by organization's policy. File: gs://example-bucket/path/to/file
Questo problema si verifica perché BigQuery deve leggere i bucket esterni di Cloud Storage che ospitano i dati della tabella. Se il perimetro limita storage.googleapis.com, potresti ricevere un errore RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER perché il bucket esterno si trova al di fuori del perimetro. Per risolvere il problema, configura una regola in uscita.
Per ulteriori informazioni, consulta Risorse non nello stesso
perimetro.
Configura le regole in uscita
Questa configurazione si applica se il tuo panorama SAP è sottoposto a deployment su Google Cloud.
Se il tuo progetto utilizza i Controlli di servizio VPC e il perimetro limita storage.googleapis.com, devi configurare una regola in uscita per consentire a BigQuery di leggere i bucket Cloud Storage SAP per le query sulle tabelle.
Controlla il perimetro attuale.
PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER gcloud access-context-manager perimeters describe ${PERIMETER_NAME}Sostituisci quanto segue:
ACCESS_POLICY: la tua policy di accesso.PERIMETER: il tuo perimetro di servizio.
Il perimetro limita le letture dei bucket Cloud Storage se la risposta include:
resources: - projects/PROJECT_ID ... restrictedServices: - storage.googleapis.comEsporta le regole in uscita attuali e aggiungi una regola per consentire le letture dei bucket 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.yamlSostituisci quanto segue:
ACCESS_POLICY: la tua policy di accesso.PERIMETER: il tuo perimetro di servizio.
Aggiungi questa regola a
egress-policies.yamlper consentirti di leggere i bucket Cloud Storage al di fuori del perimetro:- 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: - '*'Aggiorna il perimetro di servizio:
gcloud access-context-manager perimeters update ${PERIMETER_NAME} \ --set-egress-policies=egress-policies.yamlVerifica le policy in uscita aggiornate:
gcloud access-context-manager perimeters describe ${PERIMETER_NAME}
Regole in entrata per la pubblicazione di dati su SAP
SAP deve eseguire query sull'API Lakehouse per leggere le tabelle Lakehouse. Le regole dei Controlli di servizio VPC potrebbero bloccare questa operazione se il perimetro del progetto limita il servizio biglake.googleapis.com.
Se nel tuo progetto sono applicati i Controlli di servizio VPC e il perimetro applicato al progetto limita il servizio biglake.googleapis.com, devi configurare una regola in entrata per consentire alle entità federate SAP di accedere alle API Lakehouse.
Configura le regole in entrata
Controlla il perimetro attuale.
PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER gcloud access-context-manager perimeters describe ${PERIMETER_NAME}Sostituisci quanto segue:
ACCESS_POLICY: la tua policy di accesso.PERIMETER: il tuo perimetro di servizio.
Il perimetro di servizio può limitare l'API Lakehouse se la risposta contiene:
resources: - projects/PROJECT_ID ... restrictedServices: - biglake.googleapis.comEsporta le regole in entrata attuali e aggiungi una regola per consentire alle entità federate SAP di chiamare le 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.yamlSostituisci quanto segue:
ACCESS_POLICY: la tua policy di accesso.PERIMETER: il tuo perimetro di servizio.
Aggiungi una regola per l'entità federata 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: - '*'Sostituisci quanto segue:
PROJECT_ID: l'ID progetto contenente il pool di identità del workload.POOL_NAME: il nome del pool di identità del workload.SUBJECT: l'UUID emesso dall'emittente lato SAP per il workload.
Aggiorna il perimetro di servizio:
gcloud access-context-manager perimeters update ${PERIMETER_NAME} \ --set-ingress-policies=ingress-policies.yamlVerifica le policy aggiornate:
gcloud access-context-manager perimeters describe ${PERIMETER_NAME}