18.11. 定义绑定规则


ACI 中的绑定规则定义必须满足所需的绑定参数,以便目录服务器应用 ACI。例如,您可以根据以下内容设置绑定规则:
  • dns
  • 组成员资格或分配的角色
  • 条目必须绑定的位置
  • 在绑定过程中必须使用的身份验证类型
  • 绑定发生的时间或天数
在 ACI 中,以下突出显示的部分是绑定规则:
(target_rule) (version 3.0; acl "ACL_name"; permission_rule bind_rules;)

语法

绑定规则的一般语法是:
keyword comparison_operator "expression"
  • 关键字 :设置绑定操作的类型。请参阅 第 18.11.1 节 “常用的绑定规则”
  • compare_operator: Valid 值为 =!=,并且指明目标是否为表达式中指定的对象。如果关键字支持其他比较运算符,则会在对应的部分中提到。
  • 表达式 :设置表达式,且必须用引号括起来。表达式本身取决于您使用的关键字。

18.11.1. 常用的绑定规则

管理员经常使用以下 bind 关键字:
另外,绑定规则通常使用布尔值运算符来合并。详情请查看 第 18.11.3 节 “使用布尔值 Operator 组合绑定规则”

18.11.1.1. 定义基于用户的访问权限

userdn 关键字允许您根据一个或多个 DN 授予或拒绝访问,并使用以下语法:
userdn comparison_operator "ldap:///distinguished_name || ldap:///distinguished_name || ..."
将表达式中的 DN 设置为:
注意
不要在 LDAP URL 中指定主机名或端口号。URL 始终应用到本地服务器。
18.11.1.1.1. 使用带有 userdn Keyword 的 DN
userdn 关键字设置为 DN,以仅将 ACI 应用到匹配的条目。要匹配多个条目,在 DN 中使用 * 通配符。
使用带有 DN 的 userdn 关键字必须与以下语法匹配:
userdn comparison_operator ldap:///distinguished_name

例 18.12. 使用带有 userdn Keyword 的 DN

要启用 uid=admin,ou=People,dc=example,dc=com 用户读取 ou=People,dc=example,dc=com 条目中所有其他用户的 管理器 属性:
# 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.11.1.1.2. 使用带有 LDAP 过滤器的 userdn Keyword
如果要动态允许或拒绝用户的权限,请使用带有 LDAP 过滤器的 userdn 关键字:
userdn comparison_operator "ldap:///distinguished_name??scope?(filter)"
注意
LDAP 过滤器支持 kiosk 通配符。

例 18.13. 使用带有 LDAP 过滤器的 userdn Keyword

要启用用户,其 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.11.1.1.3. 授予匿名访问权限
在某些情况下,管理员想要配置目录中数据的匿名访问。匿名访问意味着可以通过提供以下内容绑定到目录:
  • 没有绑定 DN 和密码
  • 有效的绑定 DN 和密码
要配置匿名访问,请在绑定 规则中使用 ldap:/// anyone 表达式和 userdn 关键字:
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.11.1.1.4. 授予对经过身份验证的用户的访问权限
在某些情况下,管理员希望向能够成功绑定到目录服务器的任何用户授予权限,但匿名绑定除外。要配置这个功能,请在绑定规则中将 ldap:///all 表达式与 userdn 关键字一起使用:
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.11.1.1.5. 启用用户访问您自己的条目
要设置允许或拒绝用户访问其自身条目的 ACI,请在绑定规则中使用 ldap:///self 表达式和 userdn 关键字:
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.11.1.1.6. 为用户的 Child 条目设置访问权限
只有在其绑定 DN 是目标条目的父项时,要指定用户被授予或拒绝对条目的访问权限,请在绑定规则中使用 self:///parent 表达式和 userdn 关键字:
userdn comparison_operator "ldap:///parent"

例 18.17. 为用户的 Child 条目设置访问权限

要启用 cn=用户,ou=People,dc=example,dc=com 用户更新其自身子条目的 manager 属性,如 cn=example,cn=user,ou=People,dc=example,dc=com
# 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.11.1.2. 定义基于组的访问

基于组的 ACI 允许您通过向组添加或删除用户来管理访问权限。要配置基于组成员资格的 ACI,请使用 groupdn 关键字。如果用户是一个或多个指定组的成员,则 ACI 会匹配。
使用 groupdn 关键字时,Directory 服务器会根据以下属性验证组成员资格:
  • 成员
  • uniqueMember
  • memberURL
  • memberCertificateDescription
使用 groupdn 关键字绑定规则使用以下语法:
groupdn comparison_operator "ldap:///distinguished_name || ldap:///distinguished_name || ..."
将表达式中的 DN 设置为:
如果您在一个绑定规则中设置了多个 DN,则目录服务器如果经过身份验证的用户是其中一个组的成员,则目录服务器会应用 ACI。要将用户设置为多个组的成员,使用多个 groupdn 关键字,并使用布尔值 and 操作符将其组合在一起。详情请查看 第 18.11.3 节 “使用布尔值 Operator 组合绑定规则”
注意
不要在 LDAP URL 中指定主机名或端口号。URL 始终应用到本地服务器。
18.11.1.2.1. 使用带有 groupdn Keyword 的 DN
要将 ACI 应用到组的成员,请将 groupdn 关键字设置为组的 DN。
groupdn 关键字设置为 DN 使用以下语法:
groupdn comparison_operator ldap:///distinguished_name

例 18.18. 使用带有 groupdn Keyword 的 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.11.1.2.2. 使用带有 LDAP 过滤器的 groupdn Keyword
使用带有 groupdn 关键字的 LDAP 过滤器,您可以定义经过身份验证的用户必须是过滤器搜索返回的至少一个组的成员,以匹配 ACI。
带有 LDAP 过滤器的 groupdn 关键字使用以下语法:
groupdn comparison_operator "ldap:///distinguished_name??scope?(filter)"
注意
LDAP 过滤器支持 kiosk 通配符。

例 18.19. 使用带有 LDAP 过滤器的 groupdn Keyword

要启用 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)";)

18.11.2. 进一步绑定规则

本节论述了不经常使用的绑定规则。

18.11.2.1. 根据匹配值定义访问

在绑定规则中使用 userattr 关键字,以指定用于绑定到目录和目标条目的条目之间必须匹配哪些属性。
userattr 关键字使用以下语法:
userattr comparison_operator "attribute_name#bind_type_or_attribute_value
如需了解更多详细信息,请参阅:
重要
默认情况下,Directory 服务器会评估他们所创建条目的访问权限。但是,为了避免同一级别的用户对象,在使用 userattr 关键字时,目录服务器不会向设置 ACI 的条目授予 添加权限。要配置此行为,请将 userattr 关键字与 parent 关键字一起使用,并在级别 0 上授予权限。
18.11.2.1.1. 使用 USERDN 绑定类型
要在绑定用户 DN 与属性中存储的 DN 匹配时应用 ACI,请使用 USERDN 绑定类型。
具有 USERDN 绑定类型的 userattr 关键字需要以下语法:
userattr comparison_operator "attribute_name#USERDN"

例 18.20. 使用 USERDN 绑定类型

为管理器授予其自身关联的 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 = "telephoneNumber")
 (version 3.0; acl "Manager: telephoneNumber";
 allow (all) userattr = "manager#USERDN";)
如果对 ou=People,dc=example,dc=com 中的条目执行操作的用户 DN 匹配此条目的 manager 属性中的 DN,则前面的 ACI 被评估为 true。
18.11.2.1.2. 使用 GROUPDN 绑定类型
要在绑定用户 DN 是属性中设置的组成员时应用 ACI,请使用 GROUPDN 绑定类型。
带有 GROUPDN 绑定类型的 userattr 关键字需要以下语法:
userattr comparison_operator "attribute_name#GROUPDN"

例 18.21. 使用 GROUPDN 绑定类型

要授予用户删除其在 ou=Social Committee,ou=Groups,dc=example,dc=com 条目下拥有的组条目的权限:
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
dn: ou=Social Committee,ou=Groups,dc=example,dc=com
changetype: modify
add: aci
aci: (target="ou=Social Committee,ou=Groups,dc=example,dc=com)
 (targattrfilters="del=objectClass:(objectClass=groupOfNames)")
 (version 3.0; acl "Delete Group";
 allow (delete) userattr = "owner#GROUPDN";)
如果执行操作的用户的 DN 是 owner 属性中指定的组的成员,则前面的 ACI 会被评估为 true。
指定组可以是动态组,并且组的 DN 可以在数据库中的任何后缀下。但是,服务器这种 ACI 的评估非常需要资源密集型。
如果您使用与目标条目相同的静态组,请使用以下表达式来提高性能:
userattr comparison_operator "ldap:///distinguished_name?attribute_name#GROUPDN"
18.11.2.1.3. 使用 ROLEDN 绑定类型
要在绑定用户属于属性中指定的角色时应用 ACI,请使用 ROLEDN 绑定类型。
具有 ROLEDN 绑定类型的 userattr 关键字需要以下语法:
userattr comparison_operator "attribute_name#ROLEDN"

例 18.22. 使用 ROLEDN 绑定类型

要启用带有 cn=Administrators,dc=example,dc=com 角色的用户,以搜索和读取 ou=People,dc=example,dc=com 中的条目的 管理器 属性:
# 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: (version 3.0; acl "Allow example role owners to read manager attribute";
 allow (search, read) userattr = manager#ROLEDN;)
指定的角色可以在数据库中的任何后缀下。如果您也正在使用过滤的角色,则这种 ACI 的评估将使用服务器上的很多资源。
如果您使用静态角色定义,且角色条目与目标条目位于同一个后缀下,请使用以下表达式来提高性能:
18.11.2.1.4. 使用 SELFDN 绑定类型
当绑定用户的 DN 在条目的单值属性中设置时,SELFDN 绑定类型允许您授予权限。
带有 SELFDN 绑定类型的 userattr 关键字需要以下语法:
userattr comparison_operator "attribute_name#SELFDN"

例 18.23. 使用 SELFDN 绑定类型

要启用用户可以添加 ipatokenuniqueid=*,cn=otp,dc=example,dc=com 条目,其在 ipatokenOwner 属性中设置了绑定用户的 DN:
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
dn: ou=otp,dc=example,dc=com
changetype: modify
add: aci
aci: (target = "ldap:///ipatokenuniqueid=*,cn=otp,dc=example,dc=com")
 (targetfilter = "(objectClass=ipaToken)")(version 3.0;
 acl "token-add-delete"; allow (add) userattr = "ipatokenOwner#SELFDN";)
18.11.2.1.5. 使用 LDAPURL 绑定类型
要在绑定 DN 与目标条目属性中指定的过滤器匹配时应用 ACL,请使用 LDAPURL 绑定类型。
具有 LDAPURL 绑定类型的 userattr 关键字需要以下语法:
userattr comparison_operator "attribute_name#LDAPURL"

例 18.24. 使用 LDAPURL 绑定类型

要为包含 aciurl 属性的用户对象授予读和搜索权限,其将 aciurl 属性设置为 ldap:///ou=People,dc=example,dc=com???one? (uid=userö):
# 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 = "*")
 (version 3.0; acl "Allow read,search "; allow (read,search)
 (userattr = "aciurl#LDAPURL);)
18.11.2.1.6. 使用带有 Inheritance 的用户attr Keyword
当您使用 userattr 关键字关联用于与目标条目绑定的条目时,ACT 仅适用于指定的目标,而不应用到下面的条目。在某些情况下,管理员希望在目标条目下扩展 ACI 的应用。这可以通过使用 parent 关键字并指定应继承 ACI 的目标下面的级别数。
userattr 关键字与 parent 关键字搭配使用时,语法如下:
userattr comparison_operator "parent[inheritance_level].attribute_name#bind_type_or_attribute_value
  • inheritance_level: Comma 分隔列表,用于指示目标下面多少级别继承 ACI。您可以在目标条目下面包括五个级别(01234)。零(0)表示目标条目。
  • attribute_name :以 userattrgroupattr 关键字为目标的属性。
  • bind_type_or_attribute_value :设置属性值或绑定类型,如 USERDN
例如:
userattr = "parent[0,1].manager#USERDN"
如果绑定 DN 与目标条目的 manager 属性匹配,则此绑定规则会被评估为 true。当绑定规则被评估为 true 时,授予的权限将应用到目标条目及其下面的所有条目。

例 18.25. 使用带有 Inheritance 的用户attr Keyword

要启用用户读取和搜索 cn=Profiles,dc=example,dc=com 条目,其中用户的 DN 在 owner 属性中设置,以及包含 cn=mail,cn=Profiles,dc=com 和 cn= news,cn=Profiles,dc=com 的第一个子条目级别:
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
dn: cn=Profiles,dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr="*") (version 3.0; acl "Profile access",
 allow (read,search) userattr="parent[0,1].owner#USERDN" ;)

18.11.2.2. 定义从特定 IP 地址或范围的访问

绑定规则中的 ip 关键字允许您从特定 IP 地址或 IP 地址范围授予或拒绝访问。
使用 ip 关键字绑定规则使用以下语法:
ip comparison_operator "IP_address_or_range"

例 18.26. 在绑定规则中使用 IPv4 地址范围

拒绝从 192.0.2.0/24 网络访问 dc=example,dc=com 条目:
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
dn: dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr = "*") (version 3.0;acl "Deny 192.0.2.0/24"; deny (all)
 (userdn = "ldap:///anyone") and (ip != "192.0.2.");)

例 18.27. 在绑定规则中使用 IPv6 地址范围

拒绝从 2001:db8::/64 网络访问 dc=example,dc=com 条目:
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
dn: dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr = "*") (version 3.0;acl "Deny 2001:db8::/64"; deny (all)
 (userdn = "ldap:///anyone") and (ip != "2001:db8::");)

18.11.2.3. 定义从特定主机或域的访问

绑定规则中的 dns 关键字允许您授予或拒绝特定主机或域的访问。
警告
如果目录服务器无法使用 DNS 将连接的 IP 地址解析为其完全限定域名(FQDN),服务器不会应用带有此客户端的 dns 绑定规则的 ACI。
如果无法使用 DNS 解析客户端 IP 地址,请使用 ip 关键字和 IP 地址。请参阅 第 18.11.2.2 节 “定义从特定 IP 地址或范围的访问”
使用 dns 关键字绑定规则使用以下语法:
dns comparison_operator "host_name_or_domain_name"

例 18.28. 定义来自特定主机的访问

拒绝从 client.example.com 主机访问 dc=example,dc=com 条目:
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
dn: dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr = "*") (version 3.0;acl "Deny client.example.com"; deny (all)
 (userdn = "ldap:///anyone") and (dns != "client.example.com");)

例 18.29. 定义从特定域的访问

拒绝从 example.com 域中的所有主机访问 dc=example,dc=com 条目:
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
dn: dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr = "*") (version 3.0;acl "Deny example.com"; deny (all)
 (userdn = "ldap:///anyone") and (dns != "*.example.com");)

18.11.2.4. 连接中需要级别安全性

连接的安全性通过其 Security Strength Factor (SSF)决定,它设定处理操作所需的最小密钥强度。在绑定规则中使用 ssf 关键字,您可以设置连接必须使用一定级别的安全。这可让您强制操作(如密码更改)通过加密连接执行。
任何操作的 SSF 的值是 TLS 连接和 SASL 绑定之间的值高。这意味着,如果将服务器配置为通过 TLS 运行,并且为 SASL/GSSAPI 配置复制协议,则操作的 SSF 是确保可用加密类型更安全。
使用 ssf 关键字绑定规则使用以下语法:
ssf comparison_operator key_strength
您可以使用以下比较运算符:
  • = (等于)
  • ! (不等于)
  • & lt; (小于)
  • > (greater than)
  • <= (不小于或等于)
  • >=(greater or equal)
如果将 key_strength 参数设置为 0, 则 LDAP 操作不需要安全操作。

例 18.30. 连接中需要级别安全性

要在 dc=example,dc=com 条目中配置该用户,只能在 SSF 为 128 或更高版本时更新其 userPassword 属性:
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
dn: dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr = "userPassword") (version 3.0;
 acl "Allow users updating own userPassword";
 allow (write) (userdn = "ldap:///self") and (ssf >= "128");)

18.11.2.5. 在星期的特定天定义访问权限

绑定规则中的 dayofweek 关键字允许您根据一周中的日期授予或拒绝访问。
注意
目录服务器使用服务器上的时间来评估 ACI,而不是客户端的时间。
使用 dayofweek 关键字绑定规则使用以下语法:
dayofweek comparison_operator "comma-separated_list_of_days"

例 18.31. 在星期的特定天数授予访问权限

要拒绝 uid=用户,ou=People,dc=example,dc=com 用户条目的访问,以便在 Saturdays 和 Sundays 上绑定到服务器:
# 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: (version 3.0; acl "Deny access on Saturdays and Sundays";
 deny (all)
 (userdn = "ldap:///uid=user,ou=People,dc=example,dc=com") and
 (dayofweek = "Sun,Sat");)

18.11.2.6. 在一天的特定时间定义访问权限

绑定规则中的 timeofday 关键字允许您根据日期的时间授予或拒绝访问。
注意
目录服务器使用服务器上的时间来评估 ACI,而不是客户端的时间。
使用 timeofday 关键字绑定规则使用以下语法:
timeofday comparison_operator "time"
您可以使用以下比较运算符:
  • = (等于)
  • ! (不等于)
  • & lt; (小于)
  • > (greater than)
  • <= (不小于或等于)
  • >=(greater or equal)
重要
timeofday 关键字要求您以 24 小时格式指定时间。

例 18.32. 在一天的特定时间定义访问

要拒绝 uid=用户,ou=People,dc=example,dc=com 用户条目的访问,以便在 6pm 到 0am 之间绑定到服务器:
# 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: (version 3.0; acl "Deny access between 6pm and 0am";
 deny (all)
 (userdn = "ldap:///uid=user,ou=People,dc=example,dc=com") and
 (timeofday >= "1800" and timeofday < "2400");)

18.11.2.7. 根据身份验证方法定义访问

绑定规则中的 authmethod 关键字设置客户端在连接到服务器时必须使用哪些身份验证方法以应用 ACI。
使用 authmethod 关键字绑定规则使用以下语法:
authmethod comparison_operator "authentication_method"
您可以设置以下验证方法:
  • :不需要身份验证,并代表匿名访问。这是默认值。
  • simple :客户端必须提供要绑定到目录的用户名和密码。
  • SSL :客户端必须使用数据库、智能卡或其他设备中的 TLS 证书绑定到目录。有关基于证书的身份验证的详情,请参考 第 9.9 节 “使用基于证书的客户端身份验证”
  • SASL :客户端必须通过简单身份验证和安全层(SASL)连接绑定到目录。当您在绑定规则中使用此验证方法时,还要指定 SASL 机制,如 EXTERNAL

例 18.33. 仅使用 EXTERNAL SASL 身份验证方法为连接启用访问

如果连接没有使用基于证书的身份验证方法或 SASL,则拒绝对服务器的访问:
# 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: (version 3.0; acl "Deny all access without certificate"; deny (all)
 (authmethod = "none" or authmethod = "simple");)

18.11.2.8. 根据角色定义访问权限

绑定规则中的 roledn 关键字允许您授予或拒绝对具有一个或多个角色集的用户的访问权限。
注意
红帽建议使用组而不是角色。有关角色和限制的详情,请参考 第 8.2.1 节 “关于角色”
使用 roledn 关键字绑定规则使用以下语法:
roledn comparison_operator "ldap:///distinguished_name || ldap:///distinguished_name || ..."
注意
如果 DN 包含逗号,请使用反斜杠转义逗号。

例 18.34. 根据角色定义访问权限

要启用在 nsRole 属性中设置的 cn=Human Resources,ou=People,dc=example,dc=com 角色的用户,以搜索并读取 ou=People,dc=example,dc=com 中的条目的 管理器 属性:
# 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 manager role to update manager attribute";
 allow (search, read) roledn = "ldap:///cn=Human Resources,ou=People,dc=example,dc=com";)

18.11.3. 使用布尔值 Operator 组合绑定规则

在创建复杂的绑定规则时,可以使用 AND, OR, 和 NOT 布尔操作符对多个关键字进行组合。
使用布尔值运算符绑定规则使用以下语法:
bind_rule_1 boolean_operator bind_rule_2...

例 18.35. 使用布尔值 Operator 组合绑定规则

要配置属于 cn=Administrators,ou=Groups,dc=example,comcn=Operators,ou=Groups,dc=example,com 组权限的用户可以读取、搜索、添加、更新和删除 ou=People,dc=example,dc=com 中的条目:
# 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: (target="ldap:///ou=People,dc=example,dc=com") (version 3.0;
 acl "Allow members of administrators and operators group to manage users";
 allow (read, search, add, write, delete)
 groupdn = "ldap:///cn=Administrators,ou=Groups,dc=example,com" AND
 groupdn = "ldap:///cn=Operators,ou=Groups,dc=example,com";)

目录服务器评估布尔值 Operator

目录服务器使用以下规则评估布尔值运算符:
  • 从左到右的所有表达式。
    在以下示例中,bind_rule_1 会被首先评估:
    (bind_rule_1) OR (bind_rule_2)
  • 从内部到最接近的表达式。
    在以下示例中,bind_rule_2 会被首先评估,bind_rule_3 秒:
    (bind_rule_1) OR ((bind_rule_2) AND (bind_rule_3))
  • 不在 ANDOR 运算符之前。
    在以下示例中,bind_rule_2 会被首先评估:
    (bind_rule_1) AND NOT (bind_rule_2)
    ANDOR 运算符没有优先级顺序。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.