Snowflake Postgres向けのSnowflakeトークン認証¶
Snowflakeでは、ユーザーがSnowflake Postgresインスタンスへのログインに使用する有効期限の短いアクセストークンを生成できます。インスタンスレベルでは、これはSnowflake認証と呼ばれ、以下の3つのステップ(詳細は後述)で実行されます。
Snowflake Postgres インスタンスで Snowflake 認証を有効にする。
Snowflake Postgres インスタンス上で、Postgres ユーザーと Snowflake ユーザーの間のマッピングを作成する。
マッピングされた Snowflake ユーザーが、Snowflake Postgresインスタンスへのログインに使用する有効期限の短いアクセストークンを生成します。
注釈
Snowflake Postgres向けのSnowflakeトークン認証は、Snowflakeの認証方法である:doc:`Snowflake OAuth </user-guide/oauth-snowflake-overview>`および:doc:`プログラムによるアクセストークン</user-guide/programmatic-access-tokens>`とは別の機能です。
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 インスタンスの所有者、および特定のインスタンスに対してUSAGE権限を付与されている Snowflake ユーザーは、Snowflake 認証が有効なインスタンス(設定方法は前述の:ref:`label-sfpg_snowflake_auth`を参照)において、パスワードとして使用する、有効期限の短いアクセストークンをインスタンスごとに自分で作成できます。
GENERATE_POSTGRES_ACCESS_TOKEN_FOR_USER 関数を使用します。
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`の値です。 |