安全性
了解 IBM MQ on Cloud随附的安全功能。
缺省安全功能
- MQ 通道提供了用于加密使用 TLS 连接的应用程序和管理员所传输数据的选项。 有一些配置可供客户应用以启用 TLS 功能
- 为公共认证中心 (例如 Let 's Encrypt) 签署的队列管理器配置了缺省 TLS 服务器证书
- 缺省情况下,使用用户名/密码认证配置队列管理器通道,此认证由用于用户和应用程序管理的 IBM Cloud® Identity and Access Management (IAM) 服务支持
- 存储卷上所有持久存储的队列管理器数据(包括消息、配置和日志)都使用全磁盘加密进行静态加密
- IBM MQ 提供了广泛的功能,可为队列管理器中的队列/主题等特定资源提供细颗粒度访问控制,利用这些功能的方式与内部部署的客户部署相同
缺省 MQ 安全配置
用户
要为用户提供对服务实例中队列管理器的管理访问权,必须通过执行此处提供的步骤将该用户添加到“用户许可权”列表。
具有管理访问权的任何用户都有能力查看和修改任何 MQ 配置以及写入和访问消息数据。 出于这些原因,应尽可能限制管理访问权。
通过为用户提供许可权,用户可成为该服务实例中每个队列管理器的 mqm
组的成员。
缺省情况下,定义了 MQ“BLOCKUSER”规则,因此 mqm
组的成员只能使用 CLOUD.ADMIN.SVRCONN
通道来连接到队列管理器。 要使用其他通道进行连接,需要添加认证记录,如 此处所述。
应用程序
要支持应用程序连接到服务实例中的任何队列管理器并与其进行交互,必须首先通过执行此处提供的步骤,将该应用程序添加到“应用程序许可权”列表。
创建应用程序许可权时生成的 MQ 用户名和 API 密钥将在应用程序连接到 MQ 时用作用户名和密码。 缺省情况下,添加的每个应用程序都具有以下权限:
- 连接到队列管理器(具有“连接”或“问询”权限)
- 放入、取出和浏览以“DEV.”开头的任何队列和主题(例如,您将在队列管理器上发现的预定义消息)中的消息。
缺省情况下,定义了 MQ“BLOCKUSER”规则,因此应用程序只能使用 CLOUD.APP.SVRCONN
通道来连接到队列管理器。 要使用其他通道进行连接,需要添加认证记录,如 此处所述。
创建新队列和主题
在定义要由应用程序使用的新队列或主题时,缺省情况下,没有任何应用程序有权访问这些队列或主题。 首先,必须创建权限记录,以授予应用程序对任何新资源的访问权。 为此,请使用在创建权限记录期间定义应用程序许可权时生成的 MQ 用户名。
有关创建权限记录的详细信息,请参阅以下 主题 。
连接客户机应用程序
使用低于 V8.0.0.0 的 IBM MQ 客户机库进行连接的客户机应用程序无法向队列管理器提供用户凭证,因此无法进行连接。
Java 和 JMS 应用程序有两种不同的方法向队列管理器提供凭证,具体使用哪种方法通过名为compatibility mode
的开关进行控制。 您必须确保 Java 或 JMS 应用程序在进行连接时,提供的是禁用了兼容性方式的用户凭证。 有关配置客户机应用程序的详细信息,请参阅 此处提供的步骤。
MQ 详细信息
从 MQ 9.2.2r1 (2021 年 3 月的25th ) 发行版开始,缺省情况下,已部署的队列管理器将在预定义通道上启用 TLS。 在低于 9.2.2r1的版本上部署的队列管理器 (已升级到 V 9.2.2r1 或更高版本) 在缺省情况下不会启用 TLS。 强烈建议您在所有通道上启用此功能,以进一步提高安全性。
缺省情况下,提供了两个通道:
CLOUD.ADMIN.SVRCONN
,供管理员用户使用,例如使用 MQ 资源管理器或 runmqsc 进行连接CLOUD.APP.SVRCONN
,供应用程序连接以发送和接收消息
缺省情况下,这两个通道也配置为使用 TLS。 必须执行其他配置以允许 mq 客户机应用程序和管理工具 (runmqsc 和 MQ Explorer) 连接到队列管理器。
建议将任何用户定义的通道配置为使用 TLS ,这是通过将 SSLCAUTH
属性设置为 Optional
并将 SSLCIPH
属性设置为有效的 MQ 密码规范 (例如 ANY_TLS12_OR_HIGHER
) 来实现的。
以下是使用 MQSC 的两个示例,其中显示了定义和改变要配置为使用 TLS 的通道:
DEFINE CHANNEL('EXAMPLE.APP.SVRCONN') CHLTYPE(SVRCONN) SSLCAUTH(OPTIONAL) SSLCIPH(ANY_TLS12_OR_HIGHER) SSLCAUTH(OPTIONAL) SSLCIPH(ANY_TLS12_OR_HIGHER)
...
ALTER CHL('EXAMPLE.ADMIN.SVRCONN') CHLTYPE(SVRCONN) SSLCIPH(ANY_TLS12_OR_HIGHER) SSLCAUTH(REQUIRED)`
缺省情况下,会阻止与两个预定义通道的入局连接 - 要启用访问,请执行针对用户或应用程序描述的步骤。
对于除了上面定义的两个名称之外的通道,其入局连接请求将被缺省“ADDRESSMAP”规则阻止。 这意味着如果您定义了自己的 MQ 通道(例如,用于接受来自其他队列管理器的入局连接),那么缺省情况下会阻止连接到该新通道,您需要定义规则来允许与该新通道的特定连接。
有关配置 MQ 细颗粒度授权的详细信息,请参阅 IBM Knowledge Center 中的以下 主题 。
建议
强烈建议将 TLS 通道用于管理和应用程序连接,以便保护在应用程序和队列管理器之间流动的凭证和业务数据。 有关为通道配置 TLS 的详细信息,请参阅此主题。
Advanced Message Security (AMS) 功能提供了对敏感数据的更高级别保护,可供应用程序或队列管理器使用。 强烈建议敏感数据应该由应用程序使用 AMS 进行加密,以确保这些数据在应用程序与队列管理器之间流动时以及流经系统时得到充分保护。 有关为客户机应用程序配置 AMS 的详细信息,请参阅以下 主题。
队列管理器源 IP 地址是动态的,如果队列管理器重新启动或故障转移到其他主机,那么此 IP 地址会更改。 源 IP 地址由多个队列管理器共享,因此不应用作在接收方通道上认证入局连接的唯一机制。
保护传输中的数据
缺省情况下,使用 TLS 安全性配置 MQ on Cloud 队列管理器中的预定义管理和应用程序通道。 启用 TLS 会使管理或应用程序连接对会话加密,从而保护敏感数据和凭证。 以下文档将说明如何在通道没有 TLS 的情况下启用 TLS ,以及如何保护远程管理和应用程序连接。
在 MQ on Cloud 中为 MQ 通道启用 TLS 安全性
如前所述,缺省情况下,在 MQ V 9.2.2r1 (或更高版本) 上创建的队列管理器将在其预定义通道上启用 TLS。 但是,在低于 9.2.2r1的版本部署的队列管理器 (已升级到 V 9.2.2r1 或更高版本) 在缺省情况下不会启用 TLS。 以下文档说明了如何在未设置 TLS 的通道上启用 TLS 的过程,以及如何创建可信密钥库文件。
- 在 MQ on Cloud中为 MQ 通道启用 TLS 安全性。
队列管理器管理选项
以下链接提供了有关如何使用标准管理工具配置和管理 MQ on Cloud 队列管理器的信息的方便参考。 您可以选择喜欢的工具,并按照本文档中的指示信息进行操作。
您可以通过 IBM MQ Web 控制台、IBM MQ Explorer 或 IBM MQ 客户机中的 runmqsc 来管理队列管理器。
IBM Web 控制台随队列管理器一起提供 "开箱即用" ,而使用 IBM MQ Explorer 或 IBM MQ 客户机需要进一步设置。
保护远程管理
在所需通道上配置 TLS 安全性后,您将需要正确建立连接。 可以通过两种方式完成此操作:
Application connections in C MQI&JMS programs
要使用 "C MQI" 和 "JMS" 应用程序安全地连接到 MQ on Cloud 队列管理器,请参阅以下文档:
在客户机和队列管理器之间启用 TLS
如果尚未在队列管理器上启用 TLS 安全性,那么以下文档说明如何正确配置队列管理器。 此预评估涵盖 "匿名" 单向 TLS 连接以及 "相互" 双向连接。
高级消息安全性 (Advanced Message Security , AMS)
以下文档说明了队列管理器高级消息安全性以及如何将其与应用程序高级消息安全性一起启用。
要将 AMS 应用于的队列管理器 不得 已在其上启用 TLS。
刷新队列管理器 TLS 安全性
如果对队列管理器密钥库或信任库进行了更改,那么将需要 TLS 安全性刷新,否则更改将不会生效。 以下文档说明了此过程: