Snowflake Postgres 的 Snowflake 令牌身份验证

Snowflake 允许用户生成短期访问令牌,用于登录 Snowflake Postgres 实例。在实例层级,这被称为 Snowflake 授权,通过以下三个步骤完成:

  1. 为 Snowflake Postgres 实例启用 Snowflake 授权。

  2. 在 Snowflake Postgres 实例上,创建 Postgres 用户与 Snowflake 用户之间的映射。

  3. 映射的 Snowflake 用户随后会生成短期访问令牌,用于登录 Snowflake Postgres 实例。

备注

Snowflake Postgres 的令牌身份验证是一项独立功能,区别于 Snowflake OAuth编程访问令牌 Snowflake 身份验证方法。

在 Snowflake Postgres 实例上启用和禁用 Snowflake 授权

要在创建实例时启用 Snowflake 授权,请在 创建新实例 期间,于 Snowflake Postgres New instance 对话框中启用 Snowflake auth 选项。

要为现有实例启用或禁用 Snowflake 授权,请执行以下操作:

  1. 在导航菜单中,选择 Postgres

  2. 选择您的实例。

  3. 在右上角的 Manage 菜单中,从仪表板中该实例详细信息页面的 Manage 下拉菜单里选择 Enable Snowflake authDisable Snowflake auth 选项。

  4. 在显示的确认对话框中选择 EnableDisable

重要

在实例上禁用 Snowflake 授权仅会阻止 Snowflake 用户创建新的短期访问令牌。持有有效令牌的用户在令牌过期前仍可建立新连接,且现有连接将保持。

禁用 Snowflake 授权后,映射到 Snowflake 用户的 Postgres 用户将无法使用标准 Postgres 身份验证,直到按照下文 在 Postgres 用户和 Snowflake 用户之间创建映射 中的说明移除其映射。

在 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 实例并查询 SNOWFLAKE_AUTH.IDENTITY_MAPPINGPostgres 视图 视图。

备注

已建立 Snowflake 用户映射的 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. 在显示的 Regenerate token 对话框中,输入已映射到您的 Snowflake 用户的 Postgres 用户名称,然后选择 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 用户身份,其中 # 是在 USERS 视图 视图中看到的该用户的 user_id 值。