Snowflake Postgres向けのSnowflakeトークン認証

Snowflakeでは、ユーザーがSnowflake Postgresインスタンスへのログインに使用する有効期限の短いアクセストークンを生成できます。インスタンスレベルでは、これはSnowflake認証と呼ばれ、以下の3つのステップ(詳細は後述)で実行されます。

  1. Snowflake Postgres インスタンスで Snowflake 認証を有効にする。

  2. Snowflake Postgres インスタンス上で、Postgres ユーザーと Snowflake ユーザーの間のマッピングを作成する。

  3. マッピングされた Snowflake ユーザーが、Snowflake Postgresインスタンスへのログインに使用する有効期限の短いアクセストークンを生成します。

注釈

Snowflake Postgres向けのSnowflakeトークン認証は、Snowflakeの認証方法である:doc:`Snowflake OAuth </user-guide/oauth-snowflake-overview>`および:doc:`プログラムによるアクセストークン</user-guide/programmatic-access-tokens>`とは別の機能です。

Snowflake PostgresインスタンスでのSnowflake認証の有効化と無効化

インスタンスの作成時にSnowflake認証を有効にするには、:doc:`新しいインスタンスの作成<postgres-create-instance>`時に、Snowflake Postgresの:ui:`New instance`作成画面で:ui:`Snowflake auth`オプションを有効にします。

既存のインスタンスのSnowflake認証を有効または無効にするには、以下の手順を実行します。

  1. ナビゲーションメニューで Postgres を選択します。

  2. インスタンスを選択します。

  3. ダッシュボードにあるインスタンスの詳細ページを開き、画面右上の:ui:`Manage`メニュー内にある:ui:`Manage`ドロップダウンメニューから、:ui:`Enable Snowflake auth`または:ui:`Disable Snowflake auth`のオプションを選択します。

  4. 表示された確認画面で:ui:`Enable`または:ui:`Disable`を選択します。

重要

インスタンスの Snowflake 認証を無効にしても、制限されるのはSnowflake ユーザーが有効期限の短いアクセストークンを新規作成することのみです。有効なトークンをすでに持っているユーザーは、その期限が切れるまで新しい接続を確立できますし、接続済みのセッションが切断されることもありません。

また、Snowflake 認証を無効にした後、Snowflake ユーザーにマッピングされている Postgres ユーザーは、そのマッピングを削除しない限り、通常の Postgres 認証を使ってログインすることはできません。マッピングの削除方法については、以下の:ref:`label-sfpg_token_auth_user_mappings`を参照してください。

PostgresユーザーとSnowflakeユーザー間のマッピングの作成

PostgresユーザーとSnowflakeユーザー間のマッピングを作成するには、`snowflake_admin`ユーザーでPostgresインスタンスにログインして以下を実行します。

ALTER USER {postgres_user} SET snowflake_user = '{snowflake_user}';
Copy

上記のステートメントで指定された``{postgres_user}``および``{snowflake_user}``の名前は、大文字と小文字を区別せずに読み取られます。大文字と小文字の区別が必要な場合は、名前を二重引用符で囲みます。たとえば、Caseyという名前のPostgresユーザーを、同じ名前のSnowflakeユーザーにマップするには、以下を実行します。

ALTER USER "Casey" SET snowflake_user = '"Casey"';
Copy

PostgresユーザーとSnowflakeユーザー間のマッピングを削除するには、`snowflake_admin`ユーザーでPostgresインスタンスにログインして以下を実行します。

ALTER USER {postgres_user} RESET snowflake_user;
Copy

PostgresユーザーとSnowflakeユーザー間にどのようなマッピングが存在するかを確認するには、`snowflake_admin`ユーザーでPostgresインスタンスにログインし、:ref:`label-sfpg_aut_identity_mapping_view`ビューをクエリします。

注釈

Snowflake ユーザーとマッピングされている Postgres ユーザーは、生成された有効期限の短いアクセストークンでのみログインが可能です。そうしたユーザーは Postgres パスワードを使用して接続することはできず、Postgres パスワードを変更することもできません。特定の Postgres ユーザーのために標準のパスワードログイン機能を再度有効にするには、そのPostgres ユーザーと Snowflake ユーザーとのマッピングを削除する必要があります。

マッピングされたSnowflakeユーザー用の有効期限の短いアクセストークンの作成

Snowflake Postgres インスタンスの所有者、および特定のインスタンスに対してUSAGE権限を付与されている Snowflake ユーザーは、Snowflake 認証が有効なインスタンス(設定方法は前述の:ref:`label-sfpg_snowflake_auth`を参照)において、パスワードとして使用する、有効期限の短いアクセストークンをインスタンスごとに自分で作成できます。

  1. ナビゲーションメニューで Postgres を選択します。

  2. インスタンスを選択します。

  3. 右上の Manage メニューで Regenerate token を選択します。

  4. 表示された:ui:`Regenerate token`画面で、SnowflakeユーザーにマッピングされたPostgresユーザーの名前を入力し、:ui:`Acknowledge & continue`を選択します。

  5. 表示された有効期限の短いアクセストークン、またはPostgres URIをコピーして、15分以内にSnowflake Postgresインスタンスへの新しい接続を確立するために使用します。

SNOWFLAKE_AUTH.IDENTITY_MAPPINGPostgresビュー

このSnowflake Postgresビューを使用して、インスタンス上のPostgresユーザーとSnowflakeユーザー間のすべてのマッピングのリストをクエリできます。

注釈

このビューはSnowflake Postgresインスタンス内でのみクエリでき、Snowflakeから直接クエリすることはできません。

列名

データ型

説明

postgres_role

name

マッピングされたPostgresユーザーの名前

snowflake_identity

text

USER:# 形式のSnowflakeユーザーID。# は:doc:`/sql-reference/account-usage/users`ビューに表示されるマッピングされたSnowflakeユーザーの`user_id`の値です。