Google Cloud 서비스로 일반적인 VPC 서비스 제어 문제 해결

이 페이지에서는 VPC 서비스 제어 경계 내에 있는 Google Cloud 서비스를 사용할 때 발생할 수 있는 문제에 대한 해결책을 제공합니다.

Cloud Build 문제

VPC 서비스 제어 내에서 Cloud Build 리소스를 사용할 때는 일부 알려진 제한사항이 있습니다. 자세한 내용은 Cloud Build에 VPC 서비스 제어를 사용할 때의 제한사항을 참조하세요.

Cloud Build 서비스 계정의 보호된 리소스 액세스가 차단됨

Cloud Build는 Cloud Build 서비스 계정을 사용하여 사용자 대신 빌드를 실행합니다. 기본적으로 Cloud Build에서 빌드를 실행하면 빌드가 프로젝트 외부의 테넌트 프로젝트에서 실행됩니다.

빌드 출력을 생성하는 Cloud Build의 작업자 VM은 프로젝트가 경계 내에 있더라도 VPC 서비스 제어 경계 외부에 있습니다. 따라서 빌드가 경계 내에 있는 리소스에 액세스할 수 있으려면 액세스 수준 또는 인그레스 규칙에 이를 추가해서 VPC 서비스 제어 경계에 대한 액세스 권한을 Cloud Build 서비스 계정에 부여해야 합니다.

자세한 내용은 Cloud Build 서비스 계정에 VPC 서비스 제어 경계에 대한 액세스 권한 부여를 참조하세요.

Cloud Storage 문제

존재하지 않는 로깅 Cloud Storage 버킷을 대상으로 지정할 때 거부가 발생함

지정된 로깅 버킷이 없으면 VPC 서비스 제어가 RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER 위반 사유로 액세스를 거부합니다.

액세스 거부 로그는 VPC 서비스 제어 고유 식별자(vpcServiceControlUniqueIdentifier)를 사용해서 검토할 수 있습니다. 다음은 RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER 위반 사유가 있는 샘플 로그입니다.

"serviceName": "storage.googleapis.com",
"methodName": "google.storage.buckets.update",
"resourceName": "projects/325183452875",
"metadata": {
  "violationReason": "RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER",
  ...
  "egressViolations": [
    {
      "sourceType": "Resource",
      "targetResource": "projects/0/buckets/this-bucket-does-not-exist",
      "source": "projects/325183452875/buckets/bucket-in-same-project",
      "servicePerimeter": "accessPolicies/875573620132/servicePerimeters/prod_perimeter"
    }]}

egressViolations 객체의 targetResource 필드에 projects/0/buckets 포함 대상이 있으면 projects/0이 존재하지 않고 서비스 경계 외부에 있는 것으로 고려되기 때문에 항상 거부가 트리거됩니다.

Goolge 소유의 공개 Cloud Storage 버킷에 액세스할 때 거부가 발생함

서비스 경계에는 다른 조직의 프로젝트가 포함될 수 없습니다. 경계에는 상위 조직의 프로젝트만 포함될 수 있습니다. 다른 조직에 있는 VPC 서비스 제어 경계 내의 프로젝트에서 Cloud Storage 버킷에 액세스하려고 할 때는 특정 제한사항이 있습니다.

일반적인 예시는 Google 소유의 Cloud Storage 버킷에 액세스하려고 할 때입니다. 사용자의 프로젝트와 대상 버킷을 포함하는 Google 소유 프로젝트가 동일한 경계에 있지 않기 때문에 VPC 서비스 제어가 RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER 위반 사유로 요청을 거부합니다.

이 문제를 해결하기 위해서는 인그레스 및 이그레스 규칙을 만들면 됩니다.

경계 내에서 공개적으로 액세스 가능한 Cloud Storage 버킷에 액세스

사용자가 서비스 경계 내에서 공개적으로 액세스 가능한 Cloud Storage 버킷에 액세스하려고 시도하면 VPC 서비스 제어가 이그레스 위반을 일으켜서 사용자 요청을 차단할 수 있습니다.

필요에 따라 객체에 대한 일관적이고 성공적인 액세스를 보장하기 위해서는 해당 서비스 경계에 이그레스 규칙을 적용해야 합니다.

Security Command Center 문제

이 섹션에서는 VPC 서비스 제어 경계 내에서 Security Command Center 리소스를 사용할 때 발생할 수 있는 문제를 보여줍니다.

Security Command Center에서 Pub/Sub로 알림 전송이 차단됨

VPC 서비스 제어 경계 내에서 Security Command Center 알림을 Pub/Sub 주제에 게시하려고 시도하면 RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER 위반과 함께 작업이 실패합니다.

조직 수준에서 Security Command Center를 활성화하는 것이 좋습니다. VPC 서비스 제어는 상위 조직을 하위 프로젝트의 경계 일부로 고려하지 않습니다. 이 작업을 수행하려면 경계에 Security Command Center에 대한 액세스 권한을 부여해야 합니다.

문제 해결을 위해 다음 중 하나를 수행할 수 있습니다.

  • 서비스 경계에 없는 프로젝트에서 Pub/Sub 주제를 사용합니다.
  • 알림 설정이 완료될 때까지 서비스 경계에서 Pub/Sub API를 삭제합니다.

Pub/Sub 주제에 전송된 Security Command Center 알림을 사용 설정하는 방법은 Pub/Sub에 대한 알림 찾기 사용 설정을 참조하세요.

Security Command Center에서 경계 내부의 Compute Engine 리소스 스캔이 차단됨

Security Command Center는 제품별, 프로젝트별 서비스 계정(P4SA) service-{project_number}@gcp-sa-computescanning.iam.gserviceaccount.com을 사용하여 프로젝트에서 Compute Engine 리소스를 스캔합니다. Security Command Center가 경계 내에서 리소스에 액세스할 수 있으려면 액세스 수준 또는 인그레스 규칙에 P4SA를 추가해야 합니다. 그렇지 않으면 NO_MATCHING_ACCESS_LEVEL 오류가 표시될 수 있습니다.

Security Command Center에서 서비스 경계 내에서 리소스 스캔이 차단됨

Security Health Analytics는 P4SA(제품별, 프로젝트별 서비스 계정) service-org-ORGANIZATION_ID@security-center-api.iam.gserviceaccount.com을 사용하여 프로젝트에서 리소스를 스캔합니다. Security Command Center가 경계 내에서 리소스에 액세스할 수 있으려면 액세스 수준 또는 인그레스 규칙에 P4SA 계정을 추가해야 합니다. 그렇지 않으면 NO_MATCHING_ACCESS_LEVEL 오류가 표시됩니다.

Google Kubernetes Engine 문제

이 섹션에서는 VPC 서비스 제어 경계 내에 있는 Google Kubernetes Engine 리소스를 사용할 때 발생할 수 있는 문제에 대해 설명합니다.

액세스 가능한 서비스와 제한된 서비스가 사용 설정된 경계에서 자동 확장 처리가 작동하지 않음

autoscaling.googleapis.com은 VPC 서비스 제어와 통합되지 않습니다. 따라서 제한된 서비스나 액세스 가능한 서비스 어디에도 추가할 수 없습니다. 액세스 가능한 서비스에서는 autoscaling.googleapis.com API를 허용할 수 없습니다. 따라서 액세스 가능한 서비스가 사용 설정된 경계 내에 있는 클러스터의 자동 확장 처리가 작동하지 않을 수 있습니다.

액세스 가능한 서비스는 사용하지 않는 것이 좋습니다. 제한된 가상 IP(VIP)를 사용할 때는 자동 확장이 지원되는 클러스터가 포함된 경계에서 비공개 VIP로 이동할 수 있도록 autoscaling.googleapis.com에 대해 예외를 설정합니다.

BigQuery 문제

이 섹션에서는 VPC 서비스 제어 경계 내에 있는 BigQuery 리소스를 사용할 때 발생할 수 있는 문제에 대해 설명합니다.

VPC 서비스 제어 경계 제한은 BigQuery 쿼리 결과 내보내기에 적용되지 않습니다.

BigQuery에서 Google Drive, Google Sheets, Looker Studio로 보호되는 데이터 내보내기를 제한하려고 시도하면 예상에서 벗어난 동작이 발생할 수 있습니다. BigQuery UI에서 쿼리를 실행할 때는 브라우저 캐시와 같은 머신의 로컬 메모리에 결과가 저장됩니다. 즉, 이제 결과가 VPC 서비스 제어 외부에 있으므로 결과를 CSV 파일 또는 Google Drive에 저장할 수 있습니다.

이 시나리오에서는 서비스 경계 외부에 있는 로컬 머신으로부터 결과를 내보내기 때문에 VPC 서비스 제어가 의도한 대로 작동하지만 BigQuery 데이터의 전반적인 제한이 우회됩니다.

이 문제를 해결하려면 bigquery.tables.export 권한을 삭제해서 사용자에 대해 IAM 권한을 제한합니다. 이렇게 하면 모든 내보내기 옵션이 사용 중지됩니다.

GKE Enterprise 문제

이 섹션에서는 VPC 서비스 제어 경계 내에 있는 GKE Enterprise 리소스를 사용할 때 발생할 수 있는 문제에 대해 설명합니다.

Anthos Service Mesh에서 VPC 서비스 제어를 사용하는 것과 관련된 오류를 문제 해결하려면 관리되는 Anthos Service Mesh에 대한 VPC 서비스 제어 문제 해결을 참조하세요.

GKE Enterprise 구성 컨트롤러 설정으로 이그레스 위반이 발생함

경계 외부의 프로젝트에서 google.containers.registry.read 메서드로 containerregistry.googleapis.com에 도달할 수 있게 해주는 이그레스 구성이 없으면 GKE Enterprise 구성 컨트롤러 설정 프로세스가 실패할 것으로 예상됩니다.

이 오류를 해결하려면 다음과 같은 이그레스 규칙을 만듭니다.

From:
  Identities:ANY_IDENTITY
To:
  Projects =
    NNNNNNNNNNNN
  Service =
  Service name: containerregistry.googleapis.com
  Service methods:
    containers.registry.read

위반된 경계에 규칙을 추가하면 이그레스 위반이 사라집니다.

Container Registry 문제

이 섹션에서는 VPC 서비스 제어 경계 내에 있는 Container Registry 리소스를 사용할 때 발생할 수 있는 문제에 대해 설명합니다.

인그레스 또는 이그레스 규칙에서 허용되더라도 VPC 서비스 제어에서 Container Registry API 요청이 차단됨

identity_type 필드가 ANY_USER_ACCOUNT 또는 ANY_SERVICE_ACCOUNT로 설정된 인그레스 규칙을 사용하여 Container Registry에 대해 액세스를 허용한 경우 VPC 서비스 제어에서 액세스가 차단됩니다.

이 문제를 해결하려면 인그레스 또는 이그레스 규칙에서 identity_type 필드를 ANY_IDENTITY로 업데이트합니다.

경계의 프로젝트에 Artifact Registry 소유의 Docker 이미지를 복사하는 동안 Google 관리 서비스 계정에서 이그레스 오류가 발생함

VPC 서비스 제어 경계 내에 있는 프로젝트에 Artifact Registry 소유 이미지를 복사하려고 시도하면 Google 관리 서비스 계정 cloud-cicd-artifact-registry-copier@system.gserviceaccount.com의 로그에 이그레스 오류가 표시될 수 있습니다. 이 이그레스 오류는 일반적으로 경계 정책이 테스트 실행 모드일 때 발생합니다.

서비스 계정 cloud-cicd-artifact-registry-copier@system.gserviceaccount.com에 VPC 서비스 제어 오류 로그에 언급된 프로젝트의 storage.googleapis.com 서비스에 대한 액세스 권한을 허용하는 이그레스 규칙을 만들면 이 문제를 해결할 수 있습니다.

Vertex AI 문제

이 섹션에서는 VPC 서비스 제어 경계 내에 있는 Vertex AI 리소스를 사용할 때 발생할 수 있는 문제에 대해 설명합니다.

인그레스 또는 이그레스 규칙에서 허용되더라도 VPC 서비스 제어에서 사용자 관리 노트북 API 요청이 차단됨

인그레스 정책을 사용해서 사용자 관리 노트북 API에 대한 액세스를 허용하고 identity_typeANY_USER_ACCOUNT 또는 ANY_SERVICE_ACCOUNT로 설정한 경우 VPC 서비스 제어에서 이 API에 대한 액세스가 차단됩니다.

이 문제를 해결하려면 인그레스 또는 이그레스 규칙에서 identity_type 필드를 ANY_IDENTITY로 업데이트합니다.

Spanner 문제

Spanner 데이터베이스 백업이 제품별, 프로젝트별 서비스 계정(P4SA) service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.comNO_MATCHING_ACCESS_LEVEL 위반에 의해 차단됩니다.

이 문제를 해결하려면 앞에서 언급한 서비스 에이전트가 있는 인그레스 규칙을 추가하거나 이를 액세스 수준에 추가합니다.

다음 단계