外部カタログの認証情報供給を有効にする

認証情報ベンディングを使用すると、Snowflake Open Catalogを使用して、カタログとその基になるクラウドストレージへのアクセス制御を1箇所で構成および管理できます。内部カタログでは、認証情報ベンディングはデフォルトで有効になっています。外部カタログでは、以下のオプションのいずれかを使用して、認証情報ベンディングを有効にできます。

重要

外部カタログの認証情報・ベンディングを有効にする前に、カタログ内のテーブルのストレージ・ディレクトリの場所が重複していないことを確認してください。そうしないと、ユーザーがアクセス許可を持っていないテーブルにアクセスできてしまいます。詳細情報については、Credential vending for external catalogsを参照してください。

オープンカタログの使用

  1. オープンカタログにサインインします。

  2. 左側のメニューで、 カタログ を選択します。

  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. サービス接続の構成を実行し、クライアント ID とクライアントシークレットを保存して、後で Polaris CLI で使用します。すでにPolaris CLI を使用するためのサービス接続がある場合は、この手順をスキップしてください。

  3. カタログロールの作成をターゲットカタログ(複数可)で行い、認証情報ベンディング販売を有効にするために必要な権限を付与します。認証情報ベンディングを有効にするために使用するカタログ・ロールがすでにある場合は、この手順をスキップしてください。

  4. ターゲットカタログのセキュリティ。このロールをセキュリティで保護する場合、カタログロールに以下の権限の少なくとも1つが付与されていることを確認してください。

    • 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
    
    Copy

    GitHub リポジトリをクローンする方法については、リポジトリのクローニング を参照してください。

  2. CLI コマンド用に以下の環境変数を定義します。

    export CLIENT_ID=<client-id>
    export CLIENT_SECRET=<client-secret>
    export sfAccountUrl=https://<open_catalog_account_identifier>.snowflakecomputing.com
    export catalogName=<my-catalog>
    
    Copy

    条件:

    • sfAccountUrl 配下の通りです。 URL: https://<open_catalog_account_identifier>.snowflakecomputing.com``<open_catalog_account_identifier> の場合は、オープンカタログアカウントのアカウント識別子を指定します。アカウントのリージョンやクラウドプラットフォームによっては、この識別子はそれ自体がアカウントのロケータになることもあれば(例えば、 xy12345)、追加のセグメントを含むこともあります。詳細については、識別子としてのアカウントロケーターの使用をご参照ください。

    • CLIENT_ID は保存したサービス接続のclient_idです。

    • CLIENT_SECRET は保存したサービス接続のclient_secretです。

    • catalogName は、認証情報ベンディングを有効にする外部カタログの名前です。

  3. 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"
    
    Copy

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
    
    Copy
  2. Dockerfileがあるフォルダから、以下のコマンドでPolaris CLI 用のdockerイメージをビルドします。

    % docker build -t polaris-cli .                                                                                                                 0.0s
    
    Copy
  3. dockerコンテナーを起動し、bashターミナルで以下のコマンドを実行します。

    % docker run --rm -it polaris-cli /bin/bash
    root@ae4c8353b45f:/polaris# 
    
    Copy
  4. 以下のコードを実行してカタログを更新し、プロパティ enable.credential.vendingtrue にセットします。

    % 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"
    
    Copy
  5. 以下のコードを実行して、パラメーター 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>"}}
    
    Copy