12.7.5. LDAP フィルターを使用した属性値のターゲット
アクセス制御を使用すると、属性の特定値を対象にできます。つまり、ある属性の値がアクセス制御手順 (ACI) で定義されている基準を満たしていれば、その属性に対してパーミッションを付与したり、拒否したりすることができるのです。属性の値に基づいてアクセスを許可または拒否する ACI は、値ベースの ACI と呼ばれます。これは、ADD および DEL 操作にのみ適用されます。検索権限を持つユーザーは、特定の値で制限できません。
値ベースの ACI を作成するには、以下の構文で targattrfilters キーワードを使用します。
1 つの属性とフィルターの組み合わせが含まれる操作の場合:
(targattrfilters="operation=attribute:filter")複数の属性とフィルターの組み合わせのある操作の場合:
(targattrfilters="operation=attribute_1:filter_1 && attribute_2:filter_2 ... && attribute_m:filter_m")複数の属性とフィルターを組み合わせた 2 つの操作の場合。
(targattrfilters="operation_1=attribute_1_1:filter_1_1 && attribute_1_2:filter_1_2 ... && attribute_1_m:filter_1_m , operation_2=attribute_2_1:filter_2_1 && attribute_2_2:filter_2_2 ... & attribute_2_n:filter_2_n ")
上記の構文の例では、オペレーションを add または del のいずれかに設定できます。attribute:filter の組み合わせは、フィルターと、フィルターが適用される属性を設定します。
以下では、フィルターを一致させる方法を説明します。
- エントリーを作成する際に、新しいエントリーの属性にフィルターが適用されると、その属性の各インスタンスがフィルターに一致する必要があります。
- エントリーとフィルターを削除するとエントリーの属性に適用される場合、その属性の各インスタンスはフィルターと一致する必要があります。
-
エントリーを変更し、操作が属性を追加する場合は、その属性に適用される
addフィルターが一致している必要があります。 -
操作が属性を削除すると、その属性に適用される
delフィルターが一致している必要があります。エントリーに属性の個別の値が置き換えられる場合は、addおよびdelフィルターの両方が一致する必要があります。
例12.5 targattrfilters キーワードの使用
Admin ロールを除く独自のエントリーにロールを追加できるようにする ACI を作成するには、値が 123 接頭辞で始まる限り、telephone 属性を追加するには、以下を実行します。
# ldapmodify -D "cn=Directory Manager" -W -H ldap::server.example.com -x
dn: dc=example,dc=com
changetype: modify
add: aci
aci: (targattrfilters="add=nsroledn:(!(nsroledn=cn=Admin)) &&
telephoneNumber:(telephoneNumber=123*)") (version 3.0;
acl "Allow adding roles and telephone";
allow (add) (userdn = "ldap:///self");)