4.5.3.2. 将 Red Hat Single Sign-On Authorization Services 映射到 Kafka 授权模型


Kafka 授权模型用作定义控制对 Kafka 访问的红帽单点登录角色和资源的基础。

要为用户帐户或服务帐户授予 Kafka 权限,请首先为 Kafka 代理在 Red Hat Single Sign-On 中创建 OAuth 客户端规格。然后,在客户端上指定红帽单点登录授权服务规则。通常,代表代理的 OAuth 客户端的客户端 ID 是 kafka (AMQ Streams 提供 的示例文件 使用 kafka 作为 OAuth 客户端 ID)。

注意

如果您有多个 Kafka 集群,您可以在所有这些集群中使用单个 OAuth 客户端(kafka)。这为您提供了一个统一空间,用于定义和管理授权规则。但是,您也可以使用不同的 OAuth 客户端 ID(如 my-cluster-kafkacluster-dev-kafka),并为每个客户端配置中为每个集群定义授权规则。

kafka 客户端定义必须在红帽单点管理控制台中启用 Authorization Enabled 选项。

所有权限都存在于 kafka 客户端范围内。如果您为不同的 Kafka 集群配置了不同的 OAuth 客户端 ID,它们各自需要一组独立的权限,即使它们属于同一红帽单点登录域。

当 Kafka 客户端使用 OAUTHBEARER 身份验证时,Red Hat Single Sign-On 授权器(KeycloakRBACAuthorizer)使用当前会话的访问令牌来检索 Red Hat Single Sign-On 服务器中的授权列表。若要检索授权,授权者将评估红帽单点登录授权服务策略和权限。

Kafka 权限的授权范围

初始红帽单点登录配置通常涉及上传授权范围,以创建在每个 Kafka 资源类型上执行的所有可能操作的列表。此步骤仅执行一次,然后再定义任何权限。您可以手动添加授权范围,而不是上传它们。

授权范围必须包含所有可能的 Kafka 权限,而不考虑资源类型:

  • create
  • 删除
  • describe
  • 更改
  • DescribeConfig
  • AlterConfig
  • ClusterAction
  • IdempotentWrite
注意

如果您确定不需要权限(如 IdempotentWrite),您可以从授权范围列表中省略它。但是,该权限将无法在 Kafka 资源上作为目标。

权限检查的资源模式

在执行权限检查时,资源模式用于与目标资源进行模式匹配。常规模式格式为 RESOURCE-TYPE:PATTERN-NAME

资源类型镜像 Kafka 授权模型。模式允许两个匹配选项:

  • 精确匹配(当模式不以 * 结尾
  • 前缀匹配(模式以 * 结尾

资源模式示例

Topic:my-topic
Topic:orders-*
Group:orders-*
Cluster:*

此外,常规模式格式可以加上 kafka-cluster:CLUSTER-NAME 前缀,后面添加一个逗号,其中 CLUSTER-NAME 是指 Kafka 自定义资源中的 metadata.name

具有集群前缀的资源的模式示例

kafka-cluster:my-cluster,Topic:*
kafka-cluster:*,Group:b_*

当缺少 kafka-cluster 前缀时,会假定为 kafka-cluster:*

在定义资源时,您可以将它与与资源相关的可能授权范围列表关联。设置任何对目标资源类型有用的操作。

虽然您可以向任何资源添加任何授权范围,但只有资源类型支持的范围才会被视为访问控制。

应用访问权限的策略

策略用于将权限定向到一个或多个用户帐户或服务帐户。目标可指:

  • 特定用户或服务帐户
  • 域角色或客户端角色
  • 用户组
  • 与客户端 IP 地址匹配的 JavaScript 规则

策略被赋予唯一名称,并可以重复利用以将多个权限作为多个资源的目标。

授予访问权限

使用细粒度权限将策略、资源和授权范围提取到一起,从而授予用户访问权限。

每个权限的名称应明确定义它授予哪些用户的权限。例如,开发团队 B 可以从以 x 开头的主题中读取 内容。

其它资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.