你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将 Kafka 中的数据流式传输到 Azure 流分析(预览版)

Kafka 是一个分布式流式处理平台,用于发布和订阅记录流。 Kafka 旨在允许应用在记录发生时处理记录。 它是由 Apache Software Foundation 开发的开源系统,采用 Java 和 Scala 编写。

以下是主要用例:

  • Messaging
  • 网站活动跟踪
  • 指标
  • 日志聚合
  • 流处理

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 群集配置为输入,输入主题的时间戳类型应为 LogAppendTime。 Azure 流分析支持的唯一时间戳类型为 LogAppendTime。 Azure 流分析仅支持数字十进制格式。

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

屏幕截图显示如何为流分析作业配置 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 虚拟网络中运行 Azure 流分析作业文档。

限制

  • 将 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

后续步骤