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 根据所选的身份验证类型,创建代表客户端以及用于客户端身份验证的安全凭证的用户。
其它资源
有关以下模式的更多信息:
-
k
afka,请参阅Kafka
模式引用。 -
KafkaUser
,请参阅KafkaUser
架构引用。
4.3.1. 保护 Kafka 代理
此流程演示了在运行 AMQ Streams 时保护 Kafka 代理的步骤。
为 Kafka 代理实施的安全性必须与为需要访问的客户端实施的安全性兼容。
-
Kafka.spec.kafka.listeners[*].authentication
matchesKafkaUser.spec.authentication
-
kafka.spec.kafka.authorization
与KafkaUser.spec.authorization
匹配
步骤演示了使用 TLS 身份验证的简单授权和监听器的配置。有关监听器配置的更多信息,请参阅 GenericKafkaListener
模式参考。
另外,您可以使用 SCRAM-SHA 或 OAuth 2.0 进行 监听程序身份验证,使用 OAuth 2.0 或 OPA 进行 Kafka 授权。
流程
配置
Kafka
资源。-
配置
授权
属性。 配置 listens
属性
,以创建具有身份验证的侦听器。例如:
apiVersion: kafka.strimzi.io/v1beta2 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。
如果您要配置外部监听程序,其配置取决于所选的连接机制。
-
配置
创建或更新
Kafka
资源。oc apply -f KAFKA-CONFIG-FILE
使用 TLS 身份验证配置 Kafka 代理监听程序。
为每个 Kafka 代理 pod 创建一个服务。
创建一个服务作为连接到 Kafka 集群的 bootstrap 地址。
也使用与
Kafka
资源相同的名称来创建用于验证 kafka 代理身份的集群 CA 证书。