Azure 流分析的 Kafka 输出
Azure 流分析允许以生成者身份直接连接到 Kafka 群集以输出数据。 该解决方案是低代码的,完全由 Microsoft 的 Azure 流分析团队管理,因此可使其符合业务合规性标准。 Kafka 输出向后兼容,并且支持从版本 0.10 开始具有最新客户端版本的所有版本。 用户可以使用公共终结点连接到虚拟网络和 Kafka 群集内的 Kafka 群集,具体取决于配置。 配置依赖于现有的 Kafka 配置约定。 支持的压缩类型为 None、Gzip、Snappy、LZ4 和 Zstd。
步骤
本文介绍如何将 Kafka 设置为 Azure 流分析的输出。 有六个步骤:
- 创建 Azure 流分析作业。
- 如果使用 mTLS 或 SASL_SSl 安全协议,请将 Azure 流分析作业配置为使用托管标识。
- 如果使用 mTLS 或 SASL_SSl 安全协议,请配置 Azure Key Vault。
- 将证书作为机密上传到 Azure Key Vault 中。
- 授予 Azure 流分析访问已上传的证书的权限。
- 在 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 群集:
注意
对于 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 Kafka 的分步教程,请访问文档:
- Confluent Cloud kafka 输入:将 Confluence Cloud Kafka 中的数据流式传输到 Azure 流分析
- Confluent Cloud kafka 输出:将 Azure 流分析中的数据流式传输到 Confluence Cloud
密钥保管库集成
注意
将信任存储证书与 mTLS 或 SASL_SSL 安全协议配合使用时,必须为 Azure 流分析作业配置 Azure Key Vault 和托管标识。 检查密钥保管库的网络设置,确保选中“允许来自所有网络的公共访问”。 假设密钥保管库位于 VNET 中,或仅允许来自特定网络的访问。 在这种情况下,必须将 ASA 作业注入包含密钥保管库的 VNET 或将 ASA 作业注入 VNET,然后使用服务终结点将密钥保管库连接到包含作业的 VNET。
Azure 流分析与 Azure Key Vault 无缝集成,以便在使用 mTLS 或 SASL_SSL 安全协议时访问身份验证和加密所需的存储机密。 Azure 流分析作业使用托管标识连接到 Azure 密钥保管库,以确保安全连接并避免机密外泄。 证书作为机密存储在密钥保管库中,并且必须采用 PEM 格式。
使用权限配置密钥保管库
可以按照文档快速入门:使用 Azure 门户创建密钥保管库创建密钥保管库资源。若要上传证书,必须对密钥保管库具有“密钥保管库管理员”访问权限。 请按照以下步骤授予管理员访问权限。
注意
必须具有“所有者”权限才能授予其他密钥保管库权限。
选择“访问控制 (IAM)”。
选择“添加”>“添加角色分配”,打开“添加角色分配”页面 。
使用以下配置分配角色:
设置 | 值 |
---|---|
角色 | 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 作业配置为使用托管标识。
- 在左侧菜单上,选择“配置”下的“托管标识”选项卡。
- 选择“切换标识”,然后选择要与作业配合使用的标识:系统分配的标识或用户分配的标识。
- 对于用户分配的标识,请选择用户分配标识所在的订阅,然后选择标识的名称。
- 查看并保存。
向流分析作业授予访问密钥保管库中的证书的权限
若要使 Azure 流分析作业读取密钥保管库中的机密,作业必须具有访问密钥保管库的权限。 使用以下步骤向流分析作业授予特殊权限:
选择“访问控制 (IAM)”。
选择“添加”>“添加角色分配”,打开“添加角色分配”页面 。
使用以下配置分配角色:
设置 | 值 |
---|---|
角色 | 密钥保管库机密用户 |
托管的标识 | 系统分配的托管标识或用户分配的托管标识的 Azure 流分析作业 |
成员 | <Azure 流分析作业的名称>或<用户分配的标识的名称> |
虚拟网络集成
如果 Kafka 位于虚拟网络内或防火墙后面,则必须配置 Azure 流分析作业以访问 Kafka 主题。
限制
- 将 Azure 流分析作业配置为使用虚拟网络/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。