Configurazione dei Controlli di servizio VPC per SAP BDC

Questo documento spiega come configurare le regole in entrata e in uscita dei Controlli di servizio VPC (VPC SC) per SAP Business Data Cloud (BDC).

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.

  1. 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.com
    
  2. Esporta 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.yaml
    

    Sostituisci quanto segue:

    • ACCESS_POLICY: la tua policy di accesso.
    • PERIMETER: il tuo perimetro di servizio.

    Aggiungi questa regola a egress-policies.yaml per 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:
        - '*'
    
  3. Aggiorna il perimetro di servizio:

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

    Verifica 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

  1. 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.com
    
  2. Esporta 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.yaml
    

    Sostituisci 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.
  3. Aggiorna il perimetro di servizio:

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

    Verifica le policy aggiornate:

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

Passaggi successivi