2.3. マクロアクセス制御命令の使用


マクロアクセス制御命令 (ACI) を使用すると、LDAP エントリーの識別名 (DN) またはその一部を対象とするアクセスを自動化し、ACI の数を減らすことができます。

2.3.1. マクロアクセス制御命令の例

次の図は、サフィックスとして dc=hostedCompany1,dc=example,dc=com および dc=hostedCompany2,dc=example,dc=com と、サブドメインの繰り返しパターンを持つディレクトリーツリーを示しています。各サブドメインの構造は、ou=groupsou=people エントリーと同じです。ディレクトリーツリーは、マクロアクセス制御命令 (ACI) を使用して、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";)
Copy to Clipboard Toggle word wrap

図2.1 マクロ ACI ディレクトリーツリーの例

以下の ACI は、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";)
Copy to Clipboard Toggle word wrap
  • 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";)
Copy to Clipboard Toggle word wrap
  • 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";)
Copy to Clipboard Toggle word wrap
  • 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";)
Copy to Clipboard Toggle word wrap

マクロを使用して、繰り返しパターンの複数の ACI を置き換えます。たとえば、上記の ACI を 1 つに減らすには、次のマクロを使用します。

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";)
Copy to Clipboard Toggle word wrap

2.3.2. マクロアクセス制御命令の構文

マクロアクセス制御命令 (ACI) には、DN または DN の一部を置き換える次のタイプの式が含まれます。

  • ($dn),
  • [$dn],
  • ($attr.attrName)。この場合の attrName は、ターゲットエントリーの一部である属性を表します。

ACI キーワードは、ACI の対象であるバインド認証情報を提供します。サブジェクトは、ACI が適用される場所を決定します。

Expand
表2.2 ACI キーワードのマクロ
マクロACI キーワード説明

($dn)

target, targetfilter, userdn, roledn, groupdn, userattr

サブジェクトのマッチングと直接置換。target または targetfilter に一致し、一致した値を userdngroupdn、または userattr に置き換えます。

[$dn]

targetfilter, userdn, roledn, groupdn, userattr

サブジェクトのサブツリーで機能する複数の RDN の置き換え。

($attr.attrName)

userdn, roledn, groupdn, userattr

ターゲットエントリーからサブジェクトへの attributeName 属性値の置換。

マクロを使用する場合は、($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 があるとします。

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";)
Copy to Clipboard Toggle word wrap

マクロは次のように展開されます。

  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 が評価されます。結果が一致しない場合、処理は続行され、左端部分が削除されます。

  3. サブジェクトの [$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";)
Copy to Clipboard Toggle word wrap

この 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
Copy to Clipboard Toggle word wrap

ACI は、次のターゲットを定義します。

(target="ldap:///ou=groups,($dn),dc=example,dc=com")
Copy to Clipboard Toggle word wrap

この例では、($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";)
Copy to Clipboard Toggle word wrap

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";)
Copy to Clipboard Toggle word wrap

マクロが展開された後、Red Hat Directory Server は通常のプロセスに従って ACI を評価し、アクセスが許可されているか判断します。

2.3.5. ($attr.attrName) マクロの例

($attr.attrName) マクロは、必ず DN の一部として使用します。たとえば、以下の roledn を定義します。

roledn = "ldap:///cn=DomainAdmins,($attr.ou),dc=HostedCompany1,dc=example,dc=com"
Copy to Clipboard Toggle word wrap

サーバーが、以下のエントリーを対象とする LDAP 操作を受信すると仮定します。

dn: cn=Jane Doe,ou=People,dc=HostedCompany1,dc=example,dc=com
cn: Jane Doe
sn: Doe
ou: Engineering...
Copy to Clipboard Toggle word wrap

ACI の roledn 部分を評価するために、サーバーはターゲットエントリーの ou 属性を確認し、その値を使用してマクロを展開します。roledn は次のように展開されます。

roledn = "ldap:///cn=DomainAdmins,ou=Engineering,dc=HostedCompany1,dc=example,dc=com"
Copy to Clipboard Toggle word wrap

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...
Copy to Clipboard Toggle word wrap

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"
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat