외부 카탈로그에 대한 자격 증명 공급(credential vending) 활성화

외부 카탈로그에 대한 자격 증명 공급(credential vending) 활성화

일반적으로 사용 가능(GA) — 정부 리전에서는 사용할 수 없어요.

자격 증명 공급을 사용하면 Snowflake Open Catalog로 카탈로그와 그 기본 클라우드 스토리지에 대한 접근 제어를 한 곳에서 구성하고 관리할 수 있어요. 내부 카탈로그의 경우 자격 증명 공급이 기본적으로 활성화돼요. 외부 카탈로그의 경우 다음 옵션 중 하나를 사용해 자격 증명 공급을 활성화할 수 있어요:

외부 카탈로그에 대한 자격 증명 공급을 활성화하기 전에 카탈로그의 테이블이 겹치는 스토리지 디렉터리 위치를 가지지 않도록 확인하세요. 그렇지 않으면 사용자가 접근 권한이 없어야 할 테이블에 접근할 수 있게 될 수 있어요. 자세한 내용은 외부 카탈로그에 대한 자격 증명 공급을 참조하세요.

출처: Enable credential vending for an external catalog

본문

Open Catalog 사용

  1. Open Catalog에 로그인하세요.
  2. 왼쪽 메뉴에서 Catalogs를 선택하세요.
  3. 카탈로그 목록에서 자격 증명 공급을 활성화할 카탈로그를 선택하세요.
  4. Catalog Details 탭의 Storage details 아래, Credential Vending 아래에서 Edit 아이콘을 선택하세요.
  5. 나타나는 팝업에서 Enable을 선택하세요.

Apache Polaris™(Incubating) CLI

이 섹션은 Polaris CLI로 외부 카탈로그에 대한 자격 증명 공급을 활성화하는 방법을 설명해요. Apache Polaris(Incubating) CLI는 고객이 프로그래매틱하게 설정을 업데이트하기 위한 명령줄 인터페이스예요. 자세한 내용은 Apache Polaris(Incubating) CLI를 참조하세요.

외부 카탈로그에 대한 자격 증명 공급을 활성화하려면 Polaris CLI와 함께 서비스 연결을 사용하세요.

1단계: 필요한 권한이 있는 서비스 연결 준비

  1. 새 서비스 연결에 할당할 보안 주체 역할을 만들고 서비스 연결에 할당할 보안 주체 역할이 이미 있다면 이 단계를 건너뛰세요.
  2. 서비스 연결을 구성하고 나중에 Polaris CLI와 함께 사용할 Client ID와 Client Secret을 저장하세요. Polaris CLI에 사용할 서비스 연결이 이미 있다면 이 단계를 건너뛰세요.
  3. 대상 카탈로그에 카탈로그 역할을 만들어 자격 증명 공급을 활성화하는 데 필요한 권한을 부여하세요. 자격 증명 공급 활성화에 사용할 카탈로그 역할이 이미 있다면 이 단계를 건너뛰세요.
  4. 대상 카탈로그를 보호하세요. 보호할 때 카탈로그 역할에 다음 권한 중 하나 이상이 부여되도록 하세요:
    • CATALOG_MANAGE_CONTENT
    • CATALOG_MANAGE_METADATA
    • CATALOG_WRITE_PROPERTIES

자격 증명 공급을 활성화하려면 이 작업을 수행하는 데 사용되는 서비스 주체에 이 권한 중 하나가 부여돼야 해요.

2단계: CLI 명령 실행

CLI 명령을 실행하려면 환경에 맞는 관련 단계를 참조하세요:

Linux 또는 Mac 사용자로 CLI 명령 실행

사전 요구 사항

CLI 명령을 실행하기 전에 환경에 대한 다음 사전 요구 사항을 충족해야 해요:

Linux 또는 Mac에서 CLI 명령을 실행하려면 다음 단계를 따르세요:

  1. 다음 명령을 실행해 Apache Polaris™ GitHub 리포지토리를 클론하세요:
git clone https://github.com/apache/polaris.git

GitHub 리포지토리를 클론하는 방법에 대한 지침은 리포지토리 클론을 참조하세요.

  1. CLI 명령에 대해 다음 환경 변수를 정의하세요:
export CLIENT_ID=<client-id>
export CLIENT_SECRET=<client-secret>
export sfAccountUrl=https://<open_catalog_account_identifier>.snowflakecomputing.com
export catalogName=<my-catalog>

여기서:

  • sfAccountUrl은 다음 URL이에요: https://<open_catalog_account_identifier>.snowflakecomputing.com. <open_catalog_account_identifier>에는 Open Catalog 계정의 계정 식별자를 지정하세요. 계정의 리전과 클라우드 플랫폼에 따라 이 식별자는 계정 로케이터 단독(예: xy12345)이거나 추가 세그먼트를 포함할 수 있어요. 자세한 내용은 식별자로 계정 로케이터 사용을 참조하세요.
  • CLIENT_ID는 저장한 서비스 연결의 client_id예요.
  • CLIENT_SECRET는 저장한 서비스 연결의 client_secret이에요.
  • catalogName은 자격 증명 공급을 활성화할 외부 카탈로그의 이름이에요.
  1. Apache Polaris 리포지토리를 클론한 디렉터리에서 Polaris CLI를 실행하세요:
./polaris \
  --base-url "${sfAccountUrl}/polaris" \
  --client-id ${CLIENT_ID} \
  --client-secret ${CLIENT_SECRET} \
  catalogs \
  update "${catalogName}" \
  --set-property "enable.credential.vending"="true"

Windows 사용자로 CLI 명령 실행

사전 요구 사항

다음 코드를 실행하려면 Windows 머신에 Docker가 설치돼 있어야 해요.

  1. 다음 코드 예제를 사용해 Dockerfile을 만드세요:
FROM python:3.11

# install git
RUN apt-get update && apt-get install -y git

# get polaris
RUN git clone https://github.com/apache/polaris.git

WORKDIR /polaris

RUN pip install --upgrade pip

# install polaris cli
RUN ./polaris --help
  1. Dockerfile이 있는 폴더에서 다음 명령으로 Polaris CLI용 Docker 이미지를 빌드하세요:
% docker build -t polaris-cli .
  1. 다음 명령으로 Docker 컨테이너와 bash 터미널을 실행하세요:
% docker run --rm -it polaris-cli /bin/bash
root@ae4c8353b45f:/polaris#
  1. 다음 코드를 실행해 enable.credential.vending 속성을 true로 설정하도록 카탈로그를 업데이트하세요:
% docker run --rm -it polaris-cli /bin/bash
root@ae4c8353b45f:/polaris# export CLIENT_ID=<client-id>
export CLIENT_SECRET=<client-secret>
export sfAccountUrl=https://<open_catalog_account_identifier>.snowflakecomputing.com
export catalogName=<my-catalog>
root@ae4c8353b45f:/polaris# ./polaris \
  --base-url "${sfAccountUrl}/polaris" \
  --client-id ${CLIENT_ID} \
  --client-secret ${CLIENT_SECRET} \
  catalogs \
  update "${catalogName}" \
  --set-property "enable.credential.vending"="true"
  1. 다음 코드를 실행해 enable.credential.vending 매개변수가 올바르게 구성됐는지 검증하세요:
root@ae4c8353b45f:/polaris# ./polaris \
  --base-url "${sfAccountUrl}/polaris" \
  --client-id ${CLIENT_ID} \
  --client-secret ${CLIENT_SECRET} \
  catalogs \
  get "${catalogName}"
{"type": "EXTERNAL", "name": "<my-catalog>", "properties": {"default-base-location": "s3://<bucket-name>/polaris/my-catalog-v2-storage/", "enable.credential.vending": "true"}, "createTimestamp": 1722547448827, "lastUpdateTimestamp": 1730906335286, "entityVersion": 3, "storageConfigInfo": {"storageType": "S3", "allowedLocations": ["s3://<bucket-name>/polaris/my-catalog-v2-storage/"], "roleArn": "arn:aws:iam::<aws-account-id>:role/<polaris-aws-role>"}}

더 알아보기