Sun Java System Directory Server Enterprise Edition 6.3 관리 설명서

고급 액세스 제어: 매크로 ACI 사용

반복 디렉토리 트리 구조를 사용하는 조직에서는 매크로를 사용하여 디렉토리에 사용되는 ACI 수를 최적화할 수 있습니다. 디렉토리 트리에서 ACI 수를 줄이면 액세스 제어 정책을 관리하기가 쉽고 ACI 메모리 사용 효율성도 향상됩니다.

매크로는 ACI에서 DN 또는 DN의 일부를 나타내는 자리 표시자입니다. 매크로를 사용하여 ACI의 대상 부분, 바인드 규칙 부분 또는 두 부분에서 모두 DN을 나타낼 수 있습니다. 실제로 LDAP 작업이 수신되면 디렉토리 서버는 ACI 매크로를 LDAP 작업의 대상 자원과 비교하여 일치하는 하위 문자열이 있는지 확인합니다. 일치하는 하위 문자열이 있으면 이 문자열을 사용하여 바인드 규칙측 매크로를 확장하고 확장된 바인드 규칙을 평가하여 자원에 대한 액세스를 결정합니다.

이 절은 매크로 ACI의 예와 매크로 ACI 구문에 대한 정보로 구성되어 있습니다.

매크로 ACI 예

예를 사용하면 매크로 ACI의 혜택과 작동 방식을 명확히 이해할 수 있습니다. 그림 7–1 에서는 매크로 ACI를 사용하여 전체 ACI 수를 효과적으로 줄일 수 있는 디렉토리 트리를 보여줍니다.

이 그림에서는 하위 도메인의 반복 패턴이 동일한 트리 구조(ou=groups,ou=people)를 갖습니다. Example.com 디렉토리 트리에는 그림에 표시되지 않은 두 접미어(dc=hostedCompany2,dc=example,dc=com dc=hostedCompany3,dc=example,dc=com)가 저장되어 있기 때문에 이 패턴도 트리 전체에 걸쳐 반복됩니다.

디렉토리 트리의 ACI에도 반복 패턴이 있습니다. 예를 들어 dc=hostedCompany1,dc=example,dc=com 노드에는 아래 ACI가 있습니다.


aci: (targetattr="*")
 (targetfilter=(objectClass=nsManagedDomain))(version 3.0;
 acl "Domain access"; allow (read,search) groupdn=
 "ldap:///cn=DomainAdmins,ou=Groups,dc=hostedCompany1,
 dc=example,dc=com";)

이 ACI는 domainAdmins 그룹에 dc=hostedCompany1,dc=example,dc=com 트리의 항목에 대한 읽기 및 검색 권한을 부여합니다.

그림 7–1 매크로 ACI의 디렉토리 트리 예

dc=hostedcompany1,dc=example,dc=com 및 다양한 하위 도메인을 보여주는 디렉토리 트리 형태 예

dc=hostedCompany1,dc=example,dc=com 노드에는 아래 ACI가 있습니다.


aci: (targetattr="*")
 (targetfilter=(objectClass=nsManagedDomain))
 (version 3.0; acl "Domain access"; allow (read,search)
 groupdn="ldap:///cn=DomainAdmins,ou=Groups,dc=hostedCompany1,dc=example,dc=com";)

dc=subdomain1,dc=hostedCompany1, dc=example,dc=com 노드에는 아래 ACI가 있습니다.


aci: (targetattr="*")
 (targetfilter=(objectClass=nsManagedDomain))
 (version 3.0; acl "Domain access"; allow (read,search)
 groupdn="ldap:///cn=DomainAdmins,ou=Groups,dc=subdomain1,dc=hostedCompany1,
  dc=example,dc=com";)

dc=hostedCompany2,dc=example,dc=com 노드에는 아래 ACI가 있습니다.


aci: (targetattr="*")
 (targetfilter=(objectClass=nsManagedDomain))
 (version 3.0; acl "Domain access"; allow (read,search)
 groupdn="ldap:///cn=DomainAdmins,ou=Groups,dc=hostedCompany2, dc=example,dc=com";)

dc=subdomain1,dc=hostedCompany2, dc=example,dc=com 노드에는 아래 ACI가 있습니다.


aci: (targetattr="*")
 (targetfilter=(objectClass=nsManagedDomain))
 (version 3.0; acl "Domain access"; allow (read,search)
 groupdn="ldap:///cn=DomainAdmins,ou=Groups,dc=subdomain1,dc=hostedCompany2,
 dc=example,dc=com";)

앞의 네 개의 ACI에서 유일한 차이점은 groupdn 키워드에 지정된 DN입니다. 이 경우 DN에 매크로를 사용하여 dc=example,dc=com 노드에서 트리의 루트에 있는 한 개의 ACI로 네 개의 ACI를 대체할 수 있습니다. 이 매크로 ACI는 다음과 같이 표시됩니다.


aci: (target="ldap:///ou=Groups,($dn),dc=example,dc=com")
 (targetattr="*")(targetfilter=(objectClass=nsManagedDomain))
 (version 3.0; acl "Domain access"; allow (read,search) 
 groupdn="ldap:///cn=DomainAdmins,ou=Groups,[$dn],dc=example,dc=com";)

이 경우 이전에 사용하지 않았던 target 키워드가 사용되었습니다.

위의 예에서는 ACI 수가 4개에서 1개로 줄었습니다. 하지만 전체 디렉토리 트리의 반복 패턴 수가 줄어든다는 것에 가장 큰 이점이 있습니다.

매크로 ACI 구문

이 절에서는 설명을 간소화하기 위해 userdn, roledn, groupdnuserattr 등 바인드 자격 증명을 제공하는 데 사용되는 ACI 키워드를 총체적으로 ACI의 주제라고 부릅니다. 주제는 ACI의 적용 대상을 결정합니다.

아래 표는 특정 ACI 키워드를 대체하는 데 사용할 수 있는 매크로를 보여줍니다.

표 7–1 매크로 ACI 키워드

매크로 

설명 

ACI 키워드 

($dn)

대상 일치 및 주제의 직접 대체에 사용합니다. 

target, targetfilter, userdn, roledn, groupdn, userattr

[$dn]

주제의 하위 트리에서 작동하는 여러 RDN을 대체하는 데 사용합니다. 

targetfilter, userdn, roledn, groupdn, userattr

($attr.attrName)

대상 항목의 attributeName 속성 값을 주제로 대체하는 데 사용합니다.

userdn, roledn, groupdn, userattr

매크로 ACI 키워드에 적용되는 제한 사항은 다음과 같습니다.

대상의 ($dn) 일치

ACI의 대상에 있는 ($dn) 매크로는 LDAP 요청의 대상 항목에 따라 대체 값을 결정합니다. 예를 들어 이 항목에서 대상으로 하는 LDAP 요청이 있습니다.


cn=all,ou=groups,dc=subdomain1, dc=hostedCompany1,dc=example,dc=com

또한, 다음과 같이 대상을 정의하는 ACI가 있습니다.


(target="ldap:///ou=Groups,($dn),dc=example,dc=com")

($dn) 매크로는 "dc=subdomain1, dc=hostedCompany1"과 일치하므로 ACI 주제에 이 하위 문자열이 대체됩니다.

주제의 ($dn) 대체

ACI 주제에 있는 ($dn) 매크로는 대상에서 일치하는 전체 하위 문자열로 대체됩니다. 예를 들면 다음과 같습니다.


groupdn="ldap:///cn=DomainAdmins,ou=Groups,($dn),dc=example,dc=com"

주제는 다음과 같습니다.


groupdn="ldap:///cn=DomainAdmins,ou=Groups,
 dc=subdomain1,dc=hostedCompany1,dc=example,dc=com"

매크로가 확장되면 디렉토리 서버는 일반 프로세스에 따라 ACI를 평가하여 액세스 권한을 부여할지 여부를 결정합니다.


주 –

매크로 대체를 사용하는 ACI는 표준 ACI와 달리 반드시 대상 항목의 자식에 대한 액세스 권한을 부여하지는 않습니다. 자식 DN이 대상이면 대체를 통해 주제 문자열에 유효한 DN을 작성할 수 없기 때문입니다.


주제의 [$dn] 대체

[$dn]의 대체 메커니즘은 ($dn)의 경우와 약간 다릅니다. 일치를 발견할 때까지 대상 자원의 DN을 여러 번 검사하며 매번 가장 왼쪽의 RDN 구성 요소를 삭제합니다.

예를 들어 cn=all,ou=groups, dc=subdomain1,dc=hostedCompany1,dc=example,dc=com 하위 트리를 대상으로 하는 LDAP 요청과 다음과 같은 ACI가 있다고 가정합니다.


aci: (targetattr="*")
 (target="ldap:///ou=Groups,($dn),dc=example,dc=com")
 (version 3.0; acl "Domain access"; allow (read,search)
 groupdn="ldap:///cn=DomainAdmins,ou=Groups,[$dn],
 dc=example,dc=com";)

    서버는 다음과 같이 이 ACI를 확장합니다.

  1. 서버는 대상의 ($dn)dc=subdomain1,dc=hostedCompany1과 일치하는지 확인합니다.

  2. 주제의 [$dn]dc=subdomain1,dc=hostedCompany1로 대체합니다.

    따라서 주제는 groupdn="ldap:///cn=DomainAdmins,ou=Groups, dc=subdomain1,dc=hostedCompany1,dc=example,dc=com"이 됩니다. 바인드 DN이 이 그룹의 구성원이어서 액세스 권한이 부여되면 매크로 확장이 중단되고 ACI 평가가 수행됩니다. 바인드 DN이 그룹의 구성원이 아니면 프로세스가 계속됩니다.

  3. 주제의 [$dn]dc=hostedCompany1로 대체합니다.

    따라서 주제는 groupdn="ldap:///cn=DomainAdmins,ou=Groups, dc=hostedCompany1,dc=example,dc=com"이 됩니다. 다시 바인드 DN이 이 그룹의 구성원인지 테스트하여, 구성원일 경우 ACI를 완전히 평가합니다. 바인드 DN이 그룹의 구성원이 아니면 일치한 값의 마지막 RDN에서 매크로 확장이 중단되고 이 ACI에 대한 평가가 완료됩니다.

[$dn] 매크로를 사용할 경우 도메인 수준 관리자에게 디렉토리 트리의 모든 하위 도메인에 대한 액세스 권한을 유연성 있게 부여할 수 있다는 장점이 있습니다. 따라서 [$dn] 매크로는 도메인간 계층 관계를 표시할 때 유용합니다.

예를 들어 다음과 같은 ACI를 가정해 보십시오.


aci: (target="ldap:///ou=*,($dn),dc=example,dc=com") (targetattr="*")
(targetfilter=(objectClass=nsManagedDomain)) 
(version 3.0; acl "Domain access"; allow (read,search) groupdn= 
"ldap:///cn=DomainAdmins,ou=Groups,[$dn],dc=example,dc=com";)

ACI는 cn=DomainAdmins,ou=Groups, dc=hostedCompany1,dc=example,dc=com 구성원에게 dc=hostedCompany1 아래의 모든 하위 도메인에 대한 액세스 권한을 부여합니다. 따라서 해당 그룹에 속하는 관리자는 ou=people,dc=subdomain1.1,dc=subdomain1과 같은 하위 트리에 액세스할 수 있습니다.

하지만 이와 동시에 cn=DomainAdmins,ou=Groups, dc=subdomain1.1의 구성원에게는 ou=people,dc=subdomain1, dc=hostedCompany1ou=people,dc=hostedCompany1 노드에 대한 액세스가 거부됩니다.

($attr.attrName )의 매크로 일치

($attr.attrname) 매크로는 항상 DN의 주제 부분에서 사용됩니다. 예를 들어 다음과 같은 roledn을 정의할 수 있습니다.


roledn = "ldap:///cn=DomainAdmins,($attr.ou),dc=HostedCompany1,dc=example,dc=com"

이제 서버가 아래 항목을 대상으로 하는 LDAP 작업을 수신한다고 가정합니다.


dn: cn=Babs Jensen,ou=People,dc=HostedCompany1,dc=example,dc=com
cn: Babs Jensen
sn: Jensen
ou: Sales
...

ACI의 roledn 부분을 평가하기 위해 서버는 대상 항목에 저장된 ou 속성 값을 읽습니다. 그런 다음 주제에서 해당 값을 대체하여 매크로를 확장합니다. 이 예에서 roledn은 다음과 같이 확장됩니다.


roledn = "ldap:///cn=DomainAdmins,ou=Sales,dc=HostedCompany1,dc=example,dc=com"

그런 다음 디렉토리 서버는 일반 ACI 평가 알고리즘에 따라 ACI를 평가합니다.

매크로에 지정된 속성이 여러 값을 갖는 경우 각 값을 차례로 사용하여 매크로를 확장합니다. 처음 일치하는 항목을 제공한 값이 사용됩니다.