5.5. 使用 Kerberos 进行身份验证和授权


使用 AMQP 协议发送和接收消息时,客户端可以使用 Simple Authentication and Security Layer (SASL)框架中的 GSSAPI 机制发送 Kerberos 安全凭证。Kerberos 凭据也可以通过将经过身份验证的用户映射到 LDAP 目录或基于文本的属性文件中配置的已分配角色来授权。

您可以使用带有 传输层安全 (TLS)的 SASL 来保护消息传递应用程序。SASL 提供用户身份验证,TLS 提供数据完整性。

重要

以下流程演示了如何为身份验证和授权配置 Kerberos。

5.5.1. 配置网络连接以使用 Kerberos

AMQ Broker 使用 简单身份验证和安全层 (SASL)框架中的 GSSAPI 机制与 Kerberos 安全凭证集成。要在 AMQ Broker 中使用 Kerberos,每个接受者验证或授权使用 Kerberos 凭证的客户端都必须配置为使用 GSSAPI 机制。

以下流程演示了如何配置 acceptor 以使用 Kerberos。

先决条件

  • 在 AMQ Broker 能够验证和授权 Kerberos 凭证前,您必须部署和配置 Kerberos 基础架构。

流程

  1. 停止代理。

    1. 对于 Linux:

      <broker_instance_dir>/bin/artemis stop
      Copy to Clipboard Toggle word wrap
    2. 在 Windows 上:

      <broker_instance_dir>\bin\artemis-service.exe stop
      Copy to Clipboard Toggle word wrap
  2. 打开 & lt;broker_instance_dir&gt; /etc/broker.xml 配置文件。
  3. 将 name-value 对 saslMechanisms=GSSAPI 添加到 acceptor 的 URL 的查询字符串中。

    <acceptor name="amqp">
      tcp://0.0.0.0:5672?protocols=AMQP;saslMechanisms=GSSAPI
    </acceptor>
    Copy to Clipboard Toggle word wrap

    前面的配置意味着 acceptor 在验证 Kerberos 凭证时使用 GSSAPI 机制。

  4. (可选) PLAINANONYMOUS SASL 机制也被支持。要指定多个机制,请使用逗号分隔的列表。例如:

    <acceptor name="amqp">
      tcp://0.0.0.0:5672?protocols=AMQP;saslMechanisms=GSSAPI,PLAIN
    </acceptor>
    Copy to Clipboard Toggle word wrap

    结果是一个接受者,它使用 GSSAPIPLAIN SASL 机制。

  5. 启动代理。

    1. 对于 Linux:

      <broker_instance_dir>/bin/artemis run
      Copy to Clipboard Toggle word wrap
    2. 在 Windows 上:

      <broker_instance_dir>\bin\artemis-service.exe start
      Copy to Clipboard Toggle word wrap

其他资源

5.5.2. 使用 Kerberos 凭证验证客户端

AMQ Broker 支持 AMQP 连接的 Kerberos 身份验证,这些连接使用 简单身份验证和安全层 (SASL)框架中的 GSSAPI 机制。

代理使用 Java 身份验证和授权服务 (JAAS)获取其 Kerberos 接受者凭证。Java 安装中包含的 JAAS 库与验证 Kerberos 凭据的登录模块 Krb5LoginModule 一起打包。有关其 Krb5LoginModule 的更多信息,请参阅 Java 供应商的文档。例如,Oracle 会提供其 Krb5LoginModule 登录模块的信息,作为其 Java 8 文档 的一部分。

先决条件

流程

  1. 停止代理。

    1. 对于 Linux:

      <broker_instance_dir>/bin/artemis stop
      Copy to Clipboard Toggle word wrap
    2. 在 Windows 上:

      <broker_instance_dir>\bin\artemis-service.exe stop
      Copy to Clipboard Toggle word wrap
  2. 打开 & lt;broker_instance_dir&gt; /etc/login.config 配置文件。
  3. 添加名为 amqp-sasl-gssapi 的配置范围。以下示例显示了在 JDK 的 Oracle 和 OpenJDK 版本中找到的 Krb5LoginModule 的配置。

    amqp-sasl-gssapi {
        com.sun.security.auth.module.Krb5LoginModule required
        isInitiator=false
        storeKey=true
        useKeyTab=true
        principal="amqp/my_broker_host@example.com"
        debug=true;
    };
    Copy to Clipboard Toggle word wrap
    amqp-sasl-gssapi
    默认情况下,代理上的 GSSAPI 机制实现使用名为 amqp-sasl-gssapi 的 JAAS 配置范围来获取其 Kerberos acceptor 凭证。
    Krb5LoginModule
    此版本的 Krb5LoginModule 由 JDK 的 Oracle 和 OpenJDK 版本提供。通过引用 Java 厂商的文档,验证 Krb5LoginModule 及其可用选项的完全限定类名称。
    useKeyTab
    Krb5LoginModule 配置为在验证主体时使用 Kerberos keytab。keytabs 使用 Kerberos 环境中的工具生成。有关生成 Kerberos keytab 的详情,请查看厂商中的文档。
    主体
    Principal 设置为 amqp/my_broker_host@example.com。这个值必须与 Kerberos 环境中创建的服务主体对应。有关创建服务主体的详情,请查看厂商中的文档。
  4. 启动代理。

    1. 对于 Linux:

      <broker_instance_dir>/bin/artemis run
      Copy to Clipboard Toggle word wrap
    2. 在 Windows 上:

      <broker_instance_dir>\bin\artemis-service.exe start
      Copy to Clipboard Toggle word wrap

5.5.2.1. 使用其他配置范围

您可以通过在 AMQP 接受器的 URL 中添加参数 saslLoginConfigScope 来指定替代配置范围。在以下配置示例中,参数 saslLoginConfigScope 被赋予值 alternative-sasl-gssapi。结果是一个 acceptor,它使用名为 alternative-sasl-gssapi 的替代范围,在 < broker_instance_dir> /etc/login.config 配置文件中声明。

<acceptor name="amqp">
tcp://0.0.0.0:5672?protocols=AMQP;saslMechanisms=GSSAPI,PLAIN;saslLoginConfigScope=alternative-sasl-gssapi`
</acceptor>
Copy to Clipboard Toggle word wrap

5.5.3. 使用 Kerberos 凭证授权客户端

AMQ Broker 包括实现 JAAS Krb5LoginModule 登录模块,以便在映射角色时供其他安全模块使用。模块将 Kerberos 验证的 Peer Principal 添加到 Subject 的主体设置为 AMQ Broker UserPrincipal。然后,可以将凭证传递给 PropertiesLoginModuleLDAPLoginModule 模块,该模块将 Kerberos 验证的 Peer Principal 映射到 AMQ Broker 角色。

注意

Kerberos Peer Principal 不存在,仅作为角色成员存在。

先决条件

  • 您必须启用 acceptor 的 GSSAPI 机制,然后才能使用 Kerberos 安全凭证授权 AMQP 连接。

流程

  1. 停止代理。

    1. 对于 Linux:

      <broker_instance_dir>/bin/artemis stop
      Copy to Clipboard Toggle word wrap
    2. 在 Windows 上:

      <broker_instance_dir>\bin\artemis-service.exe stop
      Copy to Clipboard Toggle word wrap
  2. 打开 & lt;broker_instance_dir&gt; /etc/login.config 配置文件。
  3. 为 AMQ Broker Krb5LoginModuleLDAPLoginModule 添加配置。通过引用 LDAP 供应商中的文档来验证配置选项。

    示例配置如下所示:

    org.apache.activemq.artemis.spi.core.security.jaas.Krb5LoginModule required
        ;
    org.apache.activemq.artemis.spi.core.security.jaas.LDAPLoginModule optional
        initialContextFactory=com.sun.jndi.ldap.LdapCtxFactory
        connectionURL="ldap://localhost:1024"
        authentication=GSSAPI
        saslLoginConfigScope=broker-sasl-gssapi
        connectionProtocol=s
        userBase="ou=users,dc=example,dc=com"
        userSearchMatching="(krb5PrincipalName={0})"
        userSearchSubtree=true
        authenticateUser=false
        roleBase="ou=system"
        roleName=cn
        roleSearchMatching="(member={0})"
        roleSearchSubtree=false
        ;
    Copy to Clipboard Toggle word wrap
    注意

    上例中显示的 Krb5LoginModule 版本与 AMQ Broker 一起分发,并将 Kerberos 身份转换为可供其他 AMQ 模块用于角色映射的代理身份。

  4. 启动代理。

    1. 对于 Linux:

      <broker_instance_dir>/bin/artemis run
      Copy to Clipboard Toggle word wrap
    2. 在 Windows 上:

      <broker_instance_dir>\bin\artemis-service.exe start
      Copy to Clipboard Toggle word wrap

其他资源

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat