将 Kafka 中的数据流式传输到Azure 流分析

Apache Kafka 是一个开源的分布式流媒体平台,应用程序利用它发布和订阅记录流。 它常用于消息传递、网站活动跟踪、指标、日志聚合和流处理。

如果你的数据流经Kafka集群,你可以直接将Azure 流分析连接到这些集群,从而导入和处理数据,而无需构建自定义消费者。 Kafka 输入为低代码,由 Microsoft 完全管理以符合业务合规标准,并与客户端版本从 0.10 起向后兼容。 您可以通过现有的 Kafka 配置约定,连接到虚拟网络内或公共端点的 Kafka 集群。 支持的压缩类型为 None、Gzip、Snappy、LZ4 和 Zstd。

本文将向您展示如何配置Kafka集群作为Azure 流分析作业的输入源。

把卡夫卡设为输入源

本文介绍如何将 Kafka 设置为Azure 流分析的输入源。 其中介绍了以下步骤:

  1. 创建 Azure 流分析 任务。
  2. 如果使用的是 mTLS 或SASL_SSL安全协议,请将Azure 流分析作业配置为使用托管标识。
  3. 如果你使用mTLS或SASL_SSL安全协议,请配置Azure 密钥保管库。
  4. 将证书作为秘密上传到 Azure 密钥保管库。
  5. 授予Azure 流分析访问上传的证书的权限。
  6. 在Azure 流分析作业中配置 Kafka 输入。

注意

根据你的Kafka集群配置方式和你使用的Kafka集群类型,有些步骤可能不适用于你。 例如,如果你使用Confluent Cloud Kafka,使用Kafka连接器时不需要上传证书。 如果你的 Kafka 集群位于虚拟网络(VNet)内部或防火墙后面,你可能需要配置 Azure 流分析 作业,通过私有链路或专用网络配置访问 Kafka 主题。

配置卡夫卡输入

配置 Kafka 输入,以便 Azure 流分析 作业能够连接到 Kafka 集群并从某个主题读取数据。

重要

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

  1. 在你的 Azure 流分析 作业中,添加一个 Kafka 输入。

  2. 通过使用下表描述的值设置每个输入属性:

    属性名称 说明
    输入/输出别名 用于在查询中引用你的输入或输出的友好名称。
    引导服务器地址 连接到 Kafka 集群的主机/端口对列表。
    Kafka 主题 一个有命名、有序且分区的数据流,支持消息的发布-订阅和事件驱动处理。
    安全协议 你希望以什么方式连接到 Kafka 群集? Azure 流分析支持 mTLS、SASL_SSL、SASL_PLAINTEXT 或 None。
    使用者组 ID 输入应属于的 Kafka 使用者组的名称。 如果你没有提供,Azure 流分析 会自动为你分配一个。
    事件序列化格式 输入数据流的序列化格式(JSON、CSV、Avro、Parquet 和 Protobuf)。
  3. 保存输入配置。

设置认证和加密

设置认证和加密,以保护你的 Azure 流分析 作业与 Kafka 集群之间的连接。 有关连接到 Confluent Cloud Kafka 的分步教程,关于输入,请参阅 使用 Azure 流分析处理来自 Confluent Cloud Kafka 的流数据;关于输出,请参阅 将 Azure 流分析处理的数据流式传输到 Confluent Cloud

重要

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

  1. 请选择与你的Kafka集群匹配的四种支持的安全协议之一,如下表所述:

    属性名称 说明
    mTLS 加密和身份验证。 支持 PLAIN、SCRAM-SHA-256 和 SCRAM-SHA-512 安全机制。
    SASL_SSL 结合了两种不同的安全机制:SASL(简单认证与安全层)和安全套接字层(SSL),以确保数据传输时同时具备认证和加密。 SASL_SSL 协议支持 PLAIN、SCRAM-SHA-256 和 SCRAM-SHA-512 安全机制。
    SASL_PLAINTEXT 标准认证,用户名,但没有加密。
    无身份验证和加密。
  2. 在你的 Azure 流分析 作业中配置所选协议的凭证。

与 Azure 密钥保管库 集成

Azure 流分析 与 Azure 密钥保管库 集成,可在使用 mTLS 或 SASL_SSL 安全协议时访问身份验证和加密所需的已存储机密。 您的 Azure 流分析 作业通过管理身份连接您的 Azure 密钥保管库,以确保连接安全,避免秘密泄露。 证书作为机密存储在密钥保管库中,并且必须采用 PEM 格式。 要将您的 Azure 流分析 工作与 Azure 密钥保管库 集成,请完成以下任务,以下章节将详细介绍。

注意

当你使用带有mTLS或SASL_SSL安全协议的信任存储证书时,必须为你的 Azure 流分析 工作配置 Azure 密钥保管库 和托管身份。 检查密钥保管库的网络设置,确保选中“允许来自所有网络的公共访问”。 如果你的密钥库在VNet中,或者只允许特定网络访问,你必须将Azure 流分析作业注入包含密钥库的VNet,或者将Azure 流分析作业注入到VNet中,然后通过服务端点将密钥库连接到包含VNet的作业。

  1. 配置密钥库并获得所需的权限。
  2. 将证书作为机密上传到密钥保管库中。
  3. 为你的 Azure 流分析 工作配置管理身份。
  4. 授予你的Stream Analytics工作权限,访问密钥库中的证书。

配置密钥库中的权限

要创建密钥保险库资源,请参见快速入门:使用Azure门户创建密钥保险库。 你需要对你的密钥保管库具有密钥保管库 Administrator访问权限,才能上传证书。 要授予管理员权限,请按照以下步骤操作:

注意

你需要 所有者权限才能 授予其他密钥库权限。

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

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

  3. 通过以下配置分配角色:

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

将证书上传到密钥库

确保你在本地用PowerShell配置了Azure CLI。 关于设置 Azure CLI 的指导,请参见 Get started with Azure CLI

以下步骤将证书作为机密上传到你的密钥保管库中。

重要

你必须对你的 key vault 具有密钥保管库 Administrator权限,此命令才能正常工作。 你必须将证书作为密钥上传。 必须使用Azure CLI将证书作为机密上传到密钥保管库。 当用于认证的证书到期时,你的 Azure 流分析 作业会失败。 要解决这个问题,请更新或替换密钥库中的证书,并重启你的 Azure 流分析 作业。

  1. 登录到 Azure CLI。

    az login
    
  2. 连接到包含你密钥库的订阅。

    az account set --subscription <subscription name>
    
  3. 把证书作为秘密上传。 用密钥库的名称替换 <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 流分析 需要托管身份才能访问密钥库。 转到配置下的托管标识选项卡,将 Azure 流分析 作业配置为使用托管标识。

要配置托管身份,请遵循以下步骤:

  1. 配置下选择“受管理身份”标签。

    显示如何为 Azure 流分析作业配置托管标识的屏幕截图。

  2. 选择 交换身份,然后选择用于该作业的身份:系统分配身份或用户指定身份。

  3. 对于用户分配的标识,请选择该用户分配标识所在的订阅,然后选择该标识的名称。

  4. 复习后选择 保存

授予 Stream Analytics 作业访问证书的权限

若要使Azure 流分析作业读取密钥保管库中的机密,作业必须具有访问密钥保管库的权限。

要为你的Stream Analytics职位授予权限,请按照以下步骤操作:

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

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

  3. 通过以下配置分配角色:

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

卡夫卡输入的局限性与注意事项

如果你的 Kafka 集群位于虚拟网络内部或防火墙后面,请配置你的 Azure 流分析 作业,通过私有链路或专用网络配置访问 Kafka 主题。

使用卡夫卡作为输入源时,请考虑以下局限性:

  1. 当你将 Azure 流分析 作业配置为使用 虚拟网络/SWIFT 时,至少配置六个流式单元或一个 V2 流式单元。
  2. 当你使用 mTLS 或 SASL_SSL 配合 Azure 密钥保管库 时,必须将 Java 密钥库转换为 PEM 格式。
  3. Azure 流分析 能连接的 Kafka 最低版本是 0.10。
  4. Azure 流分析不支持通过OAuth或SAML单点登录(SSO)对Confluent Cloud进行认证。 你必须通过SASL_SSL协议使用API密钥。

如需就 Azure 流分析 Kafka 输入获得直接帮助,请联系 askasa@microsoft.com