5.5. 使用 Kerberos 进行身份验证和授权
使用 AMQP 协议发送和接收消息时,客户端可以使用 Simple Authentication and Security Layer (SASL)框架中的 GSSAPI 机制发送 Kerberos 安全凭证。Kerberos 凭据可用于授权,方法是将经过身份验证的用户映射到在 LDAP 目录或基于文本的属性文件中配置分配的角色。
您可以将 SASL 与 传输层安全 (TLS)搭配使用来保护您的消息传递应用程序。SASL 提供用户身份验证,TLS 提供数据完整性。
您必须在 AMQ Broker 验证和授权 Kerberos 凭证前部署和配置 Kerberos 基础架构。有关部署 Kerberos 的更多信息,请参阅您的操作系统文档。
- 对于 RHEL 7,请参阅使用 Kerberos。
- 对于 Windows,请参阅 Kerberos 身份验证概述。
- Oracle 或 IBM JDK 的用户应该安装 Java Cryptography 扩展(JCE)。如需更多信息,请参阅 Oracle version of the JCE 或 IBM version of the JCE。
以下流程演示了如何为身份验证和授权配置 Kerberos。
5.5.1. 配置网络连接以使用 Kerberos 复制链接链接已复制到粘贴板!
AMQ Broker 使用 简单身份验证和安全层 (SASL)框架中的 GSSAPI 机制与 Kerberos 安全凭证集成。要在 AMQ Broker 中使用 Kerberos,每个接受者身份验证或授权使用 Kerberos 凭证的客户端都必须配置为使用 GSSAPI 机制。
以下流程演示了如何配置接受者以使用 Kerberos。
先决条件
- 您必须在 AMQ Broker 验证和授权 Kerberos 凭证前部署和配置 Kerberos 基础架构。
流程
停止代理。
对于 Linux:
<broker_instance_dir>/bin/artemis stop
<broker_instance_dir>/bin/artemis stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Windows:
<broker_instance_dir>\bin\artemis-service.exe stop
<broker_instance_dir>\bin\artemis-service.exe stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 将 name-value 对
saslMechanisms=GSSAPI
添加到acceptor
的 URL 的查询字符串中。<acceptor name="amqp"> tcp://0.0.0.0:5672?protocols=AMQP;saslMechanisms=GSSAPI </acceptor>
<acceptor name="amqp"> tcp://0.0.0.0:5672?protocols=AMQP;saslMechanisms=GSSAPI </acceptor>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前面的配置意味着 acceptor 在验证 Kerberos 凭证时使用 GSSAPI 机制。
(可选)另外还支持
PLAIN
和ANONYMOUS
SASL 机制。要指定多个机制,请使用逗号分隔的列表。例如:<acceptor name="amqp"> tcp://0.0.0.0:5672?protocols=AMQP;saslMechanisms=GSSAPI,PLAIN </acceptor>
<acceptor name="amqp"> tcp://0.0.0.0:5672?protocols=AMQP;saslMechanisms=GSSAPI,PLAIN </acceptor>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 结果是一个接受者,它使用
GSSAPI
和PLAIN
SASL 机制。启动代理。
对于 Linux:
<broker_instance_dir>/bin/artemis run
<broker_instance_dir>/bin/artemis run
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Windows:
<broker_instance_dir>\bin\artemis-service.exe start
<broker_instance_dir>\bin\artemis-service.exe start
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
- 有关接受器的详情,请参考 第 2.1 节 “关于接受者”。
5.5.2. 使用 Kerberos 凭证验证客户端 复制链接链接已复制到粘贴板!
AMQ Broker 支持使用 简单身份验证和安全层 (SASL)框架中的 GSSAPI 机制的 AMQP 连接的 Kerberos 身份验证。
代理使用 Java 身份验证和授权服务 (JAAS)获取其 Kerberos 接受器凭证。Java 安装中包含的 JAAS 库与登录模块 Krb5LoginModule
打包,用于验证 Kerberos 凭证。有关 Krb5LoginModule
的更多信息,请参阅 Java 供应商中的文档。例如,Oracle 提供有关其 Krb5LoginModule
登录模块的信息,作为其 Java 8 文档 的一部分。
先决条件
- 您必须启用 acceptor 的 GSSAPI 机制,然后才能使用 Kerberos 安全凭证验证 AMQP 连接。更多信息请参阅 第 5.5.1 节 “配置网络连接以使用 Kerberos”。
流程
停止代理。
对于 Linux:
<broker_instance_dir>/bin/artemis stop
<broker_instance_dir>/bin/artemis stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Windows:
<broker_instance_dir>\bin\artemis-service.exe stop
<broker_instance_dir>\bin\artemis-service.exe stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
打开 &
lt;broker_instance_dir> /etc/login.config
配置文件。 添加名为
amqp-sasl-gssapi
的配置范围。以下示例显示了在 JDK 的 Oracle 和 OpenJDK 版本中找到的Krb5LoginModule
的配置。Copy to Clipboard Copied! Toggle word wrap Toggle overflow amqp-sasl-gssapi
-
默认情况下,代理上的 GSSAPI 机制实现使用名为
amqp-sasl-gssapi
的 JAAS 配置范围来获取其 Kerberos acceptor 凭证。 Krb5LoginModule
-
此版本的
Krb5LoginModule
由 JDK 的 Oracle 和 OpenJDK 版本提供。通过引用 Java 供应商中的文档来验证Krb5LoginModule
及其可用选项的完全限定类名称。 useKeyTab
-
Krb5LoginModule
配置为在验证主体时使用 Kerberos keytab。keytab 使用 Kerberos 环境中的工具生成。有关生成 Kerberos keytab 的详细信息,请参阅厂商中的文档。 主体
-
Principal 设置为
amqp/my_broker_host@example.com
。这个值必须与在 Kerberos 环境中创建的服务主体对应。有关创建服务主体的详情,请查看厂商中的文档。
启动代理。
对于 Linux:
<broker_instance_dir>/bin/artemis run
<broker_instance_dir>/bin/artemis run
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Windows:
<broker_instance_dir>\bin\artemis-service.exe start
<broker_instance_dir>\bin\artemis-service.exe start
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5.2.1. 使用其他配置范围 复制链接链接已复制到粘贴板!
您可以通过将参数 saslLoginConfigScope
添加到 AMQP acceptor 的 URL 来指定备选配置范围。在以下配置中,参数 saslLoginConfigScope
被赋予值 alternative-sasl-gssapi
。其结果是一个接受者,它使用名为 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>
<acceptor name="amqp">
tcp://0.0.0.0:5672?protocols=AMQP;saslMechanisms=GSSAPI,PLAIN;saslLoginConfigScope=alternative-sasl-gssapi`
</acceptor>
5.5.3. 使用 Kerberos 凭证授权客户端 复制链接链接已复制到粘贴板!
AMQ Broker 包括 JAAS Krb5LoginModule
登录模块的实现,用于在映射角色时供其他安全模块使用。模块将 Kerberos 验证的 Peer Principal 添加到 Subject 的主体中,设置为 AMQ Broker UserPrincipal。然后,可以将凭证传递给 PropertiesLoginModule
或 LDAPLoginModule
模块,该模块将 Kerberos 验证的 Peer Principal 传递给 AMQ Broker 角色。
Kerberos Peer Principal 不存在为代理用户,仅作为角色成员。
先决条件
- 您必须启用 acceptor 的 GSSAPI 机制,然后才能使用 Kerberos 安全凭证授权 AMQP 连接。
流程
停止代理。
对于 Linux:
<broker_instance_dir>/bin/artemis stop
<broker_instance_dir>/bin/artemis stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Windows:
<broker_instance_dir>\bin\artemis-service.exe stop
<broker_instance_dir>\bin\artemis-service.exe stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
打开 &
lt;broker_instance_dir> /etc/login.config
配置文件。 添加 AMQ Broker
Krb5LoginModule
和LDAPLoginModule
的配置。通过引用 LDAP 供应商中的文档来验证配置选项。下面是一个示例配置。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意上例中显示的
Krb5LoginModule
版本与 AMQ Broker 一起发布,并将 Kerberos 身份转换为代理身份,供其他 AMQ 模块用于角色映射。启动代理。
对于 Linux:
<broker_instance_dir>/bin/artemis run
<broker_instance_dir>/bin/artemis run
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Windows:
<broker_instance_dir>\bin\artemis-service.exe start
<broker_instance_dir>\bin\artemis-service.exe start
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
- 有关在 AMQ Broker 中启用 GSSAPI 机制的更多信息,请参阅 第 5.5.1 节 “配置网络连接以使用 Kerberos”。
-
有关
PropertiesLoginModule
的更多信息,请参阅 第 5.2.2.1 节 “配置基本用户和密码身份验证”。 -
有关
LDAPLoginModule
的更多信息,请参阅 第 5.4.1 节 “配置 LDAP 以验证客户端”。