18.13. バインドルールの定義
ACI のバインドルールは、Directory Server が ACI を適用するのに必要なバインドパラメーターを定義します。たとえば、以下に基づいてバインドルールを設定できます。
- DNS
- グループメンバーシップまたは割り当てられたロール
- エントリーがバインドする場所
- バインド時に使用する必要のある認証の種類
- バインドが実行される回数または日数
ACI では、以下の強調表示された部分はバインドルールになります。
(target_rule) (version 3.0; acl "ACL_name"; permission_rule bind_rules;)
構文
バインドルールの一般的な構文は以下のとおりです。
keyword comparison_operator "expression"
- keyword: bind 操作のタイプを設定します。「頻繁に使用されるバインドルール」を参照してください。
- comparison_operator: 有効な値は = および != で、ターゲットが式で指定されたオブジェクトであるかを示します。キーワードが追加の比較演算子に対応している場合は、該当するセクションで説明されます。
- expression: 式を設定し、引用符で囲む必要があります。式自体は使用するキーワードによって異なります。
18.13.1. 頻繁に使用されるバインドルール
管理者は、以下のバインドキーワードを使用します。
- userDN: 「ユーザーベースのアクセスの定義」を参照してください。
- groupdn: 「グループベースのアクセスの定義」を参照してください。
さらに、バインドルールはブール値演算子を使用して頻繁に組み合わせられます。詳細は、「ブール演算子を使用したバインドルールの組み合わせ」を参照してください。
18.13.1.1. ユーザーベースのアクセスの定義
userdn キーワードを使用すると、1 つまたは複数の DN に基づいてアクセスを許可または拒否でき、以下の構文を使用します。
userdn comparison_operator "ldap:///distinguished_name || ldap:///distinguished_name || ..."
式の DN を以下のように設定します。
- DN: 「userdn キーワードでの DN の使用」を参照してください。
- LDAP フィルター: 「LDAP フィルターで userdn キーワードの使用」を参照してください。
- anyone エイリアス: 「匿名アクセスの付与」を参照してください。
- all エイリアス: 「認証済みユーザーへのアクセスの付与」を参照してください。
- self エイリアス: 「ユーザーが空のエントリーにアクセスできるようにする」を参照してください。
- parent エイリアス: 「ユーザーの子エントリーへのアクセス設定」を参照してください。
注記
LDAP URL 内でホスト名またはポート番号を指定しないでください。URL は常にローカルサーバーに適用されます。
18.13.1.1.1. userdn キーワードでの DN の使用
userdn キーワードを DN に設定して、ACI を一致するエントリーのみに適用します。複数のエントリーを照合するには、DN で * ワイルドカードを使用します。
userdn キーワードを DN とともに使用するには、以下の構文を使用します。
userdn comparison_operator ldap:///distinguished_name
例18.12 userdn キーワードでの DN の使用
uid=admin,ou=People,dc=example,dc=com ユーザーが ou=People,dc=example,dc=com エントリーで他のすべてのユーザーの
manager
属性を読み取るようにするには、以下を実行します。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: ou=People,dc=example,dc=com changetype: modify add: aci aci: (targetattr="manager") (version 3.0; acl "Allow uid=admin reading manager attribute"; allow (search, read) userdn = "ldap:///uid=admin,ou=People,dc=example,dc=com";)
18.13.1.1.2. LDAP フィルターで userdn キーワードの使用
ユーザーへのパーミッションを動的に許可または拒否するには、LDAP フィルターで userdn キーワードを使用します。
userdn comparison_operator "ldap:///distinguished_name??scope?(filter)"
注記
LDAP フィルターは * ワイルドカードをサポートします。
例18.13 LDAP フィルターで userdn キーワードの使用
department
属性が Human Resources に設定されたユーザーを有効にするには、ou=People,dc=example,dc=com エントリーでユーザーの homePostalAddress
属性を更新します。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: ou=People,dc=example,dc=com changetype: modify add: aci aci: (targetattr="homePostalAddress") (version 3.0; acl "Allow HR setting homePostalAddress"; allow (write) userdn = "ldap:///ou=People,dc=example,dc=com??sub?(department=Human Resources)";)
18.13.1.1.3. 匿名アクセスの付与
特定の状況では、管理者はディレクトリー内のデータへの匿名アクセスを設定します。匿名アクセスは、以下を指定してディレクトリーにバインドできることを意味します。
- バインド DN およびパスワードなし
- 有効なバインド DN およびパスワード
匿名アクセスを設定するには、bind ルールの userdn キーワードで ldap:///anyone 式を使用します。
userdn comparison_operator "ldap:///anyone"
例18.14 匿名アクセスの付与
認証のないすべてのユーザーが、ou=People,dc=example,dc=com エントリーで
sn
属性、givenName
属性、および telephoneNumber
属性を読み取りおよび検索できるようにするには、以下を実行します。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: ou=People,dc=example,dc=com changetype: modify add: aci aci: (targetattr="sn" || targetattr="givenName" || targetattr = "telephoneNumber") (version 3.0; acl "Anonymous read, search for names and phone numbers"; allow (read, search) userdn = "ldap:///anyone")
18.13.1.1.4. 認証済みユーザーへのアクセスの付与
特定の状況では、管理者は匿名バインドを除き、Directory Server に正常にバインドできるユーザーにパーミッションを付与します。この機能を設定するには、bind ルールの userdn キーワードで ldap:///all 式を使用します。
userdn comparison_operator "ldap:///all"
例18.15 認証済みユーザーへのアクセスの付与
認証されたユーザーが ou=example,ou=groups,dc=example,dc=com グループからのメンバーとして追加および削除できるようにするには、以下を実行します。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: ou=example,ou=Groups,dc=example,dc=com changetype: modify add: aci aci: (targetattr="member") (version 3.0; acl "Allow users to add/remove themselves from example group"; allow (selfwrite) userdn = "ldap:///all")
18.13.1.1.5. ユーザーが空のエントリーにアクセスできるようにする
ユーザーの独自のエントリーへのアクセスを許可または拒否する ACI を設定するには、bind ルールの userdn キーワードで ldap:///self 式を使用します。
userdn comparison_operator "ldap:///self"
例18.16 ユーザーが空のエントリーにアクセスできるようにする
ou=People,dc=example,dc=com エントリーのユーザーが独自の
userPassword
属性を更新できるようにするには、以下を実行します。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: ou=People,dc=example,dc=com changetype: modify add: aci aci: (targetattr="userPassword") (version 3.0; acl "Allow users updating their password"; allow (write) userdn = "ldap:///self")
18.13.1.1.6. ユーザーの子エントリーへのアクセス設定
バインド DN がターゲットエントリーの親である場合にのみエントリーへのアクセスを許可または拒否されるように設定するには、bind ルールの userdn キーワードで self:///parent 式を使用します。
userdn comparison_operator "ldap:///parent"
例18.17 ユーザーの子エントリーへのアクセス設定
cn=user,ou=People,dc=example,dc=com ユーザーが独自のサブエントリー (cn=example,cn=user,ou=People,dc=example,dc=com など) の
manager
属性を更新できるようにするには、以下を実行します。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: cn=user,ou=People,dc=example,dc=com changetype: modify add: aci aci: (targetattr="manager") (version 3.0; acl "Allow cn=user to update manager attributes"; allow (write) userdn = "ldap:///parent")
18.13.1.2. グループベースのアクセスの定義
グループベースの ACI を使用すると、グループへのユーザーの追加、またはグループからのユーザーの削除により、アクセスを管理できます。グループメンバーシップに基づく ACI を設定するには、groupdn キーワードを使用します。ユーザーが指定された 1 つまたは複数のグループのメンバーである場合は、ACI が一致します。
groupdn キーワードを使用すると、Directory Server は以下の属性に基づいてグループメンバーシップを検証します。
member
uniqueMember
memberURL
memberCertificateDescription
groupdn キーワードでルールをバインドするには、以下の構文を使用します。
groupdn comparison_operator "ldap:///distinguished_name || ldap:///distinguished_name || ..."
式の DN を以下のように設定します。
- DN。「groupdn キーワードでの DN の使用」を参照してください。
- LDAP フィルター。「LDAP フィルターで groupdn キーワードの使用」を参照してください。
1 つのバインドルールに複数の DN を設定する場合は、認証されたユーザーがこれらのグループのいずれかのメンバーの場合、Directory Server は ACI を適用します。ユーザーを複数のグループのメンバーとして設定するには、複数の groupdn キーワードを使用して、ブール値 and 演算子を使用して組み合わせます。詳細は、「ブール演算子を使用したバインドルールの組み合わせ」を参照してください。
注記
LDAP URL 内でホスト名またはポート番号を指定しないでください。URL は常にローカルサーバーに適用されます。
18.13.1.2.1. groupdn キーワードでの DN の使用
ACI をグループのメンバーに適用するには、groupdn キーワードをグループの DN に設定します。
DN に設定された groupdn キーワードは、以下の構文を使用します。
groupdn comparison_operator ldap:///distinguished_name
例18.18 groupdn キーワードでの DN の使用
cn=example,ou=Groups,dc=example,dc=com グループのメンバーが ou=People,dc=example,dc=com のエントリーの
manager
属性を検索および読み取るようにするには、以下を実行します。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: ou=People,dc=example,dc=com changetype: modify add: aci aci: (targetattr="manager") (version 3.0; acl "Allow example group to read manager attribute"; allow (search, read) groupdn = "ldap:///cn=example,ou=Groups,dc=example,dc=com";)
18.13.1.2.2. LDAP フィルターで groupdn キーワードの使用
groupdn キーワードを使用した LDAP フィルターを使用すると、ACI に一致させるために、認証されたユーザーがフィルター検索で返されるグループの少なくとも 1 つのメンバーでなければならないことを定義できます。
LDAP フィルターが含まれる groupdn キーワードは以下の構文を使用します。
groupdn comparison_operator "ldap:///distinguished_name??scope?(filter)"
注記
LDAP フィルターは * ワイルドカードをサポートします。
例18.19 LDAP フィルターで groupdn キーワードの使用
dc=example,dc=com のグループのメンバーや、
manager
属性が example に設定されているサブツリーを有効にするには、ou=People,dc=example,dc=com のエントリーのhomePostalAddress
を更新します。
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x dn: ou=People,dc=example,dc=com changetype: modify add: aci aci: (targetattr="homePostalAddress") (version 3.0; acl "Allow manager=example setting homePostalAddress"; allow (write) userdn = "ldap:///dc=example,dc=com??sub?(manager=example)";)