使用 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 流分析要求配置托管标识以访问密钥保管库。 可以通过导航到左侧“配置”下的“托管标识”选项卡,将流分析作业配置为使用托管标识。
- 单击“配置”下的“托管标识”选项卡。
- 选择“切换标识”,然后选择要与作业一起使用的标识:系统分配的标识或用户分配的标识。
- 对于用户分配的标识,请选择用户分配标识所在的订阅,然后选择标识的名称。
- 查看并保存。
从 LetsEncrypt 下载证书
Azure 流分析是一个基于 librdkafka 的客户端,若要连接到 Confluent Cloud,需要 TLS 证书,Confluent Cloud 会将这些证书用于服务器身份验证。 Confluent Cloud 使用来自开放证书颁发机构 (CA) Let’s Encrypt 的 TLS 证书。
在 LetsEncrypt 网站上以 PEM 格式下载 ISRG 根 X1 证书。
配置密钥保管库权限
Azure 流分析与 Azure Key Vault 无缝集成,以访问身份验证和加密所需的存储机密。 Azure 流分析作业使用托管标识连接到 Azure 密钥保管库,以确保安全连接并避免机密外泄。 若要使用下载的证书,必须先将其上传到密钥保管库。
若要上传证书,必须具有对密钥保管库的“密钥保管库管理员”访问权限。 按照以下步骤授予管理员访问权限:
注意
必须具有“所有者”权限才能授予其他密钥保管库权限。
在密钥保管库中,选择“访问控制(IAM)”。
选择“添加”>“添加角色分配”,打开“添加角色分配”页面 。
使用以下配置分配角色:
设置 | 值 |
---|---|
角色 | 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 流分析作业读取密钥保管库中的机密,作业必须具有访问密钥保管库的权限。 使用以下步骤向流分析作业授予特殊权限:
在密钥保管库中,选择“访问控制(IAM)”。
选择“添加”>“添加角色分配”,打开“添加角色分配”页面 。
使用以下配置分配角色:
设置 | 值 |
---|---|
角色 | 密钥保管库机密用户 |
托管的标识 | 系统分配的托管标识或用户分配的托管标识的 Azure 流分析作业 |
成员 | <Azure 流分析作业的名称>或<用户分配的标识的名称> |
在流分析作业中配置 Kafka 输入
重要
若要将 Kafka 群集配置为输入,输入主题的时间戳类型应为 LogAppendTime。 Azure 流分析支持的唯一时间戳类型为 LogAppendTime。 Azure 流分析仅支持数字十进制格式。
在流分析作业中,选择“作业拓扑”下的“输入”
选择“添加输入”>“Kafka”以打开“Kafka 新建输入”配置边栏选项卡。
使用以下配置:
注意
对于 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。 |
使用者组 ID | 输入应属于的 Kafka 使用者组的名称。 如果未提供,将自动分配它。 |
事件序列化格式 | 传入数据流的序列化格式(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 证书的密钥保管库机密的名称 |
保存配置和测试连接
保存配置。 Azure 流分析作业使用提供的配置进行验证。 如果流分析可以连接到 Kafka 群集,则门户中会显示成功的连接。
限制
- 上传到密钥保管库的证书必须是 PEM 格式。
- Kafka 的最低版本必须是版本 0.10。
- Azure 流分析不支持使用 OAuth 或 SAML 单一登录 (SSO) 向 Confluent Cloud 进行身份验证。 必须通过 SASL_SSL 协议使用 API 密钥。
- 必须使用 Azure CLI 将证书作为机密上传到密钥保管库。 无法使用 Azure 门户将包含多行机密的证书上传到密钥保管库。
注意
有关使用 Azure 流分析 Kafka 输入的直接帮助,请联系 askasa@microsoft.com。