Sun Java logo     上一页      目录      索引      下一页     

Sun logo
Sun Java™ System Identity Manager 7.0 管理指南 

第 10 章
安全

本章介绍有关 Identity Manager 安全功能的信息,并详述为进一步减少安全风险可以采取的步骤。

查看以下主题以了解更多有关使用 Identity Manager 管理系统安全的信息。


安全功能

Identity Manager 通过提供以下功能帮助减少安全风险:

另外,系统体系结构将尽可能寻求减少安全风险的方法。例如,注销后,就不能通过浏览器的 Back 功能访问先前访问过的页面。


限制并发登录会话

默认情况下,Identity Manager 用户可进行并发登录会话。但是,您可以通过更改系统配置对象中 security.authn.singleLoginSessionPerApp 配置属性的值将并发会话限制为每个登录应用程序一个会话。该属性是一个包含每个登录应用程序名称(例如,管理员界面、用户界面或 Identity Manager IDE)的一个属性的对象。将该属性的值更改为 true 可为每个用户强制执行单个登录会话。

如果已强制执行,用户可以登录多个会话,但是,仅最新登录的会话保持活动状态且有效。如果用户对无效的会话执行操作,则用户会被自动强制退出会话且该会话将终止。


密码管理

Identity Manager 在多个级别提供密码管理功能:


传递验证

利用传递验证向用户和管理员授予通过一个或多个不同密码进行访问的权限。Identity Manager 通过实现以下方法来管理验证:

关于登录应用程序

登录应用程序定义登录模块组的集合,登录模块组进一步定义用户登录至 Identity Manager 时使用的登录模块的集合和顺序。每个登录应用程序都由一个或多个登录模块组构成。

登录时,登录应用程序会检查其登录模块组集。如果只设置了一个登录模块组,则会使用这个组,并按组中登录模块的定义顺序处理包含的登录模块。如果登录应用程序中含有多个定义的登录模块组,则 Identity Manager 将检查应用于每个登录模块组的登录约束规则以确定要处理的组。

登录约束规则

登录约束规则是应用于在登录应用程序中定义的登录模块组的。对于登录应用程序中的每个登录模块组集,如果只有一个组,则不能应用登录约束规则。

Identity Manager 评估第一个登录模块组的约束规则,来确定要处理一个集合中的哪一个登录模块组。如果成功,则会处理该登录模块组。如果失败,则将依次评估每个登录模块组,直到约束规则成功或评估没有约束规则的登录模块组(随即使用该组)。


注

如果登录应用程序包含多个登录模块组,则应将没有登录约束规则的登录模块组放在集合的最后位置。


登录约束规则示例

下例是基于位置的登录约束规则,此规则从标头获取请求者的 IP 地址,然后检查该地址是否位于 192.168 网络。如果 IP 地址中有 192.168.,则此规则将返回值 True 并选择此登录模块组。

代码示例 10-1  基于位置的登录约束规则

<Rule authType='LoginConstraintRule' name='Sample On Local Network'>

  <match>

    <ref>remoteAddr</ref>

    <s>192.168.</s>

  </match>

  <MemberObjectGroups>

    <ObjectRef type='ObjectGroup' name='All'/>

  </MemberObjectGroups>

</Rule>

编辑登录应用程序

在菜单栏中,选择 Configure,然后选择 Login 以访问 "Login" 页。

登录应用程序列表显示:

在 "Login" 页中,您可以:

要编辑登录应用程序,请从列表中选择相应的应用程序。

设置 Identity Manager 会话限制

在 "Modify Login Application" 页中,可以为每个 Identity Manager 登录会话设置超时值(限制)。选择小时数、分钟数和秒数,然后单击 Save。您建立的限制将显示在登录应用程序列表中。

禁用对应用程序的访问

在 "Create Login Application" 和 "Modify Login Application" 页中,可以选择 "Disable" 选项来禁用登录应用程序,从而阻止用户登录。如果用户尝试登录已禁用的应用程序,则该界面将重定向到备用页面,指示当前已禁用该应用程序。可以通过编辑自定义目录来编辑显示在此页面上的消息。

只有取消选择该选项才能解除对登录应用程序的禁用。作为安全措施,不能禁用管理员登录。

编辑登录模块组

登录模块组列表显示:

在 "Login Module Groups" 页中可以创建、编辑和删除登录模块组。从此列表中选择任一登录模块组对其进行编辑。

编辑登录模块

针对登录模块的以下各个选项输入详细信息或进行选择。(并非所有选项对每个登录模块均可用。)

单击保存可以保存登录模块。保存后,可将该模块放在登录模块组中所有其他模块所在的位置。


注意

如果将 Identity Manager 登录配置为对多个系统进行验证,则 Identity Manager 要验证的所有目标系统的帐户都应使用相同的用户 ID 和密码。


如果用户 ID 和密码组合不同,则对于用户 ID 和密码不同于在 Identity Manager 的 "User Login" 表单中输入的用户 ID 和密码的系统,将不能成功登录。某些此类系统可能使用锁定策略强制限定锁定帐户前失败登录尝试的次数;对于这些系统,虽然用户可通过 Identity Manager 继续成功登录,但用户帐户最终将被锁定。


配置公共资源的验证

如果您有多个物理上或逻辑上相同的资源(例如,两个为同一个物理主机定义的资源,或者几个表示 NT 或 AD 域环境中信任域服务器的资源),那么您可将系统配置对象中的一组资源指定为公共资源。

通过建立公共资源,您可以允许一个用户验证到这些公共资源之一,但通过使用另一个公共资源将用户映射到其相关的 Identity Manager 用户。例如,一个用户可能有一个链接到资源 AD-1 的 Identity Manager 用户的资源帐户。该登录模块组可能定义用户必须验证到资源 AD-2。如果 AD-1 和 AD-2 被定义为公共资源(此种情况下为在同一个信任域中),那么如果该用户成功验证到 AD-2,则 Identity Manager 可通过查找资源 AD-1 中具有相同帐户 ID 的用户来映射到相关 Identity Manager 用户。

以下示例中显示了指定此系统配置对象属性的格式:

代码示例 10-2  配置公共资源的验证

<Attribute name='common resources'>

    <Attribute name='Common Resource Group Name'>

        <List>

            <String>Common Resource Name</String>

            <String>Common Resource Name</String>

        </List>

    </Attribute>

</Attribute>


配置 X509 证书验证

使用以下信息和过程配置 Identity Manager 的 X509 证书验证。

必备条件

要在 Identity Manager 中支持基于 X509 证书的验证,请确保正确配置双向(客户机和服务器)SSL 验证。从客户角度而言,这表明支持 X509 标准的用户证书应已导入到浏览器(或可通过智能卡读卡机获得),用于签署用户证书的信任证书应已导入到信任证书的 Web 应用服务器密钥库中。

还要为客户机验证选择所用的客户机证书。要进行验证:

  1. 使用 Internet Explorer,选择 Tools,然后选择 Internet Options。
  2. 选择 Content 选项卡。
  3. 在 "Certificates" 区域中,单击 Certificates。
  4. 选择客户机证书,然后单击 Advanced。
  5. 在 "Certificate Purposes" 区域中,确保选择 "Client Authentication" 选项。

在 Identity Manager 中配置 X509 证书验证

要配置 Identity Manager X509 证书验证:

  1. 以 "Configurator"(或同等权限)身份登录 "Administrator Interface"。
  2. 选择 Configure,然后选择 Login,以显示 "Login" 页。
  3. 单击 Manage Login Module Groups,以显示 "Login Module Groups" 页。
  4. 从列表中选择登录模块组。
  5. 在 "Assign Login Module..." 列表中,选择 "Identity Manager X509 Certificate Login Module"。Identity Manager 显示 "Modify Login Module" 页。
  6. 设置成功登录的要求。可接受的值有:
    • Required — 要求登录模块必须成功。无论验证成功或失败,都将继续验证列表中的下一个登录模块。如果这是唯一的登录模块,则管理员登录成功。
    • Requisite — 要求登录模块必须成功。如果验证成功,将继续验证列表中的下一个登录模块。如果验证失败,则验证不再继续进行。
    • Sufficient — 不要求登录模块必须成功。如果验证成功,将不再继续验证列表中的下一个登录模块,并且管理员登录成功。如果验证失败,则将继续验证列表中的下一个登录模块。
    • Optional — 不要求登录模块必须成功。无论验证成功或失败,都将继续验证列表中的下一个登录模块。
  7. 选择登录关联规则。这可以是内置规则或自定义的关联规则。(有关创建自定义关联规则的信息,参见下节。)
  8. 单击 Save,返回到 "Modify Login Module Group" 页。
  9. 或者可以重新排列登录模块顺序(如果为登录模块组分配了多个登录模块),然后,单击 Save。
  10. 如果尚未为登录应用程序分配登录模块组,请进行分配。在 "Login Module Groups" 页中单击 "Return to Login Applications",然后选择登录应用程序。为应用程序分配登录模块组后,单击 Save。

  11. 注

    如果 waveset.properties 文件中的 allowLoginWithNoPreexistingUser 选项设置为 true 值,则配置 Identity Manager X509 证书登录模块时会提示您选择 "New User Name Rule"。在使用相关 "Login Correlation Rule" 未找到用户时,可使用此规则确定如何命名新创建的用户。

    "New User Name Rule" 与 "Login Correlation Rule" 的可用输入参数相同。它返回单个字符串,该字符串用于创建新 Identity Manager 用户帐户的用户名。

    idm/sample/rules 中包含一个新建用户名称规则样例,名为 NewUserNameRules.xml。


创建和导入登录配置规则

Identity Manager X509 证书登录模块使用登录关联规则确定如何将证书数据映射到相应的 Identity Manager 用户。Identity Manager 中包含一个内置关联规则,名为 Correlate via X509 Certificate subjectDN。

您也可以添加自己的关联规则。每个关联规则都必须遵循以下准则:

传递到登录配置规则的参数有:

传递给登录关联规则的证书参数的命名约定有:

cert.field name.subfield name

可用于规则的示例参数名包括:

使用传入参数的登录配置规则返回包含一个或多个 AttributeConditions 的列表。Identity Manager X509 证书登录模块使用它们来查找相关的 Identity Manager 用户。

idm/sample/rules 中包含一个名为 LoginCorrelationRules.xml 的登录关联规则样例。

创建自定义关联规则后,必须将其导入 Identity Manager。在 "Administrator Interface" 中选择 Configure,然后选择 Import Exchange File,以使用文件导入工具。

测试 SSL 连接

要测试 SSL 连接,可使用 SSL 转至已配置的应用程序界面的 URL(例如,https//idm007:7002/idm/user/login.jsp)。您会被告知正在进入一个安全站点,然后提示您指定要发送 Web 服务器的个人证书。

诊断问题

通过 X509 证书进行验证的问题应以错误消息形式在登录表单中报告。要获得更全面的诊断,可在 Identity Manager 服务器中启用对以下各个类和级别的跟踪:

如果在 http 请求中客户机证书属性没有命名为 javaxservlet.request.X509Certificate,则会收到一条消息,说明无法在 http 请求中找到此属性。要更正这一点:

  1. 可启用对 SessionFactory 的跟踪,以查看完整的 http 属性列表,并确定 X509 证书的名称。
  2. 使用 Identity Manager 调试设备编辑 LoginConfig 对象。
  3. 将 Identity Manager X509 证书登录模块的 <LoginConfigEntry> 中的 <AuthnProperty> 名称改为正确的名称。
  4. 保存后重试。

也可能需要在登录应用程序中先删除,然后再重新添加 Identity Manager X509 证书登录模块。


加密的使用和管理

加密用于确保内存和系统信息库中的服务器数据、以及在服务器和网关之间传送的所有数据的机密性和完整性。

以下各节提供了有关如何在 Identity Manager 服务器和网关中使用和管理加密的更多信息,并阐述了有关服务器和网关加密密钥的问题。

受加密保护的数据

下表显示了在 Identity Manager 产品中受加密保护的数据类型,包括用于保护每种类型数据的加密器。

表 10-1  受加密保护的数据类型 

数据类型

RSA
MD5

NIST
Triple DES
168 位密钥
(DESede/ECB/NoPadding)

PKCS#5
基于密码的加密
56 位密钥
(PBEwithMD5andDES)

服务器加密密钥

 

默认

配置选项1

网关加密密钥

 

默认

配置选项1

字典策略词

是

 

 

用户密码

 

是

 

用户密码历史记录

 

是

 

用户答案

 

是

 

资源密码

 

是

 

资源密码历史记录

是

 

 

服务器和网关之间的所有有效负载

 

是

 

1通过系统配置对象使用 pbeEncrypt 属性或 "Manage Server Encryption" 任务进行配置。

服务器加密密钥的问题及答案

请阅读以下各节,以了解有关服务器加密密钥源、位置、维护和使用的常见问题的答案。

服务器加密密钥来自哪里?

服务器加密密钥是对称的 triple-DES 168 位密钥。服务器支持以下两类密钥:

在哪里维护服务器加密密钥?

在系统信息库中维护服务器加密密钥。在任一给定系统信息库中都会有许多数据加密密钥。

服务器如何知道使用哪个密钥对已加密的数据进行解密和重新加密?

存储于系统信息库中的每一加密数据都以服务器加密密钥(用于加密该数据)的 ID 为前缀。将包含加密数据的对象读入内存后,Identity Manager 使用与加密数据的 ID 前缀相关联的服务器加密密钥进行解密,然后使用相同的密钥重新加密(如果数据已更改)。

如何更新服务器加密密钥?

Identity Manager 提供了名为 "Manage Server Encryption" 的任务。此任务允许授权的安全管理员执行多项密钥管理任务,包括:

有关如何使用此任务的更多信息,请参见本章中的“管理服务器加密”。

如果更改“当前”服务器密钥,则会对现有加密数据造成什么样的影响?

没有影响。仍将使用现有加密数据 ID 前缀对应的密钥对现有加密数据进行解密或重新加密。如果生成了新的服务器加密密钥并设置为“当前”密钥,则任何要加密的新数据都将使用该新服务器密钥。


注

请勿从系统信息库中删除由某些对象的加密数据引用的任何服务器加密密钥,这一点非常重要;如果删除,服务器将无法解密数据。如果从另一个系统信息库导入包含加密数据的对象,则必须首先导入关联的服务器加密密钥以确保可以成功导入该对象。

为避免出现多密钥问题,以及为了更好地维护数据的完整性,可以使用 "Manage Server Encryption" 任务重新加密所有带有“当前”服务器加密密钥的现有加密数据。


怎样保护服务器密钥?

如果未将服务器配置为使用基于密码的加密 (PBE) - PKCS#5 加密(通过 pbeEncrypt 属性或 "Manage Server Encryption" 任务在系统配置对象中设置),则使用默认密钥对服务器密钥进行加密。对于安装的任何 Identity Manager,设置的默认密钥都是相同的。

如果将服务器配置为使用 PBE 加密,则每次启动服务器时都将生成 PBE 密钥。通过提供一个密码(由特定于服务器的秘密生成)作为 PBEwithMD5andDES 加密器来生成 PBE 密钥。PBE 密钥仅在内存中维护并从不具有持久性。另外,PBE 密钥对于共享一个公共系统信息库的所有服务器都是相同的。

要启用服务器密钥的 PBE 加密,加密器 PBEwithMD5 和 DES 必须可用。默认情况下,Identity Manager 不包括此加密法,但此加密法采用 PKCS#5 标准,许多 JCE 提供者实现(例如由 Sun 和 IBM 提供的实现)中都提供了该标准。

我可以导出服务器密钥以安全地存储在外部吗?

是。如果服务器密钥是 PBE 加密,则在导出之前,将使用默认密钥对这些密钥进行解密和重新加密。这使得它们可以独立于本地服务器 PBE 密钥而稍后被导入同一或其他服务器中。如果使用默认密钥对服务器密钥进行加密,则在导出之前不需要进行任何事先的处理。

将密钥导入服务器后,如果该服务器配置为 PBE 密钥,则将解密这些密钥。然后,如果该服务器配置为 PBE 密钥加密,则使用本地服务器的 PBE 密钥重新加密这些密钥。

将对服务器和网关之间的哪些数据进行加密?

在服务器和网关之间传送的所有数据(有效负载)都由针对每个服务器-网关会话随机生成的对称 168 位密钥进行 triple-DES 加密。

有关网关密钥的问题及答案

请阅读以下各节,以了解有关网关源、存储、分发和保护的常见问题的答案。

加密或解密数据的网关密钥来自哪里?

每次 Identity Manager 服务器连接到网关时,初始握手都将生成一个新的随机 168 位 triple-DES 会话密钥。此密钥将用于加密或解密随后在服务器和网关之间传送的所有数据。对于每个服务器/网关对,生成的会话密钥都是唯一的。

如何将网关密钥分发到网关?

会话密钥由服务器随机生成,然后在服务器和网关之间安全地进行交换,方法是使用作为服务器到网关初始握手的一部分的共享机密主密钥对会话密钥进行加密。

在初始握手期间,服务器会查询网关来确定网关支持的模式。网关可以以两种模式操作

我可以更新网关密钥(用于加密或解密服务器到网关有效负载)吗?

Identity Manager 提供了名为 "Manage Server Encryption" 的任务,它允许授权的安全管理员执行多项密钥管理任务,包括生成新的“当前”网关密钥并使用该“当前”网关密钥更新所有网关。这是用于加密每个会话密钥(用于保护在服务器和网关之间传送的所有有效负载)的密钥。将使用默认密钥或 PBE 密钥对新生成的网关密钥进行加密,具体取决于系统配置中 pbeEncrypt 属性的值。

在服务器、网关的什么地方存储网关密钥?

在服务器上,网关密钥就像服务器密钥一样存储在系统信息库中。在网关上,网关密钥存储于本地注册表主键中。

怎样保护网关密钥?

保护网关密钥的方式与保护服务器密钥相同。如果将服务器配置为使用 PBE 加密,则网关密钥将使用 PBE 生成的密钥进行加密。如果该选项为 False,则将使用默认密钥加密。有关更多信息,请参见前面标题为“怎样保护服务器密钥?”的一节。

我可以导出网关密钥以安全地存储在外部吗?

可以通过 "Manage Server Encryption" 任务导出网关密钥,就像导出服务器密钥一样。有关更多信息,请参见前面标题为“我可以导出服务器密钥以安全地存储在外部吗?”的一节。

如何销毁服务器和网关密钥?

通过从服务器系统信息库中删除服务器和网关密钥就可以销毁它们。请注意,只要仍在使用该密钥加密服务器数据或仍有网关依赖该密钥,就不应该删除该密钥。通过执行 "Manage Server Encryption" 任务,可以使用当前服务器密钥重新加密所有服务器数据,并将当前网关密钥与所有网关同步以确保在删除任何旧密钥之前不再使用旧密钥。


管理服务器加密

Identity Manager 服务器加密功能允许您创建新的 3DES 服务器加密密钥,然后使用 3DES 或 PKCS#5 加密对这些密钥进行加密,如下图中所示。只有具备“安全管理员”权能的用户才可以运行 "Manage Server Encryption" 任务(该任务可从 Tasks 选项卡访问)。

图 10-1  管理服务器加密任务

选择 Run Tasks,然后从列表中选择 "Manage Server Encryption",为此任务配置以下信息:


安全实践

作为 Identity Manager 管理员,可以通过在安装时和安装后遵照以下建议进一步减少受保护帐户和数据的安全风险。

安装时

您应:

使用时

您应:

如果您的应用服务器是 Servlet 2.2 兼容的服务器,则 Identity Manager 安装进程会将 http 会话超时设置为默认值 30 分钟。通过编辑属性可以更改此值;但是,应将此值设置得更小,以提高安全性。不要将此值设置为高于 30 分钟。

要更改会话超时值:

  1. 编辑 web.xml 文件,该文件位于
    应用服务器目录树中的 idm/WEB-INF 目录。
  2. 更改下列各行中的数字值:
  3. <session-config>
    <session-timeout>30</session-timeout>
    </session-config>



上一页      目录      索引      下一页     


文件号码: 820-0140。   版权所有 2006 Sun Microsystems, Inc. 保留所有权利。