OAuth 简介¶
Snowflake 通过集成为客户端启用 OAuth。集成是一个 Snowflake 对象,它在 Snowflake 和第三方服务之间提供一个接口。管理员使用 安全集成 配置 OAuth,使支持 OAuth 的客户端能够将用户重定向到授权页面,并生成访问 Snowflake 的访问令牌(也可选择刷新令牌)。
Snowflake 支持使用以下选项之一的 OAuth 2.0 (https://oauth.net/2/) 协议进行身份验证和授权:
下表比较了 Snowflake OAuth 和 External OAuth:
类别 |
Snowflake OAuth |
External OAuth |
---|---|---|
修改客户端应用程序 |
必填 |
必填 |
客户端应用程序浏览器访问 |
必填 |
不需要 |
程序化客户端 |
需要浏览器 |
最佳选择 |
驱动程序属性 |
|
|
安全集成语法 |
|
|
OAuth 流 |
OAuth 2.0 代码授权流 |
客户端可与 External OAuth 服务器启动的任何 OAuth 流 |
审计 OAuth 登录¶
为了查询 Snowflake 用户的登录尝试,Snowflake 提供了登录历史记录:
当使用 OAuth 进行身份验证(成功或失败)时,输出中的 FIRST_AUTHENTICATION_FACTOR 列的值为 OAUTH_ACCESS_TOKEN。
专用连接¶
Snowflake 支持 External OAuth 与 Snowflake 服务的专用连接。
Snowflake OAuth 和 Tableau 可通过以下方式与 Snowflake 进行专有连接:
- Tableau Desktop:
从 Tableau 2020.4 开始,Tableau 包含一个嵌入式 OAuth 客户端,支持使用账户 URL 连接到 Snowflake,以实现与 Snowflake 服务的专有连接。
升级到 Tableau 2020.4 后,无需进一步配置,使用 AWS 或 Azure 的相应专用连接 URL 即可连接到 Snowflake。
- Tableau Server:
从 Tableau 2020.4 开始,用户可以选择配置 Tableau Server,使其使用嵌入式 OAuth 客户端与 Snowflake 连接,并使用账户 URL 实现与 Snowflake 服务的专用连接。
要使用此功能,请创建一个新的 自定义客户端 安全集成,并按照 Tableau 说明 (https://help.tableau.com/current/server/en-us/config_oauth_snowflake.htm) 操作。
- Tableau Online:
Tableau Online 不支持用于与 Snowflake 服务进行专用连接的 Snowflake 账户 URL,因为 Tableau Online 需要访问公共互联网。
有关 Tableau Online 何时支持用于与 Snowflake 服务进行专有连接的专有连接 Snowflake 账户 URLs 的详细信息,请联系 Tableau。
重要
要确定用于 Snowflake 服务专用连接的账户 URL,请调用 SYSTEM$GET_PRIVATELINK_CONFIG 函数。
- Looker:
目前,结合 Snowflake OAuth 和 Looker 需要访问公共互联网。因此,您无法通过到 Snowflake 服务的专用连接来使用 Snowflake OAuth 和 Looker。
有关更多信息,请参阅:
客户端、驱动程序和连接器¶
支持的客户端、驱动程序和连接器可以使用 OAuth 来验证用户登录凭据。
请注意以下事项:
必须将
authenticator
参数设置为oauth
,将token
参数设置为oauth_access_token
。将
token
值作为 URL 查询参数传递时,必须对oauth_access_token
值进行 URL 编码。将
token
值传递给属性对象(例如 JDBC 驱动程序)时,无需进行任何修改。
有关连接参数的详细信息,请参阅以下客户端、驱动程序或连接器的参考文档:
Go (https://godoc.org/github.com/snowflakedb/gosnowflake#hdr-Connection_Parameters)
.NET 驱动程序 (https://github.com/snowflakedb/snowflake-connector-net/blob/master/README.md#create-a-connection)
Client Redirect¶
Snowflake 支持将 Client Redirect 与 Snowflake OAuth 和 External OAuth 结合使用,包括将 Client Redirect 和 OAuth 与支持的 Snowflake 客户端结合使用。
有关更多信息,请参阅 重定向客户端连接。
复制¶
Snowflake 支持通过 Snowflake OAuth 和 External OAuth 安全集成从源账户到目标账户进行复制和故障转移/故障恢复。
有关详细信息,请参阅 跨多个账户复制安全集成和网络策略。