BigQuery Omni용 VPC 서비스 제어 설정

이 문서에서는 VPC 서비스 제어 경계 내에서 지정된 외부 클라우드 리소스에만 액세스하도록 제한하는 이그레스 정책을 설정하는 방법을 설명합니다.

VPC 서비스 제어 경계를 사용하여 BigQuery Omni에서 외부 클라우드에 대한 액세스를 제한할 수 있습니다. VPC 서비스 제어는 Identity and Access Management(IAM)과 별개로 Google Cloud 서비스의 보안을 더욱 강화합니다. 예를 들어 VPC 서비스 제어 경계를 설정하면 BigQuery Omni 테이블 내보내기를 특정 S3 버킷으로만 제한할 수 있습니다.

VPC 서비스 제어에 대한 자세한 내용은 VPC 서비스 제어 개요를 참조하세요.

시작하기 전에

서비스 경계를 구성하는 데 필요한 권한이 있는지 확인합니다. VPC 서비스 제어를 구성하는 데 필요한 IAM 역할 목록을 보려면 VPC 서비스 제어 문서의 IAM으로 액세스 제어를 참조하세요.

콘솔을 사용하여 VPC 서비스 제어 설정

  1. 콘솔 탐색 메뉴에서 보안을 클릭한 다음 VPC 서비스 제어를 클릭합니다.

    VPC 서비스 제어로 이동

  2. BigQuery Omni용 VPC 서비스 제어를 설정하려면 서비스 경계 만들기 가이드의 단계를 진행하면서 이그레스 규칙 창이 표시되면 다음 단계를 따르세요.

    1. 이그레스 규칙 창에서 규칙 추가를 클릭합니다.

    2. API 클라이언트의 FROM 속성 섹션의 ID 목록에서 옵션을 선택합니다.

    3. 외부 리소스의 To 속성을 선택합니다.

    4. 외부 리소스를 추가하려면 외부 리소스 추가를 클릭합니다.

    5. 외부 리소스 추가 대화상자에서 외부 리소스 이름에 유효한 리소스 이름을 입력합니다. 예를 들면 다음과 같습니다.

      • Amazon S3: s3://BUCKET_NAME

        BUCKET_NAME을 Amazon S3 버킷 이름으로 바꿉니다.

      • Azure Storage: azure://myaccount.blob.core.windows.net/CONTAINER_NAME

        CONTAINER NAME을 Azure Storage 컨테이너 이름으로 바꿉니다.

      이그레스 규칙 속성 목록은 이그레스 규칙 참조를 확인하세요.

    6. 외부 리소스에서 허용할 메서드를 선택합니다.

      1. 모든 메서드를 허용하려면 메서드 목록에서 모든 메서드를 선택합니다.
      2. 특정 메서드를 허용하려면 선택된 메서드를 선택하고 메서드 선택을 클릭한 후 외부 리소스에서 허용할 메서드를 선택합니다.
    7. 경계 만들기를 클릭합니다.

gcloud CLI를 사용하여 VPC 서비스 제어 설정

gcloud CLI를 사용하여 VPC 서비스 제어를 설정하려면 다음 단계를 따르세요.

  1. 기본 액세스 정책을 설정합니다.
  2. 이그레스 정책 입력 파일을 만듭니다.
  3. 이그레스 정책을 추가합니다.

기본 액세스 정책 설정

액세스 정책은 액세스 수준 및 서비스 경계에 대한 조직 전반의 컨테이너입니다. 기본 액세스 정책을 설정하거나 액세스 정책 이름을 가져오는 방법에 대한 상세 설명은 액세스 정책 관리를 참조하세요.

이그레스 정책 입력 파일 만들기

이그레스 규칙 블록은 경계 내에서 경계 외부 리소스로의 허용된 액세스를 정의합니다. 외부 리소스의 경우 externalResources 속성은 VPC 서비스 제어 경계 내에서 액세스가 허용되는 외부 리소스 경로를 정의합니다.

JSON 파일 또는 YAML 파일을 사용하여 이그레스 규칙을 구성할 수 있습니다. 다음 샘플에서는 .yaml 형식을 사용합니다.

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: "*"
      *OR*
      - permission: "externalResource.read"
    externalResources:
      - EXTERNAL_RESOURCE_PATH
  egressFrom:
    identityType: IDENTITY_TYPE
    *OR*
    identities:
    - serviceAccount:SERVICE_ACCOUNT
  • egressTo: 경계 외부의 지정된 프로젝트에 포함된 Google Cloud 리소스에 허용되는 서비스 작업을 나열하는 to 블록을 시작합니다.

  • operations: from 블록 조건을 충족하는 클라이언트가 액세스할 수 있는 액세스 가능한 서비스 및 작업 또는 메서드의 목록입니다.

  • serviceName: BigQuery Omni의 경우 bigquery.googleapis.com으로 설정하세요.

  • methodSelectors: from 블록 조건을 충족하는 클라이언트가 액세스할 수 있는 메서드 목록입니다. 서비스에서 제한될 수 있는 메서드 및 권한 목록은 지원되는 서비스 메서드 제한사항을 참조하세요.

  • method 또는 permission: method 필드는 유효한 서비스 메서드일 수도 있고, \"*\"로 설정하여 지정된 서비스의 모든 메서드에 대한 액세스를 허용할 수도 있습니다.

    permission 필드는 \"*\", externalResource.read 또는 externalResource.write 같은 유효한 서비스 권한이어야 합니다. 이 권한이 필요한 작업에 경계 외부의 지정된 리소스에 대한 액세스가 허용됩니다.

  • externalResources: 경계 내부의 클라이언트가 액세스할 수 있는 외부 리소스 목록입니다. EXTERNAL_RESOURCE_PATH를 유효한 AWS S3 버킷(예: s3://bucket_name) 또는 Azure 스토리지 경로(예: azure://myaccount.blob.core.windows.net/container_name)로 바꾸세요.

  • egressFrom: 경계 내부의 지정된 프로젝트에 포함된 Google Cloud 리소스에 허용되는 서비스 작업을 나열하는 from 블록을 시작합니다.

  • identityType 또는 identities: identityType 속성은 경계 외부의 지정된 리소스에 액세스하는 데 사용할 수 있는 ID 유형을 정의합니다. IDENTITY_TYPE를 다음 값 중 하나로 바꿉니다.

    • ANY_IDENTITY: 모든 ID 허용
    • ANY_USER_ACCOUNT: 모든 사용자 허용
    • ANY_SERVICE_ACCOUNT: 모든 서비스 계정 허용

    identities 속성은 경계 외부에서 지정된 리소스에 액세스할 수 있는 서비스 계정 목록입니다.

  • serviceAccount (선택사항): SERVICE_ACCOUNT를 경계 외부의 지정된 리소스에 액세스할 수 있는 서비스 계정으로 바꿉니다.

예시

다음 예시는 경계 내부에서 AWS의 s3://mybucket S3 위치로 이그레스 작업을 허용하는 정책입니다.

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: "*"
    externalResources:
      - s3://mybucket
      - s3://mybucket2
  egressFrom:
    identityType: ANY_IDENTITY

다음 예시에서는 Azure storage 버킷에 대한 이그레스 작업을 허용합니다.

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: "*"
    externalResources:
      - azure://myaccount.blob.core.windows.net/mycontainer
  egressFrom:
    identityType: ANY_IDENTITY

이그레스 정책에 대한 상세 설명은 이그레스 규칙 참조를 확인하세요.

이그레스 정책 추가

새 서비스 경계를 만들 때 이그레스 정책을 추가하려면 gcloud access-context-manager perimeters create 명령어를 사용합니다. 예를 들어 다음 명령어는 12345 번호가 있는 프로젝트를 포함하는 omniPerimeter라는 새 경계를 만들고 BigQuery API를 제한하며 egress.yaml 파일에 추가합니다.

gcloud access-context-manager perimeters create omniPerimeter \
    --title="Omni Perimeter" \
    --resources=projects/12345 \
    --restricted-services=bigquery.googleapis.com \
    --egress-policies=egress.yaml

기존 서비스 경계에 이그레스 정책을 추가하려면 gcloud access-context-manager perimeters update 명령어를 사용합니다. 예를 들어 다음 명령어는 egress.yaml 파일에 정의된 이그레스 정책을 omniPerimeter라는 기존 서비스 경계에 추가합니다.

gcloud access-context-manager perimeters update omniPerimeter
    --set-egress-policies=egress.yaml

경계 검증

경계를 검증하려면 gcloud access-context-manager perimeters describe 명령어를 사용합니다.

gcloud access-context-manager perimeters describe PERIMETER_NAME

PERIMETER_NAME을 경계 이름으로 바꾸세요.

예를 들어 다음 명령어는 경계 omniPerimeter를 설명합니다.

gcloud access-context-manager perimeters describe omniPerimeter

자세한 내용은 서비스 경계 관리를 참조하세요.

다음 단계