使用 Azure 流分析从 Confluent Cloud Kafka 流式传输数据

本文介绍如何将 Azure 流分析作业直接连接到 Confluent Cloud Kafka 作为输入。

先决条件

  • 拥有一个 Confluent Cloud Kafka 群集。
  • Kafka 群集的 API 密钥文件包含用作用户名的 API 密钥、用作密码的 API 机密和启动服务器地址。
  • 拥有一个 Azure 流分析作业。 可以按照文档创建 Azure 流分析作业:快速入门:使用 Azure 门户创建流分析作业
  • Confluent Cloud Kafka 群集必须可公开访问,并且不能位于防火墙后或在虚拟网络中受到保护。
  • Confluent Cloud Kafka 群集的主题的时间戳类型应为 LogAppendTime。 Confluent Cloud Kafka 主题的默认值为 CreateTime。
  • 拥有一个现有密钥保管库。 可以按照快速入门:使用 Azure 门户创建 Key Vault 文档来创建密钥保管库资源

将 Azure 流分析配置为使用托管标识

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

Screenshot showing how to configure managed identity for an ASA job.

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

从 LetsEncrypt 下载证书

Azure 流分析是一个基于 librdkafka 的客户端,若要连接到 Confluent Cloud,需要 TLS 证书,Confluent Cloud 会将这些证书用于服务器身份验证。 Confluent Cloud 使用来自开放证书颁发机构 (CA) Let’s Encrypt 的 TLS 证书。

LetsEncrypt 网站上以 PEM 格式下载 ISRG 根 X1 证书

Screenshot showing the certificate to download from the website of lets encrypt.

配置密钥保管库权限

Azure 流分析与 Azure Key Vault 无缝集成,以访问身份验证和加密所需的存储机密。 Azure 流分析作业使用托管标识连接到 Azure 密钥保管库,以确保安全连接并避免机密外泄。 若要使用下载的证书,必须先将其上传到密钥保管库。

若要上传证书,必须具有对密钥保管库的“密钥保管库管理员”访问权限。 按照以下步骤授予管理员访问权限:

注意

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

  1. 在密钥保管库中,选择“访问控制(IAM)”。

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

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

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

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

重要

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

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

登录到 Azure CLI:

az cloud set -n AzureChinaCloud
az login

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

az account set --subscription <subscription name>

例如:

az account set --subscription mymicrosoftsubscription

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

<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 confluentsecret --file C:\Users\Downloads\isrgrootx1.pem

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

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

  1. 在密钥保管库中,选择“访问控制(IAM)”。

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

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

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

在流分析作业中配置 Kafka 输入

重要

若要将 Kafka 群集配置为输入,输入主题的时间戳类型应为 LogAppendTime。 Azure 流分析支持的唯一时间戳类型为 LogAppendTime。 Azure 流分析仅支持数字十进制格式。

  1. 在流分析作业中,选择“作业拓扑”下的“输入”

  2. 选择“添加输入”>“Kafka”以打开“Kafka 新建输入”配置边栏选项卡。

  3. 使用以下配置:

注意

对于 SASL_SSL 和 SASL_PLAINTEXT,Azure 流分析仅支持 PLAIN SASL 机制。

属性名称 说明
输入别名 查询中使用的易记名称,用于引用输入
启动服务器地址 用于建立与 Confluent Cloud Kafka 群集的连接的主机/端口对列表。 示例:pkc-56d1g.chinanorth3.azure.confluent.cloud:9092
Kafka 主题 Confluent Cloud Kafka 群集中 Kafka 主题的名称。
安全协议 选择“SASL_SSL”。 支持的机制为 PLAIN。
事件序列化格式 传入数据流的序列化格式(JSON、CSV、Avro、Parquet、Protobuf)。

重要

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

使用以下配置:

设置
用户名 Confluent Cloud API 密钥
密码 Confluent Cloud API 机密
密钥保管库名称 具有上传证书的 Azure 密钥保管库的名称
信任存储证书 保存 ISRG 根 X1 证书的密钥保管库机密的名称

Screenshot showing how to configure kafka input for a stream analytics job.

保存配置和测试连接

保存配置。 Azure 流分析作业使用提供的配置进行验证。 如果流分析可以连接到 Kafka 群集,则门户中会显示成功的连接。

Screenshot showing successful test connection confluent kafka input.

限制

  • 上传到密钥保管库的证书必须是 PEM 格式。
  • Kafka 的最低版本必须是版本 0.10。
  • Azure 流分析不支持使用 OAuth 或 SAML 单一登录 (SSO) 向 Confluent Cloud 进行身份验证。 必须通过 SASL_SSL 协议使用 API 密钥。
  • 必须使用 Azure CLI 将证书作为机密上传到密钥保管库。 无法使用 Azure 门户将包含多行机密的证书上传到密钥保管库。

注意

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

后续步骤