SAP BDC의 VPC 서비스 제어 구성

VPC 서비스 제어 (VPC SC)는Google Cloud 와 SAP 비즈니스 데이터 클라우드 (BDC) 간의 데이터 교환을 보호하는 데 도움이 됩니다. 통합 방향에 따라 Google Cloud 에서 SAP 테이블을 쿼리하는 이그레스 규칙 또는 SAP BDC에 데이터를 게시하는 인그레스 규칙을 구성할 수 있습니다.

SAP 쿼리를 위한 이그레스 규칙

SAP 테이블을 쿼리할 때 다음 오류가 표시될 수 있습니다.

VPC Service Controls: Request is prohibited by organization's policy. File: gs://example-bucket/path/to/file

이는 BigQuery가 테이블 데이터를 호스팅하는 Cloud Storage 외부 버킷을 읽어야 하기 때문에 발생합니다. 경계에서 storage.googleapis.com를 제한하는 경우 외부 버킷이 경계 외부에 있으므로 RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER 오류가 발생할 수 있습니다. 이 문제를 해결하려면 이그레스 규칙을 구성합니다. 자세한 내용은 동일한 경계에 없는 리소스를 참조하세요.

이그레스 규칙 구성

이 구성은 SAP 환경이Google Cloud에 배포된 경우에 적용됩니다.

프로젝트에서 VPC 서비스 제어를 사용하고 경계가 storage.googleapis.com를 제한하는 경우 BigQuery가 테이블 쿼리를 위해 SAP Cloud Storage 버킷을 읽을 수 있도록 이그레스 규칙을 구성해야 합니다.

  1. 현재 경계를 확인합니다.

    PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER
    gcloud access-context-manager perimeters describe ${PERIMETER_NAME}
    

    다음을 바꿉니다.

    • ACCESS_POLICY: 액세스 정책입니다.
    • PERIMETER: 서비스 경계입니다.

    응답에 다음이 포함된 경우 경계에서 Cloud Storage 버킷 읽기를 제한합니다.

    resources:
    - projects/PROJECT_ID
    ...
    restrictedServices:
    - storage.googleapis.com
    
  2. 현재 이그레스 규칙을 내보내고 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
    

    다음을 바꿉니다.

    • ACCESS_POLICY: 액세스 정책입니다.
    • PERIMETER: 서비스 경계입니다.

    경계 외부의 Cloud Storage 버킷을 읽을 수 있도록 이 규칙을 egress-policies.yaml에 추가합니다.

    - 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. 서비스 경계를 업데이트합니다.

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

    업데이트된 이그레스 정책을 확인합니다.

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

SAP에 데이터를 게시하기 위한 인그레스 규칙

SAP는 Lakehouse에서 관리하는 Apache Iceberg 테이블을 읽기 위해 BigLake API를 쿼리해야 합니다. 프로젝트의 경계가 biglake.googleapis.com 서비스를 제한하는 경우 VPC 서비스 제어 규칙이 이를 차단할 수 있습니다.

프로젝트에 VPC 서비스 제어가 적용되고 프로젝트에 적용된 경계가 biglake.googleapis.com 서비스를 제한하는 경우 SAP 제휴 주 구성원이 BigLake API에 액세스할 수 있도록 인그레스 규칙을 구성해야 합니다.

인그레스 규칙 구성

  1. 현재 경계를 확인합니다.

    PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER
    gcloud access-context-manager perimeters describe ${PERIMETER_NAME}
    

    다음을 바꿉니다.

    • ACCESS_POLICY: 액세스 정책입니다.
    • PERIMETER: 서비스 경계입니다.

    응답에 다음이 포함된 경우 서비스 경계에서 BigLake API를 제한할 수 있습니다.

    resources:
    - projects/PROJECT_ID
    ...
    restrictedServices:
    - biglake.googleapis.com
    
  2. 현재 인그레스 규칙을 내보내고 SAP 제휴 주 구성원이 Lakehouse API를 호출할 수 있도록 규칙을 추가합니다.

    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
    

    다음을 바꿉니다.

    • ACCESS_POLICY: 액세스 정책입니다.
    • PERIMETER: 서비스 경계입니다.

    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:
        - '*'
    

    다음을 바꿉니다.

    • PROJECT_ID: 워크로드 아이덴티티 풀이 포함된 프로젝트 ID
    • POOL_NAME: 워크로드 아이덴티티 풀의 이름입니다.
    • SUBJECT: 워크로드에 대해 SAP 측 발급기관에서 발급한 UUID입니다.
  3. 서비스 경계를 업데이트합니다.

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

    업데이트된 정책을 확인합니다.

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

다음 단계