Sun Java System Access Manager 7.1 发行说明

性能问题

在领域模式下,创建新组时会生成带有 ACI 的组管理员,而这些 ACI 永远不会得到使用 (6485695)

如果 Access Manager 安装在领域模式下,每当创建新组时,Access Manager 都会动态创建一个组管理员,且该管理员带有管理该组所需的 ACI。在领域模式下,这些组管理员 ACI 不会被使用。然而,当 Directory Server 处理后缀下的条目时,仍然要评估它们,这就降低了 Access Manager 的性能,尤其是在部署创建了大量组的情况下。

解决方法:此问题的解决方法包括两部分:

阻止创建组管理员 ACI

下列过程可阻止 Access Manager 在创建新组时创建组管理员和相应的 ACI。


注 –

该过程会永久性阻止在创建新组时创建组管理员和相应的 ACI。仅当此行为适合您的特定部署时才使用该过程。


  1. 备份 amAdminConsole.xml 文件。根据您的平台,此文件位于下列目录:

    • Solaris 系统:/etc/opt/SUNWam/config/xml

    • Linux 及 HP-UX 系统:/etc/opt/sun/identity/config/xml

    • Windows 系统:javaes-install-dir\identity\config\xml

      javaes-install-dir 表示 Java ES 5 安装目录。其默认值为 C:\Program Files\Sun\JavaES5

  2. amAdminConsole.xml 文件中删除下列注释行之间的组管理员条目:

    <AttributeSchema name="iplanet-am-admin-console-dynamic-aci-list"
        type="list"
        syntax="string"
        i18nKey="g111">
        <DefaultValues>
    ...
    # Beginning of entry to delete
                    <Value>Group Admin|Group Admin Description|ORGANIZATION:aci: 
    (target="ldap:///GROUPNAME")(targetattr = "*") 
    (version 3.0; acl "Group and people container admin role"; 
    allow (all) roledn = "ldap:///ROLENAME";)##ORGANIZATION:aci: 
    (target="ldap:///ORGANIZATION")
    (targetfilter=(&amp;FILTER(!(|(nsroledn=cn=Top-level Admin Role,dc=iplanet,dc=com)
    (nsroledn=cn=Top-level Help Desk Admin Role,dc=iplanet,dc=com)
    (nsroledn=cn=Top-level Policy Admin Role,dc=iplanet,dc=com)
    (nsroledn=cn=Organization Admin Role,ORGANIZATION)
    (nsroledn=cn=Container Admin Role,ORGANIZATION)
    (nsroledn=cn=Organization Policy Admin Role,ORGANIZATION)))))
    (targetattr != "iplanet-am-web-agent-access-allow-list || 
    iplanet-am-web-agent-access-not-enforced-list|| 
    iplanet-am-domain-url-access-allow || 
    iplanet-am-web-agent-access-deny-list ||nsroledn")
    (version 3.0; acl "Group admin's right to the members"; allow (read,write,search) 
    roledn = "ldap:///ROLENAME";)</Value>
    # End of entry to delete
    ...
        </DefaultValues>
    </AttributeSchema>
  3. amadmin 从 Access Manager 中删除 Admin Console 服务。例如,在 Solaris 系统上:

    # cd /opt/SUNWam/bin
    # ./amadmin -u amadmin -w amadmin_password 
    --deleteService iPlanetAMAdminConsoleService
  4. 使用 amadmin 将 Admin Console 服务从步骤 2 中已编辑的 amAdminConsole.xml 文件中重新装入到 Access Manager。例如:

    # ./amadmin -u amadmin -w amadmin_password 
    -t /etc/opt/SUNWam/config/xml/amAdminConsole.xml
  5. 重新启动 Access Manager Web 容器。(如果计划按下一过程所述内容从 Directory Server 中删除 ACI,请在完成该过程后等待并重新启动 Web 容器。)

删除现有的组管理员 ACI


注 –

下列过程用 ldapsearchldapmodify 实用程序找到并删除组管理员 ACI。如果您的部署使用 Directory Server 6.0,则也可以用 Directory Server Control Center (DSCC) 或 dsconf 命令来完成这些功能。有关更多信息,参见 Directory Server 6.0 文档:

http://docs.sun.com/app/docs/coll/1224.1http://docs.sun.com/app/docs/coll/1606.1


下列过程删除已经存在于 Directory Server 上的组管理员 ACI。

  1. 创建一个 LDIF 文件以搭配 ldapmodify 使用来删除组管理员 ACI。使用 ldapsearch(或其他您喜欢的目录搜索工具)可找到这些 ACI。

    例如,命名为 Remove_Group_ACIs.ldif 的范例 LDIF 文件中的以下条目将删除命名为 New Group 的组的 ACI:

    dn: ROOT_SUFFIX
    changetype: modify
    delete: aci
    aci: (target="ldap:///cn=New Group,ou=Groups,o=isp")(targetattr = "*") 
    (version 3.0; acl "Group and people container admin role"; allow (all) 
    roledn = "ldap:///cn=cn=New Group_ou=Groups_o=isp,o=isp";)
    
    dn: ROOT_SUFFIX
    changetype: modify
    delete: aci
    aci: (target="ldap:///ou=People,o=isp")(targetattr="nsroledn")
    (targattrfilters="add=nsroledn:(!(nsroledn=*)),
    del=nsroledn:(!(nsroledn=*))") (version 3.0; 
    acl "Group admin's right to add user to people container"; allow (add) 
    roledn = "ldap:///cn=cn=New Group_ou=Groups_o=isp,o=isp";)
    
    dn: ROOT_SUFFIX
    changetype: modify
    delete: aci
    aci: (target="ldap:///o=isp")
    (targetfilter=(&(|(memberof=*cn=New Group,ou=Groups,o=isp)
    (iplanet-am-static-group-dn=*cn=New Group,ou=Groups,o=isp))
    (!(|(nsroledn=cn=Top-level Admin Role,o=isp)
    (nsroledn=cn=Top-level Help Desk Admin Role,o=isp)
    (nsroledn=cn=Top-level Policy Admin Role,o=isp)
    (nsroledn=cn=Organization Admin Role,o=isp)(
    nsroledn=cn=Container Admin Role,o=isp)
    (nsroledn=cn=Organization Policy Admin Role,o=isp)))))
    (targetattr != "iplanet-am-web-agent-access-allow-list || 
    iplanet-am-web-agent-access-not-enforced-list || 
    iplanet-am-domain-url-access-allow || 
    iplanet-am-web-agent-access-deny-list ||nsroledn")
    (version 3.0; acl "Group admin's right to the members"; 
    allow (read,write,search) 
    roledn = "ldap:///cn=cn=New Group_ou=Groups_o=isp,o=isp";) 
    aci: (target="ldap:///o=isp")(targetattr="*")
    (version 3.0; acl "S1IS special dsame user rights for all under the root suffix"; 
    allow (all) userdn = "ldap: ///cn=dsameuser,ou=DSAME Users,o=isp"; )
  2. 使用 ldapmodify 搭配上一步的 LDIF 文件将组 ACI 从 Directory Server 上删除。例如:

    # ldapmodify -h ds-host -p 389 -D "cn=Directory Manager" 
    -w ds-bind-password -f Remove_Group_ACIs.ldif
  3. 重新启动 Access Manager Web 容器。