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 容器。(如果您如下一程序所描述,規劃從目錄伺服器刪除 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/1632.1


下列程序會移除已經存在於 Directory Server 中的群組管理員 ACI。

  1. 建立 LDIF 檔案以配合 ldapmodify 使用來移除群組管理員 ACI。若要找到這些 ACI,請使用 ldapsearch (或您偏好的目錄搜尋工具)。

    例如,在名為 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 檔案來從 Directory Server 中移除群組 ACI。例如:

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