Snowflake 软件包 - Snowflake 软件包 包含可让您自动执行各种 Snowflake 操作的操作,例如数据库管理以及执行 SQL 语句和存储过程。

Automation 360

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 连接。

注: 使用 api://<AZURE_APP_CLIENT_ID>/session:role-any 作为设置 OAuth 连接时的范围。 替换 <AZURE_APP_CLIENT_ID> 为您的 Microsoft Azure 客户端 ID。

Snowflake 外部需要支持性配置,以通过 Microsoft Entra ID 验证来自 Control Room 的 OAuth 连接。 此配置允许 Control Room 用户连接到 Snowflake 并创建、操作和修改数据。 配置包括一个专用的 OAuth 角色、用户账户映射、额外权限和安全集成。

在身份验证过程中,Control Room 从 Microsoft Entra 获取 OAuth 令牌,并将其呈现给 Snowflake。Snowflake 根据配置验证该令牌,并将 Microsoft Entra 首选用户名映射到 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 中可用的存储过程。
断开连接 断开并关闭自动化会话。