2.3. 매크로 액세스 제어 지침 사용
ACI( macro Access Control instructions)는 LDAP 항목 고유 이름(DN) 또는 해당 부분에 대한 맞춤형 액세스를 자동화하고 ACI 수를 줄일 수 있는 가능성을 제공합니다.
2.3.1. 매크로 액세스 제어 명령 예 링크 복사링크가 클립보드에 복사되었습니다!
아래 그림은 하위 도메인의 반복적인 패턴이 있는 dc=hostedCompany1,dc=example,dc=com
및 dc=hostedCompany2,dc=example,dc=com
이 있는 디렉터리 트리를 보여줍니다. 각 하위 도메인은 ou=groups
ou=people
항목의 동일한 구조를 갖습니다. 디렉터리 트리는 ACI( macro Access Control instructions)를 사용하여 총 ACI 수를 줄입니다.
디렉터리 트리에 적용되는 ACI에는 반복 패턴이 있습니다. 예를 들어 다음 ACI는 dc=hostedCompany1,dc=example,dc=com
노드에 있으며, DomainAdmins
그룹에 해당 트리의 모든 항목에 읽기 및 검색 권한을 부여합니다.
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: (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";)
그림 2.1. 매크로 ACI의 디렉터리 트리 예
아래 ACIs는 groupdn
키워드의 DN의 다른 부분을 보여줍니다.
-
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: (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";)
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";)
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: (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를 교체하려면 매크로를 사용합니다. 예를 들어 위의 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";)
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";)
2.3.2. 매크로 액세스 제어 명령 구문 링크 복사링크가 클립보드에 복사되었습니다!
ACI( macro Access Control instructions)에는 DN 또는 DN의 일부를 대체하기 위한 다음과 같은 유형의 표현식이 포함되어 있습니다.
-
($DN)
, -
[$dn]
, -
($Attr.attrName)
여기서 attrName 은 대상 항목의 일부인 특성을 나타냅니다.
ACI 키워드는 ACI의 제목인 바인딩 자격 증명을 제공합니다. 대상은 ACI가 적용되는 위치를 결정합니다.
macro | ACI 키워드 | 설명 |
---|---|---|
|
|
주제의 일치 및 직접 대체. |
|
| 제목의 하위 트리에서 작동하는 여러 RDN을 대체합니다. |
|
|
|
매크로를 사용하는 경우 ($dn)
매크로가 포함된 대상을 정의해야 합니다. ($dn)
및 ($attr.attrName)
매크로를 결합할 수 있습니다.
2.3.3. [$dn] 매크로 예 링크 복사링크가 클립보드에 복사되었습니다!
[$dn]
매크로는 대상 소스의 DN을 여러 번 검사합니다. 이 매크로는 일치하는 항목을 찾을 때까지 각 반복의 왼쪽 RDN 구성 요소를 삭제합니다.
예를 들어 cn=all,ou=groups,dc=subdomain1,dc=hostedCompany1,dc=example,dc=com
하위 트리에 대상이 있는 LDAP 요청이 있습니다.
aci: (target="ldap:///ou=groups,($dn),dc=example,dc=com") (targetattr = "*") (version 3.0; acl "Domain access"; allow (read,search) groupdn="ldap:///cn=domainAdmins,ou=groups,[$dn],dc=example,dc=com";)
aci: (target="ldap:///ou=groups,($dn),dc=example,dc=com")
(targetattr = "*") (version 3.0; acl "Domain access"; allow (read,search)
groupdn="ldap:///cn=domainAdmins,ou=groups,[$dn],dc=example,dc=com";)
매크로는 다음과 같이 확장됩니다.
-
대상의
($dn)
은dc=subdomain1,dc=hostedCompany1
과 일치합니다. 제목의
[$dn]
을 대체하는 것은dc=subdomain1,dc=hostedCompany1
입니다.결과는
groupdn="ldap:///cn=domainAdmins,ou=Groups,dc=subdomain1,dc=hostedCompany1,dc=example,dc=com"
입니다. 바인딩 DN이 해당 그룹의 멤버이면 일치하는 프로세스가 중지되고 ACI가 평가됩니다. 결과가 일치하지 않으면 프로세스가 계속되고 왼쪽 부분이 삭제됩니다.제목의 [$dn]은
dc=hostedCompany1
입니다.결과는
groupdn="ldap:///cn=domainAdmins,ou=Groups,dc=hostedCompany1,dc=example,dc=com"
입니다. 바인딩 DN이 해당 그룹의 멤버가 아닌 경우 ACI가 평가되지 않습니다. 멤버가면 ACI가 평가됩니다.
[$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: (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=hostedCompany1
및 ou=people,dc=subdomain1,dc=hostedCompany1
노드에 액세스할 수 없습니다.
2.3.4. ($dn) 매크로 예 링크 복사링크가 클립보드에 복사되었습니다!
($dn)
매크로는 대체 값을 LDAP 요청의 항목과 비교합니다. 예를 들어 LDAP 요청은 항목을 대상으로 합니다.
cn=all,ou=groups,dc=subdomain1,dc=hostedCompany1,dc=example,dc=com
cn=all,ou=groups,dc=subdomain1,dc=hostedCompany1,dc=example,dc=com
ACI는 다음 대상을 정의합니다.
(target="ldap:///ou=groups,($dn),dc=example,dc=com")
(target="ldap:///ou=groups,($dn),dc=example,dc=com")
($dn)
매크로는 이 예제에서 dc=subdomain1,dc=hostedCompany1
과 일치합니다.
대상과 일치하는 하위 문자열은 ACI의 대상이 ($dn)
매크로를 사용할 때 제목을 확장합니다.
aci: (target="ldap:///ou=*,($dn),dc=example,dc=com") (targetattr = "*") (version 3.0; acl "Domain access"; allow (read,search) groupdn="ldap:///cn=domainAdmins,ou=groups,($dn),dc=example,dc=com";)
aci: (target="ldap:///ou=*,($dn),dc=example,dc=com")
(targetattr = "*") (version 3.0; acl "Domain access"; allow (read,search)
groupdn="ldap:///cn=domainAdmins,ou=groups,($dn),dc=example,dc=com";)
ACI는 다음과 같이 확장됩니다.
aci: (target="ldap:///ou=groups,dc=subdomain1,dc=hostedCompany1, dc=example,dc=com") (targetattr = "*") (version 3.0; acl "Domain access"; allow (read,search) groupdn="ldap:///cn=domainAdmins,ou=groups, dc=subdomain1,dc=hostedCompany1,dc=example,dc=com";)
aci: (target="ldap:///ou=groups,dc=subdomain1,dc=hostedCompany1,
dc=example,dc=com") (targetattr = "*") (version 3.0; acl "Domain
access"; allow (read,search) groupdn="ldap:///cn=domainAdmins,ou=groups,
dc=subdomain1,dc=hostedCompany1,dc=example,dc=com";)
매크로가 확장되면 Red Hat Directory Server는 일반 프로세스에 따라 ACI를 평가하여 액세스 권한이 부여되었는지 확인합니다.
2.3.5. ($attr.attrName) 매크로 예 링크 복사링크가 클립보드에 복사되었습니다!
항상 ($attr.attrName)
매크로를 DN의 일부로 사용합니다. 예를 들어 다음 역할을 정의합니다
.
roledn = "ldap:///cn=DomainAdmins,($attr.ou),dc=HostedCompany1,dc=example,dc=com"
roledn = "ldap:///cn=DomainAdmins,($attr.ou),dc=HostedCompany1,dc=example,dc=com"
서버가 다음 항목을 대상으로 하는 LDAP 작업을 수신한다고 가정합니다.
dn: cn=Jane Doe,ou=People,dc=HostedCompany1,dc=example,dc=com cn: Jane Doe sn: Doe ou: Engineering...
dn: cn=Jane Doe,ou=People,dc=HostedCompany1,dc=example,dc=com
cn: Jane Doe
sn: Doe
ou: Engineering...
ACI의 역할을
평가하기 위해 서버는 대상 항목의 ou
특성을 살펴보고 이 속성의 값을 사용하여 매크로를 확장합니다. 역할은 다음과 같이
확장됩니다.
roledn = "ldap:///cn=DomainAdmins,ou=Engineering,dc=HostedCompany1,dc=example,dc=com"
roledn = "ldap:///cn=DomainAdmins,ou=Engineering,dc=HostedCompany1,dc=example,dc=com"
Red Hat Directory Server는 일반적인 ACI 평가 알고리즘에 따라 ACI를 평가합니다.
속성에 여러 값이 있는 경우 RHDS는 각 값을 사용하여 매크로를 확장하고 확장된 매크로의 첫 번째 성공적인 일치 값을 사용합니다. 예를 들면 다음과 같습니다.
dn: cn=Jane Doe,ou=People,dc=HostedCompany1,dc=example,dc=com cn: Jane Doe sn: Doe ou: Engineering ou: People...
dn: cn=Jane Doe,ou=People,dc=HostedCompany1,dc=example,dc=com
cn: Jane Doe
sn: Doe
ou: Engineering
ou: People...
Red Hat Directory Server가 ACI를 평가하면 다음과 같은 확장된 표현식에서 논리 OR 를 수행합니다.
roledn = "ldap:///cn=DomainAdmins,ou=Engineering,dc=HostedCompany1,dc=example,dc=com" roledn = "ldap:///cn=DomainAdmins,ou=People,dc=HostedCompany1,dc=example,dc=com"
roledn = "ldap:///cn=DomainAdmins,ou=Engineering,dc=HostedCompany1,dc=example,dc=com"
roledn = "ldap:///cn=DomainAdmins,ou=People,dc=HostedCompany1,dc=example,dc=com"