外部カタログの認証情報供給を有効にする¶
認証情報ベンディングを使用すると、Snowflake Open Catalogを使用して、カタログとその基になるクラウドストレージへのアクセス制御を1箇所で構成および管理できます。内部カタログでは、認証情報ベンディングはデフォルトで有効になっています。外部カタログでは、以下のオプションのいずれかを使用して、認証情報ベンディングを有効にできます。
重要
外部カタログの認証情報・ベンディングを有効にする前に、カタログ内のテーブルのストレージ・ディレクトリの場所が重複していないことを確認してください。そうしないと、ユーザーがアクセス許可を持っていないテーブルにアクセスできてしまいます。詳細情報については、Credential vending for external catalogsを参照してください。
オープンカタログの使用¶
オープンカタログにサインインします。
左側のメニューで、 カタログ を選択します。
カタログのリストで、認証情報ベンディングを有効にするカタログを選択します。
Catalog Details タブで、Storage details の Credential Vending の下にある Edit アイコンを選択します。
表示されるポップアップから、 Enable を選択します。
Apache Polaris™ (Incubating) CLI¶
このセクションでは、Polaris CLI を使用して、外部カタログの認証情報ベンディングを有効にする方法について説明します。Apache Polaris (Incubating) CLI は、お客様がプログラムにより設定を更新するためのコマンドラインインターフェイスです。詳しい情報は、Apache Polaris (Incubating) CLIを参照してください。
外部カタログの認証情報ベンディングを有効にするには、Polaris CLI とのサービス接続を使用します。
ステップ1:必要な権限を持つサービス接続の準備¶
新しいサービス接続に割り当てるためのプリンシパルロールの作成。サービス接続に割り当てるプリンシパルロールがすでにある場合は,この手順をスキップしてください.
サービス接続の構成を実行し、クライアント ID とクライアントシークレットを保存して、後で Polaris CLI で使用します。すでにPolaris CLI を使用するためのサービス接続がある場合は、この手順をスキップしてください。
カタログロールの作成をターゲットカタログ(複数可)で行い、認証情報ベンディング販売を有効にするために必要な権限を付与します。認証情報ベンディングを有効にするために使用するカタログ・ロールがすでにある場合は、この手順をスキップしてください。
ターゲットカタログのセキュリティ。このロールをセキュリティで保護する場合、カタログロールに以下の権限の少なくとも1つが付与されていることを確認してください。
CATALOG_MANAGE_CONTENT
CATALOG_MANAGE_METADATA
CATALOG_WRITE_PROPERTIES
認証情報ベンディングを有効にするには、このオペレーションを実行するために使用されるサービス・プリンシパルに、これらの権限のいずれかが付与されている必要があります。
ステップ2: CLI コマンドの実行¶
CLI コマンドを実行するには、お使いの環境に該当する手順を参照してください。
[Linux または Mac ユーザーとして CLI コマンドを実行](#run-the-cli-command-as-linux or-mac-user)
Linux または Mac ユーザーとして CLI コマンドを実行¶
前提条件¶
CLI コマンドを実行する前に、お使いの環境に関する以下の前提条件を満たしている必要があります。
Linux または Mac で CLI コマンドを実行するには、以下の手順に従います。
以下のコマンドを実行して、Apache Polaris™ GitHub リポジトリをクローンします。
git clone https://github.com/apache/polaris.git
GitHub リポジトリをクローンする方法については、リポジトリのクローニング を参照してください。
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>
の場合は、オープンカタログアカウントのアカウント識別子を指定します。アカウントのリージョンやクラウドプラットフォームによっては、この識別子はそれ自体がアカウントのロケータになることもあれば(例えば、xy12345
)、追加のセグメントを含むこともあります。詳細については、識別子としてのアカウントロケーターの使用をご参照ください。CLIENT_ID
は保存したサービス接続のclient_idです。CLIENT_SECRET
は保存したサービス接続のclient_secretです。catalogName
は、認証情報ベンディングを有効にする外部カタログの名前です。
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がインストールされている必要があります。
以下のコード例を使って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
Dockerfileがあるフォルダから、以下のコマンドでPolaris CLI 用のdockerイメージをビルドします。
% docker build -t polaris-cli . 0.0s
dockerコンテナーを起動し、bashターミナルで以下のコマンドを実行します。
% docker run --rm -it polaris-cli /bin/bash root@ae4c8353b45f:/polaris#
以下のコードを実行してカタログを更新し、プロパティ
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"
以下のコードを実行して、パラメーター
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>"}}