Sun Java System Message Queue 3.7 UR1 管理指南

安全服务

Message Queue 为用户访问控制(验证和授权)和加密提供了安全服务。

Message Queue 管理员负责设置代理在验证用户以及为用户授予操作权限时所需的信息。 安全属性中列出了与安全服务有关的代理属性。 布尔属性 imq.accesscontrol.enabled 充当一个主开关,用于控制是否在代理范围内应用访问控制;要进行更精细的控制,可以通过设置 imq.serviceName .accesscontrol.enabled 属性(其中,serviceName 是连接服务的名称,如表 4–1 所示)来覆盖特定连接服务的此设置:例如,imq.httpjms.accesscontrol.enabled

图 4–2 显示了代理在提供验证和授权服务时所需的组件。 这些服务依赖于用户系统信息库,该系统信息库包含有关消息传送系统用户的以下信息: 用户名、密码和组成员资格。此外,为了给用户或组授予执行特定操作的权限,代理还会查询访问控制属性文件,该文件指定了用户或组可以执行的操作。可以使用配置属性 imq.accesscontrol.file.filename 为整个代理指定一个访问控制属性文件,也可以使用 imq.serviceName. accesscontrol.file.filename 为单个连接服务指定访问控制属性文件。

图 4–2 安全支持

该图显示了代理的安全服务既使用用户系统信息库,又使用访问控制属性文件。

图 4–2 所示,您可以将用户数据存储在随 Message Queue 服务一起提供的平面文件用户系统信息库中,也可以将它们插入原有的轻量目录访问协议 (Lightweight Directory Access Protocol, LDAP) 系统信息库中:

代理的 imq.authentication.basic.user_repository 属性指定要使用的系统信息库的类型。通常,如果可伸缩性很重要,或者您需要让不同的代理共享系统信息库(例如,如果您使用的是代理群集),则最好使用 LDAP 系统信息库。有关设置平面文件或 LDAP 用户系统信息库的详细信息,请参见用户验证

验证

请求与代理建立连接的客户端必须提供用户名和密码,代理会将该用户名和密码与存储在用户系统信息库中的用户名和密码进行比较。从客户端传输到代理的密码是使用 Base-64 编码(对于平面文件系统信息库)或消息摘要 (MD5) 散列(对于 LDAP 系统信息库)进行编码的。 具体提供哪一种编码由 imq.authentication.type 属性(对于整个代理)或 imq.serviceName. authentication.type 属性(对于特定连接服务)控制。imq.authentication.client.response.timeout 属性设置验证请求的超时时间间隔。

密码文件中所述,您可以选择将密码放在密码文件中,而不是让系统以交互方式提示您指定密码。 此选项由布尔型代理属性 imq.passfile.enabled 控制。如果此属性为 true,则 imq.passfile.dirpathimq.passfile.name 属性提供密码文件的目录路径和文件名。 imq.imqcmd.password 属性(可以嵌入密码文件中)指定密码,该密码用于验证管理用户是否有权使用命令实用程序 (imqcmd) 来管理代理、连接服务、连接、物理目的地、长期订阅和事务。

如果您使用的是基于 LDAP 的用户系统信息库,则可以使用所有代理属性来配置 LDAP 查找的各个方面。LDAP 服务器自身的地址(主机名和端口号)由 imq.user_repository.ldap.server 指定。imq.user_repository.ldap.principal 属性提供用于绑定到 LDAP 系统信息库的标识名,而 imq.user_repository.ldap.password 则提供关联的密码。其他属性为单个的用户和组搜索指定目录库和可选 JNDI 过滤器,为用户和组名指定特定于提供者的属性标识符,等等;有关详细信息,请参见安全属性

授权

用户通过验证后,即可被授权执行与 Message Queue 相关的各种活动。 Message Queue 管理员可以定义用户组,并指定组中各个用户的成员资格。 默认的访问控制属性文件只明确地引用一个组,即 admin(请参见 )。此组中的用户具有 admin 连接服务的连接权限, 该权限允许用户执行诸如创建目的地以及监视和控制代理等管理功能。 默认情况下,您定义的任何其他组中的用户都无法获取 admin 服务连接。

当用户尝试执行某个操作时,代理将对照访问控制属性文件中指定的允许执行该操作的用户名和组成员资格,来检查用户系统信息库中该用户的用户名和组成员资格。 访问控制属性文件为用户或组指定了执行以下操作的权限:

加密

要对客户端与代理之间发送的消息进行加密,需要使用基于安全套接字层 (Secure Socket Layer, SSL) 标准的连接服务。 SSL 通过在启用 SSL 的代理与客户端之间建立加密连接来提供连接级别的安全性。

要使用基于 SSL 的 Message Queue 连接服务,需要使用密钥工具实用程序 (imqkeytool) 生成公钥/私钥对。此实用程序将公钥嵌入自签名的证书中,然后将此证书放入 Message Queue 密钥库中。 密钥库自身受密码保护;要解除对密钥库的锁定,必须在启动时提供由 imq.keystore.password 属性指定的密钥库密码。 解除对密钥库的锁定后,代理即可将证书传递给请求连接的任何客户端。然后,客户端可以使用此证书建立与代理的加密连接。

imq.audit.enabled 代理属性控制将审计记录记录到 Message Queue 代理日志文件的行为;有关详细信息,请参见审计日志记录