如果 Access Manager 安裝於範圍模式下,則不論何時建立新群組,Access Manager 都會動態建立一個群組管理員,且該管理員具有管理群組所需的 ACI。在範圍模式中,不會使用這些群組管理員 ACI。然而,Directory Server 處理尾碼下的項目時,仍會評估它們,這樣可能會降低 Access Manager 的效能,特別是在部署建立了大量群組時。
解決方法:針對此問題的解決方法包含兩個部分:
防止 Access Manager 在建立新群組時建立群組管理員與對應的 ACI
從 Directory Server 移除所有現存的 ACI
防止建立群組管理員 ACI
下列程序會防止 Access Manager 在建立新群組時,建立群組管理員與對應的 ACI。
此程序會永遠防止在建立新群組時,建立群組管理員與對應的 ACI。僅在此行為適用於您的特定部署時,才使用此程序。
備份 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。
在 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=(&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>
使用 amadmin 從 Access Manager 刪除 Admin Console 服務。例如,在 Solaris 系統上:
# cd /opt/SUNWam/bin # ./amadmin -u amadmin -w amadmin_password --deleteService iPlanetAMAdminConsoleService
使用 amadmin 將 Admin Console 服務從步驟 2 中已編輯的 amAdminConsole.xml 檔案重新載入至 Access Manager 。例如:
# ./amadmin -u amadmin -w amadmin_password -t /etc/opt/SUNWam/config/xml/amAdminConsole.xml
重新啟動 Access Manager Web 容器。(如果您如下一程序所描述,規劃從目錄伺服器刪除 ACI,請在完成該程序後,等候並重新啟動 Web 容器。)
移除現存的群組管理員 ACI
下列程序使用 ldapsearch 與 ldapmodify 公用程式來搜尋與移除群組管理員 ACI。如果您的部署是使用 Directory Server 6.0,則也可以使用 Directory Server Control Center (DSCC) 或 dsconf 指令來實現這些功能。如需詳細資訊,請參閱 Directory Server 6.0 文件:
http://docs.sun.com/app/docs/coll/1224.1 及 http://docs.sun.com/app/docs/coll/1632.1
下列程序會移除已經存在於 Directory Server 中的群組管理員 ACI。
建立 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"; )
使用 ldapmodify 配合前一個步驟中的 LDIF 檔案來從 Directory Server 中移除群組 ACI。例如:
# ldapmodify -h ds-host -p 389 -D "cn=Directory Manager" -w ds-bind-password -f Remove_Group_ACIs.ldif
重新啟動 Access Manager Web 容器。