18.16. 高度なアクセス制御: マクロ ACI の使用
ディレクトリーツリー構造の繰り返しを使用する組織では、マクロを使用してディレクトリーで使用される ACI の数を最適化できます。ディレクトリーツリーの ACI の数を減らすと、アクセス制御ポリシーの管理が容易になり、ACI メモリー使用量の効率が向上します。
マクロは、ACI の DN または DN の一部を表すために使用されるプレースホルダーです。マクロを使って、ACI のターゲット部分、バインドルール部分、またはその両方で DN を表現することができます。実際には、Directory Server が受信 LDAP 操作を取得すると、ACI マクロは LDAP 操作によってターゲットとなっているリソースと照合されます。一致する場合、マクロはターゲットリソースの DN の値に置き換えられます。次に、Directory Server は ACI を正常に評価します。
18.16.1. マクロ ACI の例
図18.1「マクロ ACI のディレクトリーツリーの例」は、マクロ ACI を使用して ACI の全体的な数を効果的に減らすディレクトリーツリーを表示します。この図は、同じツリー構造 (ou=groups、ou=people) を持つサブドメインの繰り返しパターンを使用します。Example Corp. ディレクトリーツリーが接尾辞 dc=hostedCompany2,dc=example,dc=com および dc=hostedCompany3,dc=example,dc=com を格納するため、このパターンはツリー全体で繰り返されます。
ディレクトリーツリーに適用される ACI には、繰り返しパターンがあります。たとえば、以下の ACI は 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";)
この ACI は、dc=hostedCompany1,dc=example,dc=com ツリー内の任意のエントリーに DomainAdmins グループに対する読み取り権限および検索権限を付与します。
図18.1 マクロ ACI のディレクトリーツリーの例
以下の ACI は 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";)
以下の ACI は 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";)
以下の ACI は 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";)
以下の ACI は 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";)
上記の 4 つの ACI での唯一の違いは groupdn キーワードで指定される DN です。DN にマクロを使用して、これらの ACI を 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";)
以前使用されていなかった target キーワードが新しい ACI で使用されます。
この例では、ACI の数が 4 から 1 に減ります。実際の効果は、ディレクトリツリーにどれだけ多くの繰り返しパターンがあるかにかかっています。