4.4.6.4. 为 Kafka 组件配置 OAuth 2.0
这个步骤描述了如何将 Kafka 组件配置为使用授权服务器的 OAuth 2.0 身份验证。
您可以为以下对象配置身份验证:
- Kafka Connect
- Kafka MirrorMaker
- Kafka Bridge
在这种情况下,Kafka 组件和授权服务器会在同一集群中运行。
开始前
有关为 Kafka 组件配置 OAuth 2.0 身份验证的更多信息,请参阅:
先决条件
- AMQ Streams 和 Kafka 正在运行
- 为对 Kafka 代理的 OAuth 访问部署并配置了 OAuth 授权服务器
- 为 OAuth 2.0 配置 Kafka 代理
步骤
创建客户端机密,并将它作为环境变量挂载到组件上。
例如,此处我们为 Kafka Bridge 创建客户端
Secret
:apiVersion: kafka.strimzi.io/v1beta1 kind: Secret metadata: name: my-bridge-oauth type: Opaque data: clientSecret: MGQ1OTRmMzYtZTllZS00MDY2LWI5OGEtMTM5MzM2NjdlZjQw 1
- 1
clientSecret
键必须采用 base64 格式。
为 Kafka 组件创建或编辑资源,以便为身份验证属性配置 OAuth 2.0 身份验证。
对于 OAuth 2.0 身份验证,您可以使用:
- 客户端 ID 和 secret
- 客户端 ID 和刷新令牌
- 访问令牌
- TLS
KafkaClientAuthenticationOAuth 模式参考提供了每个模式的示例。
例如,此处的 OAuth 2.0 使用客户端 ID 和 secret 分配给 Kafka Bridge 客户端,以及 TLS:
apiVersion: kafka.strimzi.io/v1beta1 kind: KafkaBridge metadata: name: my-bridge spec: # ... authentication: type: oauth 1 tokenEndpointUri: https://<auth-server-address>/auth/realms/master/protocol/openid-connect/token 2 clientId: kafka-bridge clientSecret: secretName: my-bridge-oauth key: clientSecret tlsTrustedCertificates: 3 - secretName: oauth-server-cert certificate: tls.crt
根据您应用 OAuth 2.0 身份验证的方式以及授权服务器的类型,您可以使用额外的配置选项:
# ... spec: # ... authentication: # ... disableTlsHostnameVerification: true 1 checkAccessTokenType: false 2 accessTokenIsJwt: false 3 scope: any 4
将更改应用到 Kafka 资源的部署。
oc apply -f your-file
检查日志中的更新,或者查看 pod 状态转换:
oc logs -f ${POD_NAME} -c ${CONTAINER_NAME} oc get pod -w
滚动更新配置组件,以使用 OAuth 2.0 身份验证与 Kafka 代理交互。