정책 API와 Access Manager 콘솔을 통해 정책을 만들고 수정하고 삭제할 수 있으며 amadmin 명령줄 도구를 통해 정책을 만들고 삭제할 수 있습니다. amadmin 유틸리티를 사용하여 XML의 정책을 가져오고 나열할 수도 있습니다. 이 절에서는 amadmin 명령줄 유틸리티와 Access Manager 콘솔을 통해 정책을 만드는 방법에 대해 설명합니다. 정책 API에 대한 자세한 내용은 Sun Java System Access Manager 7.1 Developer’s Guide를 참조하십시오.
정책은 일반적으로 XML 파일을 사용하여 만들어지며 amadmin 명령줄 유틸리티를 통해 Access Manager에 추가된 후 Access Manager 콘솔을 사용하여 관리됩니다(콘솔을 사용하여 정책을 만들 수도 있음). amadmin을 사용하여 직접 정책을 수정할 수 없기 때문입니다. 정책을 수정하려면 Access Manager에서 정책을 삭제한 다음 amadmin을 사용하여 수정된 정책을 추가해야 합니다.
일반적으로 정책은 영역(또는 하위 영역) 수준에서 만들어져 영역 트리 전체에 사용됩니다.
amadmin.dtd를 기반으로 정책 XML 파일을 만듭니다. 이 파일은 다음 디렉토리에 있습니다.
AccessManager-base/SUNWam/dtd
다음은 정책 XML 파일의 한 예입니다. 이 예에는 기본 주제와 조건 값이 모두 포함되어 있습니다. 이러한 값에 대한 정의는 정책 유형을 참조하십시오.
<Policy name="bigpolicy" referralPolicy="false" active="true" > <Rule name="rule1"> <ServiceName name="iPlanetAMWebAgentService" /> <ResourceName name="http://thehost.thedomain.com:80/*.html" /> <AttributeValuePair> <Attribute name="POST" /> <Value>allow</Value> </AttributeValuePair> <AttributeValuePair> <Attribute name="GET" /> <Value>allow</Value> </AttributeValuePair> </Rule> <Subjects name="subjects" description="desccription"> <Subject name="webservicescleint" type="WebServicesClients" includeType="inclusive"> <AttributeValuePair><Attribute name="Values"/><Value>CN=sun-unix, OU=SUN Java System Access Manager, O=Sun, C=US</Value> </AttributeValuePair> </Subject> <Subject name="amrole" type="IdentityServerRoles" includeType="inclusive"> <AttributeValuePair><Attribute name="Values"/><Value> cn=organization admin role,o=realm1,dc=red,dc=iplanet,dc=com</Value> </AttributeValuePair> </Subject> <Subject name="au" type="AuthenticatedUsers" includeType="inclusive"> </Subject> <Subject name="ldaporganization" type="Organization" includeType="inclusive"> <AttributeValuePair><Attribute name="Values"/> <Value>dc=red,dc=iplanet,dc=com</Value> </AttributeValuePair> </Subject> <Subject name="ldapuser" type="LDAPUsers" includeType="inclusive"> <AttributeValuePair><Attribute name="Values"/> <Value>uid=amAdmin,ou=People,dc=red,dc=iplanet,dc=com</Value> </AttributeValuePair> </Subject> <Subject name="ldaprole" type="LDAPRoles" includeType="inclusive"> <AttributeValuePair><Attribute name="Values"/> <Value>cn=Organization Admin Role,o=realm1,dc=red,dc=iplanet,dc=com</Value> </AttributeValuePair> </Subject> <Subject name="ldapgroup" type="LDAPGroups" includeType="inclusive"> <AttributeValuePair><Attribute name="Values"/> <Value>cn=g1,ou=Groups,dc=red,dc=iplanet,dc=com</Value> </AttributeValuePair> </Subject> <Subject name="amidentitysubject" type="AMIdentitySubject" includeType="inclusive"> <AttributeValuePair><Attribute name="Values"/> <Value>id=amAdmin,ou=user,dc=red,dc=iplanet,dc=com</Value> </AttributeValuePair> </Subject> </Subjects> <Conditions name="conditions" description="description"> <Condition name="ldapfilter" type="LDAPFilterCondition"> <AttributeValuePair><Attribute name="ldapFilter"/> <Value>dept=finance</Value> </AttributeValuePair> </Condition> <Condition name="authlevelge-nonrealmqualified" type="AuthLevelCondition"> <AttributeValuePair><Attribute name="AuthLevel"/> <Value>1</Value> </AttributeValuePair> </Condition> <Condition name="authlevelle-realmqaulfied" type="LEAuthLevelCondition"> <AttributeValuePair><Attribute name="AuthLevel"/> <Value>/:2</Value> </AttributeValuePair> </Condition> <Condition name="sessionproperties" type="SessionPropertyCondition"> <AttributeValuePair><Attribute name="valueCaseInsensitive"/> <Value>true</Value> </AttributeValuePair> <AttributeValuePair><Attribute name="a"/><Value>10</Value> <Value>20</Value> </AttributeValuePair> <AttributeValuePair><Attribute name="b"/><Value>15</Value> <Value>25</Value> </AttributeValuePair> </Condition> <Condition name="activesessiontime" type="SessionCondition"> <AttributeValuePair><Attribute name="TerminateSession"/> <Value>session_condition_false_value</Value> </AttributeValuePair> <AttributeValuePair><Attribute name="MaxSessionTime"/> <Value>30</Value> </AttributeValuePair> </Condition> <Condition name="authelevelle-nonrealmqualfied" type="LEAuthLevelCondition"> <AttributeValuePair><Attribute name="AuthLevel"/> <Value>2</Value> </AttributeValuePair> </Condition> <Condition name="ipcondition" type="IPCondition"> <AttributeValuePair><Attribute name="DnsName"/> <Value>*.iplanet.com</Value> </AttributeValuePair> <AttributeValuePair><Attribute name="EndIp"/> <Value>145.15.15.15</Value> </AttributeValuePair> <AttributeValuePair><Attribute name="StartIp"/> <Value>120.10.10.10</Value> </AttributeValuePair> </Condition> <Condition name="authchain-realmqualfied" type="AuthenticateToServiceCondition"> <AttributeValuePair><Attribute name="AuthenticateToService"/> <Value>/:ldapService</Value> </AttributeValuePair> </Condition> <Condition name="auth to realm" type="AuthenticateToRealmCondition"> <AttributeValuePair><Attribute name="AuthenticateToRealm"/> <Value>/</Value> </AttributeValuePair> </Condition> <Condition name="authlevelge-realmqualified" type="AuthLevelCondition"> <AttributeValuePair><Attribute name="AuthLevel"/> <Value>/:2</Value> </AttributeValuePair> </Condition> <Condition name="authchain-nonrealmqualfied" type="AuthenticateToServiceCondition"> <AttributeValuePair><Attribute name="AuthenticateToService"/> <Value>ldapService</Value> </AttributeValuePair> </Condition> <Condition name="timecondition" type="SimpleTimeCondition"> <AttributeValuePair><Attribute name="EndTime"/> <Value>17:00</Value> </AttributeValuePair> <AttributeValuePair><Attribute name="StartTime"/> <Value>08:00</Value> </AttributeValuePair> <AttributeValuePair><Attribute name="EndDate"/> <Value>2006:07:28</Value> </AttributeValuePair> <AttributeValuePair><Attribute name="EnforcementTimeZone"/> <Value>America/Los_Angeles</Value> </AttributeValuePair> <AttributeValuePair><Attribute name="StartDay"/> <Value>mon</Value> </AttributeValuePair> <AttributeValuePair><Attribute name="StartDate"/> <Value>2006:01:02</Value> </AttributeValuePair> <AttributeValuePair><Attribute name="EndDay"/> <Value>fri</Value> </AttributeValuePair> </Condition> </Conditions> <ResponseProviders name="responseproviders" description="description"> <ResponseProvider name="idresponseprovidere" type="IDRepoResponseProvider"> <AttributeValuePair> <Attribute name="DynamicAttribute"/> </AttributeValuePair> <AttributeValuePair> <Attribute name="StaticAttribute"/> <Value>m=10</Value> <Value>n=30</Value> </AttributeValuePair> </ResponseProvider> </ResponseProviders> </Policy>
일단 정책 XML 파일이 만들어지면 다음 명령을 사용하여 로드할 수 있습니다.
AccessManager-base/SUNWam/bin/amadmin --runasdn "uid=amAdmin,ou=People,default_org, root_suffix" --password password --data policy.xml |
여러 정책을 동시에 추가하려면 각 XML 파일에 정책을 하나씩 사용하는 대신 XML 파일 하나에 여러 정책을 입력합니다. 여러 XML 파일을 사용하여 정책을 빠르게 연속으로 로드하면 내부 정책 색인이 손상되어 일부 정책이 정책 평가에 포함되지 않을 수 있습니다.
amadmin을 통해 정책을 만들 경우, 인증 스키마 조건을 만드는 동안 인증 모듈이 영역에 등록되고 영역, LDAP 그룹, LDAP 역할 및 LDAP 사용자 주제를 만드는 동안 해당 LDAP 객체(영역, 그룹, 역할 및 사용자)가 존재하며 IdentityServerRoles 주제를 만드는 동안 Access Manager 역할이 존재하고 하위 영역 또는 피어 영역 참조를 만드는 동안 관련 영역이 존재하는지 확인합니다.
SubrealmReferral, PeerRealmReferral, Realm 주제, IdentityServerRoles 주제, LDAPGroups 주제, LDAPRoles 주제 및 LDAPUsers의 값 요소 텍스트에서 주제는 전체 DN이어야 합니다.
정책을 만들려는 영역을 선택합니다.
[정책] 탭을 누릅니다.
정책 목록에서 [새 정책]을 누릅니다.
정책에 대한 이름 및 설명을 추가합니다.
정책을 활성화하려면 활성 속성에서 [예]를 선택합니다.
이 시점에서 일반 정책에 대한 모든 필드를 정의할 필요는 없습니다. 정책을 만든 다음 나중에 규칙, 주제, 조건 및 응답 공급자를 추가할 수 있습니다. 자세한 내용은 정책 관리를 참조하십시오.
[확인]을 누릅니다.
[정책] 탭에서 [새 참조]를 누릅니다.
정책에 대한 이름 및 설명을 추가합니다.
정책을 활성화하려면 활성 속성에서 [예]를 선택합니다.
이 시점에서 참조 정책에 대한 모든 필드를 정의할 필요는 없습니다. 정책을 만든 다음 나중에 규칙 및 참조를 추가할 수 있습니다. 자세한 내용은 정책 관리를 참조하십시오.
[확인]을 누릅니다.
피어 및 하위 영역에 대해 정책을 만들려면 먼저 상위 또는 다른 피어 영역에 참조 정책을 만들어야 합니다. 참조 정책은 해당 규칙 정의에 하위 영역에서 관리될 자원 접두어를 포함해야 합니다. 상위 영역(또는 다른 피어 영역)에 참조 정책이 만들어지면 하위 영역(또는 피어 영역)에 일반 정책을 만들 수 있습니다.
이 예에서 o=isp는 상위 영역이고 o=example.com은 하위 영역으로, http://www.example.com의 자원과 하위 자원을 관리합니다.
o=isp에 참조 정책을 만듭니다. 참조 정책에 대한 내용은 참조 정책 수정 절차를 참조하십시오.
참조 정책은 http://www.example.com을 규칙의 자원으로 정의하고, example.com을 갖는 SubRealmReferral을 참조 값으로 포함해야 합니다.
example.com 하위 영역으로 이동합니다.
이제 isp에서는 example.com으로 자원을 참조하며 http://www.example.com 자원 또는 http://www.example.com으로 시작하는 모든 자원에 대한 일반 정책을 만들 수 있습니다.
example.com에 의해 관리되는 다른 자원에 대한 정책을 정의하려면 o=isp에 추가 참조 정책을 만들어야 합니다.
Access Manager를 사용하면 amadmin 명령줄 도구를 사용하여 정책을 내보낼 수 있습니다. 이 도구는 기존의 많은 정책을 다른 Access Manager 인스턴스로 옮기거나 일괄 처리 모드로 기존 정책에 대해 변경한 사항을 검사할 경우에 유용합니다. 정책을 내보내려면 amadmin 명령줄 유틸리티를 사용하여 지정된 정책을 파일로 내보냅니다. 구문은 다음과 같습니다.
amamdin - u username —w password —ofilename output_file.xml —t policy_data_file.xml
정책 이름에 와일드카드(*)를 사용하면 모든 문자열과 일치시킬 수 있습니다.
다음은 policy_data_file.xml 파일의 한 예입니다.
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- Copyright (c) 2005 Sun Microsystems, Inc. 모든 권리는 저작권자의 소유입니다. 본 제품의 사용은 사용권 조항의 적용을 받습니다. --> <!DOCTYPE Requests PUBLIC "-//iPlanet//Sun Java System Access Manager 6.2 Admin CLI DTD//EN" "/opt/SUNWam/dtd/amAdmin.dtd" >> <!-- CREATE REQUESTS --> <!-- to export to file use option -ofilename fileName --> <Requests> <RealmRequests > <RealmGetPolicies realm="/" > <AttributeValuePair> <Attribute name="policyName"/> <Value>p*</Value> </AttributeValuePair> </RealmGetPolicies> </RealmRequests> <RealmRequests > <RealmGetPolicies realm="/" > <AttributeValuePair> <Attribute name="policyName"/> <Value>g10</Value> <Value>g11</Value> </AttributeValuePair> </RealmGetPolicies> </RealmRequests> <RealmRequests > <RealmGetPolicies realm="/realm1" > <AttributeValuePair> <Attribute name="policyName"/> <Value>*</Value> </AttributeValuePair> </RealmGetPolicies> </RealmRequests> </Requests> |
정책은 Output_file.xml 파일로 내보내게 되며,이제 이 파일에 포함된 정책 정의를 변경할 수 있습니다. 다른 Access Manager 인스턴스로 정책을 가져오기 전에 amadmin 명령 유틸리티에서 사용할 수 있도록 출력 파일을 변경해야 합니다. amadmin 호환 정책 데이터 파일 예를 포함하여 정책을 내보내는 방법에 대한 자세한 지침은 amadmin을 사용하여 정책을 만들려면을 참조하십시오.