Configuration de VPC Service Controls pour SAP BDC

VPC Service Controls (VPC SC) vous aide à sécuriser les échanges de données entreGoogle Cloud et SAP Business Data Cloud (BDC). Selon le sens de l'intégration, vous pouvez configurer des règles de sortie pour interroger des tables SAP à partir de Google Cloud ou des règles d'entrée pour publier des données dans SAP BDC.

Règles de sortie pour interroger SAP

Cette erreur 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 Cloud Storage externes 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é surGoogle 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 Cloud Storage SAP pour les requêtes de table.

  1. 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 :

    resources:
    - projects/PROJECT_ID
    ...
    restrictedServices:
    - storage.googleapis.com
    
  2. Exportez 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.yaml
    

    Remplacez 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.yaml pour vous permettre de 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:
        - '*'
    
  3. Mettez à jour le périmètre de service :

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

    Vérifiez les règles de sortie mises à jour :

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

Règles d'Ingress pour la publication de données dans SAP

SAP doit interroger l'API BigLake pour lire les tables Apache Iceberg gérées par Lakehouse. Vos règles VPC Service Controls 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 comptes principaux fédérés SAP à accéder à l'API BigLake.

Configurer des règles d'entrée

  1. 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 restreindre l'API BigLake si la réponse contient :

    resources:
    - projects/PROJECT_ID
    ...
    restrictedServices:
    - biglake.googleapis.com
    
  2. Exportez les règles d'entrée actuelles et ajoutez une règle pour autoriser les comptes 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.yaml
    

    Remplacez 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 compte 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.
  3. Mettez à jour le périmètre de service :

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

    Vérifiez que les règles ont bien été mises à jour :

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

Étapes suivantes