Configurazione dei Controlli di servizio VPC per SAP BDC

I Controlli di servizio VPC (VPC SC) ti aiutano a proteggere gli scambi di dati traGoogle Cloud e SAP Business Data Cloud (BDC). A seconda della direzione dell'integrazione, puoi configurare regole in uscita per eseguire query sulle tabelle SAP da Google Cloud o regole in entrata per pubblicare dati in SAP BDC.

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 accade 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 saperne di più, consulta Risorse non nello stesso perimetro.

Configura le regole in uscita

Questa configurazione si applica se il deployment del tuo landscape SAP viene eseguito suGoogle 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 del 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 consentire la lettura dei bucket Cloud Storage all'esterno 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 dei dati su SAP

SAP deve eseguire query sull'API BigLake per leggere le tabelle Apache Iceberg gestite da Lakehouse. Le regole dei Controlli di servizio VPC potrebbero bloccare questa operazione se il perimetro del progetto limita il servizio biglake.googleapis.com.

Se per il 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 all'API BigLake.

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 BigLake 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