Snowflake 软件包 包含可让您自动执行各种 Snowflake 操作的操作,例如数据库管理以及执行 SQL 语句和存储过程。
概览
Snowflake 软件包操作可用于通过 SQL 语句自动执行 Snowflake 数据库表中的行管理等工作流。 该软件包还包含用于执行 SQL 语句和存储过程的操作。 该 Snowflake 软件包使用基于 Microsoft Entra 的 OAuth 连接来验证 Control Room 和 Snowflake 平台之间的连接。
身份验证
该 Snowflake 软件包使用基于 OAuth 的身份验证,并支持 Snowflake OAuth 和外部 OAuth。 外部 OAuth 方法支持 Microsoft Entra、Okta 和 PingFederate。
以下部分说明使用 Microsoft Entra 进行 Snowflake 身份验证。 OAuth 连接需要在 Microsoft Azure 中为 Microsoft Entra 租户提供企业应用程序。 此应用程序用作身份管理器,以验证 Control Room 和 Snowflake 之间的连接。 在 Microsoft Azure 门户中设置应用程序后,使用客户端 ID 和客户端密钥来设置 OAuth 连接。 有关设置 OAuth 连接的更多信息,请参阅 创建 OAuth 连接。
Snowflake 外部需要支持性配置,以通过 Microsoft Entra ID 验证来自 Control Room 的 OAuth 连接。 此配置允许 Control Room 用户连接到 Snowflake 并创建、操作和修改数据。 配置包括一个专用的 OAuth 角色、用户账户映射、额外权限和安全集成。
在身份验证过程中,Control Room 从 Microsoft Entra 获取 OAuth 令牌,并将其呈现给 Snowflake。Snowflake 根据配置验证该令牌,并将 Microsoft Entra 首选用户名映射到 Snowflake 登录名。
-- 0. (Optional) Use a powerful role to run setup
USE ROLE ACCOUNTADMIN;
--------------------------------------------------
-- 1. Create Role
--------------------------------------------------
CREATE ROLE IF NOT EXISTS <OAUTH_ROLE_NAME>;
--------------------------------------------------
-- 2. Create User (MUST match Azure token claim)
--------------------------------------------------
CREATE USER IF NOT EXISTS <SNOWFLAKE_USER_NAME>
LOGIN_NAME = '<azure_upn_or_preferred_username>'
DISPLAY_NAME = '<Display Name>'
DEFAULT_ROLE = <OAUTH_ROLE_NAME>
MUST_CHANGE_PASSWORD = FALSE;
--------------------------------------------------
-- 3. Grant Role to User
--------------------------------------------------
GRANT ROLE <OAUTH_ROLE_NAME> TO USER <SNOWFLAKE_USER_NAME>;
--------------------------------------------------
-- 4. Grant Privileges to Role
--------------------------------------------------
GRANT USAGE ON DATABASE <DATABASE_NAME> TO ROLE <OAUTH_ROLE_NAME>;
GRANT USAGE ON SCHEMA <DATABASE_NAME>.<SCHEMA_NAME> TO ROLE <OAUTH_ROLE_NAME>;
-- Add further grants as needed, e.g.:
-- GRANT SELECT ON ALL TABLES IN SCHEMA <DATABASE_NAME>.<SCHEMA_NAME> TO ROLE <OAUTH_ROLE_NAME>;
-- GRANT INSERT, UPDATE ON ALL TABLES IN SCHEMA <DATABASE_NAME>.<SCHEMA_NAME> TO ROLE <OAUTH_ROLE_NAME>;
--------------------------------------------------
-- 5. Create OAuth Integration (Azure AD / Entra ID)
--------------------------------------------------
CREATE OR REPLACE SECURITY INTEGRATION <INTEGRATION_NAME>
TYPE = EXTERNAL_OAUTH
ENABLED = TRUE
EXTERNAL_OAUTH_TYPE = AZURE
EXTERNAL_OAUTH_ISSUER = 'https://login.microsoftonline.com/<AZURE_TENANT_ID>/v2.0'
EXTERNAL_OAUTH_JWS_KEYS_URL = 'https://login.microsoftonline.com/<AZURE_TENANT_ID>/discovery/v2.0/keys'
EXTERNAL_OAUTH_AUDIENCE_LIST = ('<AZURE_APP_CLIENT_ID>')
EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = 'preferred_username'
EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'LOGIN_NAME';
--------------------------------------------------
-- 6. (Optional) Enable ANY ROLE MODE
--------------------------------------------------
-- Allows the OAuth session to activate any role granted to the user,
-- not just DEFAULT_ROLE. Only enable if the connecting application
-- needs to switch roles dynamically.
ALTER SECURITY INTEGRATION <INTEGRATION_NAME>
SET EXTERNAL_OAUTH_ANY_ROLE_MODE = 'ENABLE';
--------------------------------------------------
-- 7. Verify setup
--------------------------------------------------
DESC SECURITY INTEGRATION <INTEGRATION_NAME>;
将占位符替换为适当的参数,并在 Snowflake 中执行脚本以创建配置。
Snowflake 软件包中的操作
| 操作 | 描述 |
|---|---|
| Snowflake 软件包 中的连接 操作 | 安全地连接到 Snowflake 并验证自动化会话。 |
| Snowflake 软件包 中的插入行 操作 | 使用插入 SQL 语句向 Snowflake 数据库表中插入一行或多行。 |
| 在 Snowflake 软件包 中选择行 操作 | 使用选择 SQL 语句检索 Snowflake 数据库行的详细信息。 |
| Snowflake 软件包 中的更新行 操作 | 更新 Snowflake 数据库表中的一行或多行。 |
| Delete rows 操作 in Snowflake 软件包 | 删除 Snowflake 数据库表中的一行或多行。 |
| 在 Snowflake 软件包 中执行 DDL 操作 | 在 Snowflake 中运行数据定义语言 (DDL) 语句以创建、修改和删除数据库对象。 |
| 执行存储过程 | 使用指定的输入参数运行在 Snowflake 中可用的存储过程。 |
| 断开连接 | 断开并关闭自动化会话。 |