Google Cloud Storage용 외부 볼륨 구성하기

외부 볼륨을 사용하여 Snowflake에게 Google Cloud Storage(GCS) 버킷에 대한 제한된 액세스 권한을 부여합니다.

전제 조건

외부 볼륨을 구성하기 전에 다음을 수행해야 합니다.

  • Snowflake 계정을 호스팅하는 동일한 리전에 있는 Google Cloud Storage 버킷.

  • Google Cloud에서 IAM 정책 및 역할을 만들고 관리할 수 있는 권한. Google Cloud 관리자가 아닌 경우 Google Cloud 관리자에게 이러한 작업을 수행하도록 요청합니다.

1단계: Snowflake에서 외부 볼륨 만들기

CREATE EXTERNAL VOLUME 명령을 사용하여 외부 볼륨을 생성합니다.

참고

계정 관리자(ACCOUNTADMIN 역할을 가진 사용자)만 이 SQL 명령을 실행할 수 있습니다.

다음 예에서는 암호화로 단일 GCS 저장소 위치를 정의하는 외부 볼륨을 생성합니다.

CREATE EXTERNAL VOLUME my_gcs_external_volume
  STORAGE_LOCATIONS =
    (
      (
        NAME = 'my-us-west-2'
        STORAGE_PROVIDER = 'GCS'
        STORAGE_BASE_URL = 'gcs://mybucket1/path1/'
        ENCRYPTION=(TYPE='GCS_SSE_KMS' KMS_KEY_ID = '1234abcd-12ab-34cd-56ef-1234567890ab')
      )
    );
Copy

2단계: Snowflake 계정에 대한 GCS 서비스 계정 검색

Snowflake 계정에 대해 자동으로 생성된 GCS 서비스 계정에 대한 ID를 검색하려면 DESCRIBE EXTERNAL VOLUME 명령을 사용합니다. 이전에 생성한 외부 볼륨의 이름을 지정합니다.

예:

DESC EXTERNAL VOLUME my_gcs_external_volume;
Copy

출력에 STORAGE_GCP_SERVICE_ACCOUNT 속성 값을 기록합니다(예: service-account-id@project1-123456.iam.gserviceaccount.com).

Snowflake는 전체 Snowflake 계정에 대해 단일 GCS 서비스 계정을 프로비저닝합니다. 모든 GCS 외부 볼륨은 해당 서비스 계정을 사용합니다.

3단계: 서비스 계정에 버킷 오브젝트 액세스 권한 부여

이 단계에서는 Google Cloud Platform Console에서 Snowflake에 대한 IAM 액세스 권한을 구성합니다.

사용자 지정 IAM 역할 만들기

버킷에 액세스하고 오브젝트를 가져오기 위해 필요한 권한이 있는 사용자 지정 역할을 생성합니다.

  1. Google Cloud Platform Console에 프로젝트 편집자로 로그인합니다.

  2. 홈 대시보드에서 IAM & Admin » Roles 를 선택합니다.

  3. Create Role 을 선택합니다.

  4. 사용자 지정 역할에 Title 및 선택 사항 Description 을 입력합니다.

  5. Add Permissions 를 선택합니다.

  6. Filter 에서, Service 를 선택한 다음 storage 를 선택합니다.

  7. 권한 목록을 필터링하고 목록에 다음을 추가합니다.

    • storage.buckets.get

    • storage.objects.create

    • storage.objects.delete

    • storage.objects.get

    • storage.objects.list

  8. Add 를 선택합니다.

  9. Create 를 선택합니다.

GCS 서비스 계정에 사용자 지정 역할 할당

  1. Google Cloud Platform Console에 프로젝트 편집자로 로그인합니다.

  2. 홈 대시보드에서 Cloud Storage » Buckets 를 선택합니다.

  3. 버킷 목록을 필터링하고 외부 볼륨을 생성할 때 지정한 버킷을 선택합니다.

  4. Permissions » View by principals 을 선택한 다음 Grant access 를 선택합니다.

  5. Add principals 아래에 출력된 서비스 계정 이름의 이름을 2단계: Snowflake 계정에 대한 GCS 서비스 계정 검색 에 붙여넣습니다.

  6. Assign roles 에서, 이전에 만든 사용자 지정 IAM 역할을 선택한 다음 Save 를 선택합니다.

Google Cloud 키 관리 서비스 키에 대한 GCS 서비스 계정 권한 부여

참고

이 단계는 Google Cloud Key Management Service(클라우드 KMS)에 저장된 키를 사용하여 GCS 버킷을 암호화하는 경우에만 필요합니다.

  1. Google Cloud Platform Console에 프로젝트 편집자로 로그인합니다.

  2. 홈 대시보드에서 Security » Key Management 를 검색하여 선택합니다.

  3. GCS 버킷에 할당된 키 링을 선택합니다.

  4. 오른쪽 위 모서리에서 SHOW INFO PANEL 을 선택합니다. 키 링에 대한 정보 패널이 나타납니다.

  5. Add members 필드에서 2단계: Snowflake 계정에 대한 GCS 서비스 계정 검색 의 DESCRIBE EXTERNAL VOLUME 출력에서 서비스 계정 이름을 검색합니다.

  6. Select a role 드롭다운에서 Cloud KMS CryptoKey Encrypter/Decrypter 역할을 선택합니다.

  7. Add 를 선택합니다. 서비스 계정 이름이 정보 패널의 Cloud KMS CryptoKey Encrypter/Decrypter 역할 드롭다운에 추가됩니다.

4단계: 저장소 액세스 확인

Snowflake가 저장소 공급자를 성공적으로 인증할 수 있는지 확인하려면 SYSTEM$VERIFY_EXTERNAL_VOLUME 함수를 호출합니다.

SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('my_s3_external_volume');
Copy

다음 단계

외부 볼륨을 구성하면 Iceberg 테이블을 생성할 수 있습니다.