4.3. 保护对 Kafka 代理的访问

要建立对 Kafka 代理的安全访问,您需要配置并应用:

  • Kafka 资源,用于:

    • 使用指定验证类型创建监听程序
    • 为整个 Kafka 集群配置授权
  • 通过监听程序安全访问 Kafka 代理的 Kafka User 资源

配置 Kafka 资源以设置:

  • 监听程序验证
  • 限制对 Kafka 侦听器的访问的网络策略
  • kafka 授权
  • 超级用户对代理进行无限制访问

身份验证是为每个监听器独立配置的。始终为整个 Kafka 集群配置授权。

Cluster Operator 创建监听程序并设置集群和客户端证书颁发机构(CA)证书,以便在 Kafka 集群中启用身份验证。

您可以通过 安装您自己的证书来替换 Cluster Operator 生成的证书。您还可以将 监听程序配置为使用由外部证书颁发机构管理的 Kafka 侦听器证书。证书以 PKCS #12 格式(.p12)和 PEM(.crt)格式提供。

使用 KafkaUser 启用特定客户端用来访问 Kafka 的身份验证和授权机制。

配置 KafkaUser 资源以设置:

  • 与启用的监听器验证匹配的身份验证
  • 与启用的 Kafka 授权匹配的授权
  • 用于控制客户端资源使用的配额

User Operator 根据所选的身份验证类型,创建代表客户端以及用于客户端身份验证的安全凭证的用户。

其他资源

有关以下模式的更多信息:

4.3.1. 保护 Kafka 代理

此流程演示了在运行 AMQ Streams 时保护 Kafka 代理的步骤。

为 Kafka 代理实施的安全性必须与为需要访问的客户端实施的安全性兼容。

  • Kafka.spec.kafka.listeners[*].authentication matches KafkaUser.spec.authentication
  • kafka.spec.kafka.authorizationKafkaUser.spec.authorization匹配

步骤演示了使用 TLS 身份验证的简单授权和监听器的配置。有关监听器配置的更多信息,请参阅 GenericKafkaListener 模式参考

另外,您可以使用 SCRAM-SHA 或 OAuth 2.0 进行 监听程序身份验证,使用 OAuth 2.0 或 OPA 进行 Kafka 授权

步骤

  1. 配置 Kafka 资源。

    1. 配置 授权 属性。
    2. 配置 listens 属性,以创建具有身份验证的侦听器。

      例如:

      apiVersion: kafka.strimzi.io/v1beta1
      kind: Kafka
      spec:
        kafka:
          # ...
          authorization: 1
            type: simple
            superUsers: 2
              - CN=client_1
              - user_2
              - CN=client_3
          listeners:
            - name: tls
              port: 9093
              type: internal
              tls: true
              authentication:
                type: tls 3
          # ...
        zookeeper:
          # ...
      1
      2
      对 Kafka 拥有无限访问权限的用户主体列表。在使用 TLS 身份验证时,CN 是客户端证书的常用名称。
      3
      监听器身份验证机制可以为每个侦听器配置,并 指定为 mutual TLS、SCRAM-SHA-512 或基于令牌的 OAuth 2.0

      如果您要配置外部监听程序,其配置取决于所选的连接机制。

  2. 创建或更新 Kafka 资源。

    oc apply -f KAFKA-CONFIG-FILE

    使用 TLS 身份验证配置 Kafka 代理监听程序。

    为每个 Kafka 代理 pod 创建一个服务。

    创建一个服务作为连接到 Kafka 集群的 bootstrap 地址

    也使用与 Kafka 资源相同的名称来创建用于验证 kafka 代理身份的集群 CA 证书。