Azure 流分析的 Kafka 输出(预览版)

Azure 流分析允许以生成者身份直接连接到 Kafka 群集以输出数据。 该解决方案是低代码的,完全由 Microsoft 的 Azure 流分析团队管理,因此可使其符合业务合规性标准。 ASA Kafka 输出向后兼容,并且支持从版本 0.10 开始具有最新客户端版本的所有版本。 用户可以使用公共终结点连接到 VNET 和 Kafka 群集内的 Kafka 群集,具体取决于配置。 配置依赖于现有的 Kafka 配置约定。 支持的压缩类型为 None、Gzip、Snappy、LZ4 和 Zstd。

步骤

本文介绍如何将 Kafka 设置为 Azure 流分析的输出。 有六个步骤:

  1. 创建 Azure 流分析作业。
  2. 如果使用 mTLS 或 SASL_SSl 安全协议,请将 Azure 流分析作业配置为使用托管标识。
  3. 如果使用 mTLS 或 SASL_SSl 安全协议,请配置 Azure Key Vault。
  4. 将证书作为机密上传到 Azure Key Vault 中。
  5. 授予 Azure 流分析访问已上传的证书的权限。
  6. 在 Azure 流分析作业中配置 Kafka 输出。

注意

根据 Kafka 群集的配置方式以及所用 Kafka 群集的类型,上述某些步骤可能不适用于你。 示例:如果你使用的是 Confluent Cloud Kafka,则无需上传证书即可使用 Kafka 连接器。 如果 Kafka 群集位于虚拟网络 (VNET) 内部或防火墙后面,则可能需要配置 Azure 流分析作业,以使用专用链接或专用网络配置访问 Kafka 主题。

配置

下表列出了用于创建 Kafka 输出的属性名称和说明:

属性名称 说明
输出别名 查询中使用的友好名称,用于引用输出
启动服务器地址 用于建立与 Kafka 群集的连接的主机/端口对列表。
Kafka 主题 已命名、排序和分区的数据流,允许对消息进行发布-订阅和事件驱动的处理。
安全协议 你希望如何连接到 Kafka 群集。 Azure 流分析支持 mTLS、SASL_SSL、SASL_PLAINTEXT 或 None。
事件序列化格式 传出数据流的序列化格式(JSON、CSV、Avro)。
分区键 Azure 流分析使用舍入分区分配分区。
Kafka 事件压缩类型 用于传出数据流的压缩类型,例如 Gzip、Snappy、Lz4、Zstd 或 None。

显示如何为流分析作业配置 kafka 输出的屏幕截图。

身份验证和加密

可以使用四种类型的安全协议连接到 Kafka 群集:

注意

对于 SASL_SSL 和 SASL_PLAINTEXT,Azure 流分析仅支持 PLAIN SASL 机制。 必须使用 Azure CLI 将证书作为机密上传到密钥保管库。

属性名称 说明
mTLS 加密和身份验证。 支持 PLAIN、SCRAM-SHA-256 和 SCRAM-SHA-512 安全机制。
SASL_SSL 它结合了两种不同的安全机制-SASL(简单身份验证和安全层)和 SSL(安全套接字层),以确保身份验证和加密都已到位进行数据传输。 SASL_SSL 协议支持 PLAIN、SCRAM-SHA-256 和 SCRAM-SHA-512 安全机制。
SASL_PLAINTEXT 使用用户名和密码进行标准身份验证,无需加密
无身份验证和加密。

重要

Confluent Cloud 支持使用 API 密钥、OAuth 或 SAML 单一登录 (SSO) 进行身份验证。 Azure 流分析不支持 OAuth 或 SAML 单一登录 (SSO) 身份验证。 你可以使用 API 密钥连接到 Confluent Cloud,该密钥通过 SASL_SSL 安全协议具有主题级别访问权限。

有关连接到 Confluence Cloud kakfa 的分步教程,请访问文档:

密钥保管库集成

注意

将信任存储证书与 mTLS 或 SASL_SSL 安全协议配合使用时,必须为 Azure 流分析作业配置 Azure Key Vault 和托管标识。 检查密钥保管库的网络设置,确保选中“允许来自所有网络的公共访问”。 假设密钥保管库位于 VNET 中,或仅允许来自特定网络的访问。 在这种情况下,必须将 ASA 作业注入包含密钥保管库的 VNET 或将 ASA 作业注入 VNET,然后使用服务终结点将密钥保管库连接到包含作业的 VNET。

Azure 流分析与 Azure Key Vault 无缝集成,以便在使用 mTLS 或 SASL_SSL 安全协议时访问身份验证和加密所需的存储机密。 Azure 流分析作业使用托管标识连接到 Azure 密钥保管库,以确保安全连接并避免机密外泄。 证书作为机密存储在密钥保管库中,并且必须采用 PEM 格式。

使用权限配置密钥保管库

可以按照文档快速入门:使用 Azure 门户创建密钥保管库创建密钥保管库资源。若要上传证书,必须对密钥保管库具有“密钥保管库管理员”访问权限。 请按照以下步骤授予管理员访问权限。

注意

必须具有“所有者”权限才能授予其他密钥保管库权限。

  1. 选择“访问控制 (IAM)”。

  2. 选择“添加”>“添加角色分配”,打开“添加角色分配”页面 。

  3. 使用以下配置分配角色:

设置
角色 Key Vault 管理员
将访问权限分配到 用户、组或服务主体
成员 <帐户信息或电子邮件>

通过 Azure CLI 将证书上传到密钥保管库

重要

必须对密钥保管库具有“密钥保管库管理员”权限,此命令才能正常工作。必须将证书作为机密上传。 必须使用 Azure CLI 将证书作为机密上传到密钥保管库。 当用于身份验证的证书过期时,Azure 流分析作业将失败。 若要解决此问题,必须更新/替换密钥保管库中的证书,并重启 Azure 流分析作业。

确保已使用 PowerShell 在本地配置 Azure CLI。 可以访问此页面以获取有关设置 Azure CLI 的指导:Azure CLI 入门

登录到 Azure CLI:

az login

连接到包含密钥保管库的订阅:

az account set --subscription <subscription name>

以下命令可以将证书作为机密上传到密钥保管库:

<your key vault> 是要将证书上传到的密钥保管库的名称。 <name of the secret> 是要为机密提供的任何名称,以及名称在密钥保管库中的显示方式。 <file path to certificate> 是证书所在的路径。 可以右键单击并复制证书的路径。

az keyvault secret set --vault-name <your key vault> --name <name of the secret> --file <file path to certificate>

例如:

az keyvault secret set --vault-name mykeyvault --name kafkasecret --file C:\Users\Downloads\certificatefile.pem

配置托管标识

Azure 流分析要求配置托管标识以访问密钥保管库。 可以通过导航到左侧“配置”下的“托管标识”选项卡,将 ASA 作业配置为使用托管标识。

显示如何为 ASA 作业配置托管标识的屏幕截图。

  1. 单击“配置”下的“托管标识”选项卡。
  2. 选择“切换标识”,然后选择要与作业配合使用的标识:系统分配的标识或用户分配的标识。
  3. 对于用户分配的标识,请选择用户分配标识所在的订阅,然后选择标识的名称。
  4. 查看并保存

向流分析作业授予访问密钥保管库中证书的权限�

若要使 Azure 流分析作业读取密钥保管库中的机密,作业必须具有访问密钥保管库的权限。 使用以下步骤向流分析作业授予特殊权限:

  1. 选择“访问控制 (IAM)”。

  2. 选择“添加”>“添加角色分配”,打开“添加角色分配”页面 。

  3. 使用以下配置分配角色:

设置
角色 密钥保管库机密用户
托管的标识 系统分配的托管标识或用户分配的托管标识的 Azure 流分析作业
成员 <Azure 流分析作业的名称>或<用户分配的标识的名称>

VNET 集成

如果 Kafka 位于虚拟网络 (VNET) 内或防火墙后面,则必须配置 Azure 流分析作业以访问 Kafka 主题。

限制

  • 将 Azure 流分析作业配置为使用 VNET/SWIFT 时,作业必须至少配置六 (6) 个流单元或一 (1) 个 V2 流单元。
  • 将 mTLS 或 SASL_SSL 与 Azure Key Vault 配合使用时,必须将 Java 密钥存储转换为 PEM 格式。
  • 可以配置 Azure Stream Analytics 连接的 Kafka 最低版本为 0.10。
  • Azure 流分析不支持使用 OAuth 或 SAML 单一登录 (SSO) 对 Confluent Cloud 进行身份验证。 必须通过 SASL_SSL 协议使用 API 密钥

注意

有关使用 Azure 流分析 Kafka 输出的直接帮助,请联系 askasa@microsoft.com

后续步骤