4.11.2. 配置 OAuth 2.0 授权支持
这个步骤描述了如何使用 Red Hat Single Sign-On Authorization Services 将 Kafka 代理配置为使用 OAuth 2.0 授权服务。
开始前
考虑您需要或希望限制某些用户的访问权限。您可以使用红帽单点登录 组、角色、客户端 和用户 组合在红帽单点登录中配置访问权限。
通常,组用于根据组织部门或地理位置匹配用户。和 角色用于根据用户的功能匹配用户。
通过红帽单点登录,您可以将用户和组存储在 LDAP 中,而客户端和角色则无法以这种方式存储。存储和用户数据访问可能是您选择配置授权策略的一个因素。
无论 Kafka 代理中实施的授权如何,超级用户 始终都对 Kafka 代理具有未经约束的访问权限。
先决条件
流程
- 访问 Red Hat Single Sign-On Admin 控制台,或使用 Red Hat Single Sign-On Admin CLI 为您在设置 OAuth 2.0 身份验证时创建的 Kafka 代理客户端启用授权服务。
- 使用授权服务为客户端定义资源、授权范围、策略和权限。
- 通过为用户和组分配角色和组,将权限绑定至用户和组。
将 Kafka 代理配置为使用 Red Hat Single Sign-On 授权。
在 Kafka
server.properties
配置文件中添加以下内容以在 Kafka 中安装授权器:authorizer.class.name=io.strimzi.kafka.oauth.server.authorizer.KeycloakRBACAuthorizer principal.builder.class=io.strimzi.kafka.oauth.server.authorizer.JwtKafkaPrincipalBuilder
添加 Kafka 代理的配置,以访问授权服务器和授权服务。
在此,我们演示了添加为
server.properties
附加属性的示例配置,但也可以使用大写或大写命名惯例将其定义为环境变量。strimzi.authorization.token.endpoint.uri="https://AUTH-SERVER-ADDRESS/auth/realms/REALM-NAME/protocol/openid-connect/token" 1 strimzi.authorization.client.id="kafka" 2
(可选)添加特定 Kafka 集群的配置。
例如:
strimzi.authorization.kafka.cluster.name="kafka-cluster" 1
- 1
- 特定 Kafka 集群的名称。名称用于目标权限,从而能够管理同一红帽单点登录域中的多个集群。默认值为
kafka-cluster
。
(可选)提交到简单授权。
例如:
strimzi.authorization.delegate.to.kafka.acl="false" 1
- 1
- 如果 Red Hat Single Sign-On Authorization Services 策略拒绝访问,请将访问权限委派给 Kafka
AclAuthorizer
。默认值为false
。
(可选)添加 TLS 连接到授权服务器的配置。
例如:
strimzi.authorization.ssl.truststore.location=<path-to-truststore> 1 strimzi.authorization.ssl.truststore.password=<my-truststore-password> 2 strimzi.authorization.ssl.truststore.type=JKS 3 strimzi.authorization.ssl.secure.random.implementation=SHA1PRNG 4 strimzi.authorization.ssl.endpoint.identification.algorithm=HTTPS 5
(可选)从授权服务器配置 授权刷新。通过枚举活动令牌并请求每个帐户的最新授权来授予刷新作业。
例如:
strimzi.authorization.grants.refresh.period.seconds="120" 1 strimzi.authorization.grants.refresh.pool.size="10" 2
- 以具有特定角色的客户端或用户访问 Kafka 代理,确保他们具有必要的访问权限,或者没有他们应该拥有的访问权限,来验证配置的权限。