|
WebLogic Server 包含一个嵌入式 LDAP 服务器,该服务器充当 WebLogic 身份验证、授权、凭据映射和角色映射提供程序的默认安全提供程序数据存储。以下部分介绍如何管理嵌入式 LDAP 服务器:
配置嵌入式 LDAP 服务器
嵌入式 LDAP 服务器包含用户、组、组成员资格、安全角色、安全策略和凭据映射信息。默认情况下,每个 WebLogic Server 域都有一个嵌入式 LDAP 服务器,并且该服务器已使用为每种类型的信息设置的默认值进行了配置。WebLogic 身份验证、授权、凭据映射和角色映射提供程序将嵌入式 LDAP 服务器用作其数据存储。如果在新的安全领域中使用这些提供程序中的任何一个,则可能需要更改嵌入式 LDAP 服务器的默认值,以使其在您环境中的使用得到优化。
| 注意: |
嵌入式 LDAP 服务器在用户数少于 50,000 时性能最佳。如果存在更多的用户,请考虑使用其他的 LDAP 服务器和身份验证提供程序。 |
请参阅“管理控制台联机帮助”中的配置嵌入式 LDAP 服务器。
嵌入式 LDAP 服务器使用的数据文件和更改日志文件可能会变得非常大。可以使用下列 weblogic.Server 命令行参数配置这些文件的最大大小:
-Dweblogic.security.ldap.maxSize=<max bytes>,它可以限制由嵌入式 LDAP 服务器使用的数据文件的大小。当数据文件超过指定的大小时,WebLogic Server 会删除由已删除条目所占用的数据文件空间。
-Dweblogic.security.ldap.changeLogThreshold=<number of entries>,它可以限制由嵌入式 LDAP 服务器使用的更改日志文件的大小。当更改日志文件超过指定的条目数时,WebLogic Server 会删除已发送到所有受管服务器的所有条目,以此来截断更改日志。
嵌入式 LDAP 服务器复制
域的 WebLogic Server 嵌入式 LDAP 服务器由一个主 LDAP 服务器(在域的管理服务器中维护)和一个复制的 LDAP 服务器(在域的每个受管服务器中维护)组成。当使用受管服务器进行更改后,将向管理服务器上的嵌入式 LDAP 服务器发送更新。管理服务器上的 LDAP 服务器维护所有更改的日志。管理服务器上的嵌入式 LDAP 服务器还维护各个受管服务器及其当前更改状态的列表。此外,管理服务器上的嵌入式 LDAP 服务器会向每个受管服务器发送适当的更改,同时更新每个服务器的更改状态。当对管理服务器上的嵌入式 LDAP 服务器进行更新时,便会发生此过程。但是,将更改复制到受管服务器可能需要几秒或更多的时间,具体取决于更新的数目。
使用管理控制台可以对域中管理服务器上的嵌入式 LDAP 服务器以及受管服务器的行为进行配置。在管理控制台的“域: 安全: 嵌入式 LDAP 服务器”页上,可以设置下列特性:
“启动时刷新副本” – 指定受管服务器中的嵌入式 LDAP 服务器是否应在引导时刷新所有复制的数据。如果在受管服务器处于不活动状态时进行了大量更改,并且要下载整个副本而不是让管理服务器将每个更改推入到“受管服务器”,则需要使用此项。
“首选主服务器” - 指定受管服务器是否应始终连接到管理服务器上的嵌入式 LDAP 服务器,而不是连接到本地复制的 LDAP 服务器。
请参阅“管理控制台联机帮助”中的配置嵌入式 LDAP 服务器。
| 注意: |
在通过 WebLogic 管理控制台删除和修改配置的安全提供程序时,可能需要手动清除嵌入式 LDAP 服务器。使用外部 LDAP 浏览器可删除不必要的信息。 |
通过 LDAP 浏览器查看嵌入式 LDAP 服务器的内容
要通过 LDAP 浏览器查看嵌入式 LDAP 服务器的内容,请执行下列操作:
下载并安装外部 LDAP 浏览器。可以在以下位置找到 LDAP 浏览器:
http://www-unix.mcs.anl.gov/~gawor/ldap/
本过程的使用前提是您使用此 LDAP 浏览器;其他 LDAP 浏览器可能会在细节上有所不同。
在 WebLogic Server 管理控制台中,更改嵌入式 LDAP 服务器的凭据:
展开“域”>“安全”>“嵌入式 LDAP”。
在“凭据”字段中,输入新的凭据。
在“确认凭据”字段中,再次输入新凭据。
单击“保存”。
重新启动 WebLogic Server。
| 警告: |
更改凭据会影响域的操作。请勿在生产服务器上执行此步骤。 |
启动 LDAP 浏览器。要启动步骤 1 中提到的 LDAP 浏览器/编辑器,请使用此命令:
lbe.sh
在 LDAP 浏览器中,配置一个新的连接:
选择“快速连接”选项卡。
将“主机”字段设置为 localhost.。
将“端口”字段设置为 7001(如果使用的是 SSL,则设置为 7002)。
将“基本 DN”字段设置为 dc=mydomain,其中 mydomain 是所使用的 WebLogic Server 域的名称。
取消选中“匿名绑定”选项。
将“用户 DN”字段设置为 cn=Admin。
将“密码”字段设置为步骤 2 中指定的凭据。
单击此新连接。
使用 LDAP 浏览器在嵌入式 LDAP 服务器的层次结构中进行导航。
导出和导入嵌入式 LDAP 服务器中的信息
可以使用 WebLogic Server 管理控制台或 LDAP 浏览器导出和导入嵌入式 LDAP 服务器中的数据。要使用控制台导出和导入数据,请使用每个安全提供程序的“迁移”页。请参阅“管理控制台联机帮助”中的从安全提供程序导出数据和将数据导入到安全提供程序中。
本部分描述如何使用 LDAP 浏览器导出和导入嵌入式 LDAP 服务器中存储的数据。表 9-1 概括了数据在嵌入式 LDAP 服务器层次结构中的存储位置。
表 9-1 嵌入式 LDAP 服务器中的安全数据的位置
|
|
|
|
|
ou=people,ou=myrealm,dc=mydomain |
|
|
ou=groups,ou=myrealm,dc=mydomain |
|
|
ou=ERole,ou=myrealm,dc=mydomain |
|
|
ou=EResource,ou=myrealm,dc=mydomain |
要使用 LDAP 浏览器/编辑器导出嵌入式 LDAP 服务器中的安全数据,请执行下列操作:
在命令提示下输入以下命令以启动 LDAP 浏览器/编辑器:
lbe.sh
指定要导出的数据(例如,要导出用户,则应指定 ou=people,ou=myrealm,dc=mydomain)。
选择“LDIF”>“导出”选项。
选择“导出所有子项”。
指定要将数据导出到的文件的名称。
要使用 LDAP 浏览器/编辑器将安全数据导入嵌入式 LDAP 服务器,请执行下列操作:
在命令提示下输入以下命令以启动 LDAP 浏览器:
lbe.sh
指定要导入的数据(例如,要导入用户,则应指定 ou=people,ou=myrealm,dc=mydomain)。
在 LDAP 浏览器/编辑器中,选择“LDIF”>“导入”选项。
选择“更新/添加”。
指定要从其导入数据的文件的名称。
LDAP 访问控制语法
嵌入式 LDAP 服务器支持 LDAPv3 的 IETF LDAP 访问控制模型。本部分描述该访问控制是如何在嵌入式 LDAP 服务器中实现的。可以将这些规则直接应用于标准指定的目录中的条目,也可以通过编辑访问控制文件 (acls.prop) 来维护它们。
| 注意: |
嵌入式 LDAP 服务器的默认行为是仅允许通过 WebLogic Server 中的管理帐户进行访问。WebLogic 安全提供程序仅使用管理帐户访问嵌入式 LDAP 服务器。如果不打算从外部 LDAP 浏览器访问嵌入式 LDAP 服务器,或如果仅计划使用管理帐户,则不需要编辑 acls.prop 文件并可以忽略本部分中的信息。 |
访问控制文件
由嵌入式 LDAP 服务器维护的访问控制文件 (acls.prop) 包含整个 LDAP 目录的访问控制列表 (ACL) 的完整列表。访问控制文件中的每一行都包含一个访问控制规则。访问控制规则由下列组件组成:
清单 9-1 显示了一个示例访问控制文件。
访问控制位置
每个访问控制规则都适用于 LDAP 目录中的一个给定位置。该位置通常是一个可分辨名称 (DN),但如果访问控制规则适用于整个目录,则可以在 acls.prop 文件中指定特殊位置 [root]。
如果要在 LDAP 服务器上访问或修改的条目不等于访问控制规则的位置或未驻留在该位置之下,则不对给定的访问控制规则进行进一步计算。
访问控制范围
以下是定义的访问控制范围:
条目 – 仅当 LDAP 目录中的条目与访问控制规则的位置共享同一 DN 时,才会计算范围为条目的 ACL。当单个条目比它的平行条目或子条目包含更多的敏感信息时,此类规则便十分有用。
子树 – 如果 LDAP 目录中的条目等于此访问控制的位置或以该位置结尾,则会计算子树范围。此范围保护此位置的条目及其所有子条目。
如果覆盖目录中某个条目的访问控制规则之间存在冲突(例如,当一个规则为条目规则,而另一个规则为子树规则时),则条目规则会因为子树规则而优先于其他适用规则。
访问权限
访问权限适用于整个对象或该对象的特性。可以授予访问,也可以拒绝访问。在创建或更新访问控制规则时,可以使用 grant 和 deny 中的任何一个操作。
每个 LDAP 访问权限都是无联系的。一种权限并不表示另一种权限。权限指定可以执行的 LDAP 操作的类型。
特性权限
下列权限适用于涉及特性的操作。
表 9-2 特性权限
|
|
|
|
|
读取特性。如果授予此权限,则允许在读取或搜索操作中返回特性和值。 |
|
|
修改或添加特性。如果授予此权限,则允许在修改操作中添加特性和值。 |
|
|
修改和删除特性。如果授予此权限,则允许在修改操作中删除特性和值。 |
|
|
搜索具有指定特性的条目。如果授予此权限,则允许在搜索操作中包括特性和值。 |
|
|
比较特性值。如果授予此权限,则允许在比较操作中包括特性和值。 |
|
|
|
对于在创建对象时为对象设置的所有特性,都需要 m 权限。正如 w 和 o 权限用于修改操作一样,m 权限用于添加操作。w 和 o 权限与添加操作无关,m 与修改操作无关。由于尚不存在新对象,因此必须向新对象的父对象授予创建新对象所需的 a 和 m 权限。此要求不同于 w 和 o 权限,这两个权限的授予对象必须是要修改的对象。m 权限不同且独立于 w 和 o 权限,这样,向任一条目添加新子条目所需的权限与修改同一条目的现有子条目所需的权限之间便不会发生冲突。要通过修改操作替换值,用户必须同时具有 w 和 o 权限。
条目权限
下列权限适用于全部 LDAP 条目。
表 9-3 条目权限
|
|
|
|
|
在此 LDAP 条目之下添加一个条目。如果授予此权限,则允许在 DIT 主题中创建一个条目来控制创建新条目时在该条目上设置的所有特性和值。要添加条目,还必须至少授予添加强制特性的权限。 |
|
|
删除此条目。如果授予此权限,则允许从 DIT 中删除条目,而不论该条目中的特性上应用了哪些控制。 |
|
|
如果授予此权限,则允许导出条目及其子条目(如果有);即,从当前位置删除并置于一个新的位置,其前提是在目标处授予适当的权限。
如果更改了最后一个 RDN,则还需要在当前位置授予 Rename 权限。
要导出条目或它的子条目,不需要向它们包含的特性(包括 RDN 特性)授予任何权限。即使在操作因 RDN 更改而导致添加或删除新的特性值时也不例外。 |
|
|
如果授予此权限,则允许导入条目及其子条目(如果有);即,从一个位置删除并置于指定的位置(前提是为新位置授予了适当的权限)。
当导入条目或它的子条目时,不需要向它们包含的特性(包括 RDN 特性)授予任何权限。即使在操作因 RDN 更改而导致添加或删除新的特性值时也不例外。 |
|
|
更改 LDAP 条目的 DN。由于重命名条目后会更改子条目的 DN,因此需要授予 Rename 权限才能使用新的 RDN 重命名条目。如果不更改上一级条目的名称,则只需授予此权限即可。
当重命名条目时,不需要向它包含的特性(包括 RDN 特性)授予任何权限。即使在操作因 RDN 更改而导致添加或删除新的特性值时也不例外。 |
|
|
浏览条目的 DN。如果授予此权限,则允许使用未显式提供条目名的目录操作访问条目。 |
|
|
允许在操作结果中公开条目的 DN。如果授予此权限,则允许在操作结果中公开条目的可分辨名称。 |
特性类型
ACL 中应在必要时列出访问控制规则所适用的特性类型。以下是可用的关键字:
[entry] 指示权限适用于整个对象。这可以是诸如删除对象或添加子对象之类的操作。
[all] 指示权限适用于条目的所有特性。
如果在 ACL 中指定了关键字 [all] 和另一个特性,则该特性的较具体的权限将覆盖由 [all] 关键字指定的较宽泛的权限。
主题类型
访问控制规则可以与多种主题类型相关联。访问控制规则的主题决定了访问控制规则是否适用于当前连接的会话。
以下是定义的主题类型:
authzID - 适用于可以指定为主题定义的组成部分的单个用户。该用户在 LDAP 目录中的标识通常定义为 DN。
Group - 适用于由下列对象类之一指定的用户组:
Subtree - 适用于指定为主题组成部分的 DN以及 LDAP 目录树中的所有子条目。
IP Address - 适用于特定的 Internet 地址。当所有访问必须通过代理或其他服务器时,便可以使用此主题类型。它仅适用于特定的主机,而不适用于某个范围或子网。
Public - 适用于连接到目录的任何用户,而无论他们是否已经过身份验证。
This - 适用于其 DN 与要访问的条目的 DN 相匹配的用户。
授予/拒绝计算规则
是授予还是拒绝客户端对条目中信息的访问,这一决定取决于与访问控制规则和要保护的条目相关的多种因素。在整个决策制订过程中,适用以下指导原则:
较具体的规则将覆盖较宽泛的规则(例如,ACL 中的各个用户条目优先于组条目)。
如果在考虑了规则的特殊性后仍存在冲突,则将由规则的主题决定要应用的规则。基于 IP Address 主题的规则的优先级最高,适用于特定 AuthzID 或 This 主题的规则次之。属于下一优先级的是适用于 Group 主题的规则。适用于 Subtree 和 Public 主题的规则的优先级最低。
当存在 ACL 值冲突时,拒绝优先于授予。
拒绝是不存在访问控制信息时的默认设置。此外,条目范围优先于子树范围。
|