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}';

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

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

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

ALTER USER {postgres_user} RESET snowflake_user;

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

注釈

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

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

Snowflake Postgres instance owners and Snowflake users with the USAGE privilege granted on a given instance can create short-lived access tokens for themselves on a per-instance basis for instances that have Snowflake authorization enabled per the instructions above in Snowflake PostgresインスタンスでのSnowflake認証の有効化と無効化.

  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`の値です。