4.12. 使用基于 OPA 策略的授权


开源策略代理(OPA)是一个开源策略引擎。您可以将 OPA 与 AMQ Streams 集成,作为基于策略的授权机制,允许在 Kafka 代理上进行客户端操作。

从客户端发出请求时,OPA 将根据为 Kafka 访问定义的策略评估请求,然后允许或拒绝请求。

注意

红帽不支持 OPA 服务器。

4.12.1. 定义 OPA 策略

在将 OPA 与 AMQ Streams 集成前,请考虑如何定义策略以提供精细的访问控制。

您可以为 Kafka 集群、消费者组和主题定义访问控制。例如,您可以定义一个授权策略,允许从制作者客户端写入到特定代理主题的访问。

为此,策略可能会指定:

  • 与制作者客户端关联的用户主体主机地址
  • 客户端允许的操作
  • 策略适用的 资源类型 (topic)和资源名称

允许或拒绝决策将写入到策略中,并根据提供的请求和客户端识别数据提供响应。

在我们的示例中,生成者客户端必须满足策略才能写入该主题。

4.12.2. 连接到 OPA

要启用 Kafka 访问 OPA 策略引擎以查询访问控制策略,您可以在您的 Kafka server.properties 文件中配置自定义 OPA authorizer 插件 (kafka-authorizer-opa-VERSION.jar)。

客户端发出请求时,OPA 策略引擎将通过指定的 URL 地址和 REST 端点来查询 OPA 策略引擎,该端点必须是定义的策略的名称。

该插件提供了客户端请求的详细信息 - 用户主体、操作和资源 - 以 JSON 格式针对策略进行检查。详细信息将包括客户端的唯一身份;例如,使用 TLS 身份验证时将区分名称与客户端证书进行区分。

OPA 使用数据向插件提供响应 - truefalse - 允许或拒绝请求。

4.12.3. 配置 OPA 授权支持

这个步骤描述了如何将 Kafka 代理配置为使用 OPA 授权。

开始前

考虑某些用户所需的访问权限或希望限制某些用户。您可以使用 用户和 Kafka 资源 的组合来定义 OPA 策略。

可以设置 OPA 从 LDAP 数据源加载用户信息。

注意

无论在 Kafka 代理上实现的授权是什么,超级用户始终对 Kafka 代理具有不受限制的访问。

先决条件

流程

  1. 编写授权客户端请求对 Kafka 代理执行操作所需的 OPA 策略。

    请参阅 定义 OPA 策略

    现在,将 Kafka 代理配置为使用 OPA。

  2. 为 Kafka 安装 OPA 授权器插件

    请参阅 连接到 OPA

    确保插件文件包含在 Kafka 类路径中。

  3. 在 Kafka server.properties 配置文件中添加以下内容以启用 OPA 插件:

    authorizer.class.name: com.bisnode.kafka.authorization.OpaAuthorizer
    Copy to Clipboard Toggle word wrap
  4. 在 Kafka 代理的 server.properties 中添加其他配置来访问 OPA 策略引擎和策略。

    例如:

    opa.authorizer.url=https://OPA-ADDRESS/allow 
    1
    
    opa.authorizer.allow.on.error=false 
    2
    
    opa.authorizer.cache.initial.capacity=50000 
    3
    
    opa.authorizer.cache.maximum.size=50000 
    4
    
    opa.authorizer.cache.expire.after.seconds=600000 
    5
    
    super.users=User:alice;User:bob 
    6
    Copy to Clipboard Toggle word wrap
    1
    (必需)授权器插件将查询的策略的 OAuth 2.0 令牌端点 URL。在本例中,策略称为 allow
    2
    标志指定在授权器插件无法与 OPA 策略引擎连接时,默认是否允许或拒绝客户端访问。
    3
    本地缓存的初始容量(以字节为单位)。使用缓存,以便插件不必查询每个请求的 OPA 策略引擎。
    4
    本地缓存的最大容量(以字节为单位)。
    5
    本地缓存的时间(以毫秒为单位),方法是从 OPA 策略引擎重新加载。
    6
    被视为超级用户的用户主体列表,以便在不查询 Open Policy Agent 策略的情况下始终允许它们。

    有关身份验证和授权选项的信息,请参阅 Open Policy Agent 网站

  5. 通过使用具有正确授权的客户端访问 Kafka 代理来验证配置的权限。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat