配置 Snowpipe Streaming

Snowpipe Streaming 属性

配置 profile.json 文件中的 API 连接设置。本主题中描述了这些属性。

如 Java 示例 (https://github.com/snowflakedb/snowflake-ingest-java/blob/master/src/main/java/net/snowflake/ingest/streaming/example/SnowflakeStreamingIngestExample.java) (GitHub) 所示,您可以通过指定文件路径作为变量 PROFILE_PATH 的输入,从 profile.json 加载设置。

所需属性

authorization_type

配置用户的身份验证和授权方式。您可以使用以下方法之一:

  • JWT:使用 JSON 网络令牌 (JWT) 进行密钥对身份验证。这是默认方法。若未配置 authorization_type,则使用默认方法 JWT。配置以下 private_key,用于密钥对身份验证:

    • private_key 用于对用户进行身份验证的私钥。仅包含密钥,不包含标头或页脚。如果密钥分为多行,请删除换行符。

      您可以提供未加密的密钥,也可以提供加密的密钥并提供 snowflake.private.key.passphrase 参数,允许 Snowflake 解密密钥。当且仅当 snowflake.private.key 参数值已加密时才使用此参数。

  • OAuth:Snowflake OAuth。此选项仅适用于 Snowflake Ingest SDK 2.0.3 版本及更高版本。在 profile.json 文件中为 Snowflake OAuth 配置以下参数:

    • oauth_client_id:OAuth 集成的客户端 ID。

    • oauth_client_secret:OAuth 集成的客户端密钥。

    • oauth_refresh_token:OAuth 集成的有效刷新令牌。

url

URL 用于访问您的 Snowflake 账户。URL 必须包括您的 账户标识符。请注意,协议 (https://) 和端口号是可选的。

请注意,如果您已使用 Snowflake Ingest SDK 并在 profile.json 文件中设置了 hostschemeport 属性,则不需要 url

user

Snowflake 账户的用户登录名。

可选属性

snowflake.private.key.passphrase

密钥加密时用于解密私钥的密码。有关信息,请参阅 ` 使用密钥对身份验证和密钥轮换 `_ (本主题内容)。

role

连接到 Snowflake 后用于会话的访问控制角色。

请注意,Snowflake Ingest SDK 2.0.3 版本及更高版本的 role 属性是可选的。在早期 Ingest SDK 版本中,该属性为必选项。

身份验证与授权

使用 Snowflake OAuth

有了 Snowflake Ingest SDK 2.0.3 版本及更高版本,或 Snowflake Connector for Kafka 2.1.2 版本及更高版本,您可以使用 Snowflake OAuth 作为授权方法。

按照 工作流程 创建 Snowflake OAuth 集成并调用 OAuth 端点,以请求获取授权代码并刷新访问令牌。 令牌请求的响应包含 oauth_refresh_token。 创建 Snowflake OAuth 集成后,运行 SYSTEM$SHOW_OAUTH_CLIENT_SECRETS 函数来获得 oauth_client_idoauth_client_secret

如需启用 Snowflake OAuth,请在 profile.json 文件中将 authorization_type 设为 OAuth,并使用上面获得的参数填写字段 oauth_refresh_tokenoauth_client_idoauth_client_secret

使用密钥对身份验证和密钥轮换

API 调用依赖使用 JSON 网络令牌 (JWT) 进行的密钥对身份验证。JWTs 使用通过 RSA 加密的公钥/私钥对签名。此身份验证方法需要 2048 位(最低) RSA 密钥对。使用 OpenSSL 生成公钥-私钥对。公钥分配给属性文件中定义的 Snowflake 用户。

完成 密钥对轮换 中所述的密钥对身份验证说明。将整个私钥复制并粘贴到属性文件中的 snowflake.private.key 字段。保存文件。

有关创建指纹并生成 JWT 令牌的示例,请参阅 Java 示例

接下来,评估 外部化密钥 建议(本主题内容)。

外部化密钥

Snowflake 强烈建议将私钥等密钥外部化,并以加密形式存储或存储在密钥管理服务中,例如 AWS Key Management Service (KMS)、Microsoft Azure Key Vault,或 HashiCorp Vault。

有关更多信息,请参阅 Confluent 对此 服务 (https://docs.confluent.io/current/connect/security.html#externalizing-secrets) 的描述。

示例

  • 有关如何使用客户端 SDK 构建 Snowpipe Streaming 应用程序的简单示例,请参阅 此 Java 文件 (https://github.com/snowflakedb/snowflake-ingest-java/blob/master/src/main/java/net/snowflake/ingest/streaming/example/SnowflakeStreamingIngestExample.java) (GitHub)。

  • 快速入门示例:

语言: 中文