14.5. 为用户配置访问控制

授权 是检查用户是否允许执行操作的机制。授权点在需要授权检查的某些组操作中定义。

14.5.1. 关于访问控制

访问控制列表 (ACL)是指定对服务器操作的授权的机制。每个操作集合存在 ACL,其中进行授权检查。可将其他操作添加到 ACL。
ACL 包含 访问控制指令 (ACI),它们专门允许或拒绝操作,如读或修改。ACI 还包含 evaluator 表达式。ACL 的默认实施仅以可能的 evaluator 类型指定用户、组和 IP 地址。ACL 中的每个 ACI 指定是否允许或拒绝访问、允许或拒绝特定 Operator,以及哪些用户、组或 IP 地址是被允许还是拒绝执行该操作。
CertificateCertificate Systemnbsp 的特权;通过更改与用户所属组的访问控制列表(ACL)更改系统用户,或者用于用户的 IP 地址。通过在访问控制列表中添加该组,为新组分配访问控制。例如,对于仅有权查看日志的管理员的新组,LogAdmins 则可添加到与日志相关的 ACL 中,以允许读取或修改对此组的访问权限。如果这个组没有添加到任何其他 ACL 中,则此组成员只能访问日志。
通过编辑 ACL 中的 ACI 条目来更改用户、组或 IP 地址的访问权限。在 ACL 界面中,每个 ACI 都会显示在其自己的行中。在这个接口窗口中,ACI 具有以下语法:
allow|deny (operation) user|group|IP="name"
注意
IP 地址可以是 IPv4 或 IPv6 地址。IPv4 地址的格式必须为 n.n.n 或 n .n.n,m.m.m。例如:128 .21.39.40128.21.39.40,255.255.255.00。IPv6 地址使用 128 位命名空间,使用以冒号分隔的 IPv6 地址以及句点分隔的子网掩码。例如: 0:0:0:0:0:0:13.1.68.3,FF01::43,0:0:0:0:0:0:13.1.68.3,FFFF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF: FF:FF:FF:FF: FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF: FF
例如,以下是 ACI,允许管理员执行读取操作:
allow (read) group="Administrators"
ACI 可以配置多个操作或操作。操作以逗号分开,其中两侧没有空格。例如:
allow (read,modify) group="Administrators"
ACI 可以有多个组、用户或 IP 地址,方法是将它们分隔为两个管道符号(||),并在两侧面上有一个空格。例如:
allow (read) group="Administrators" || group="Auditors"
管理控制台可以创建或修改 ACI。接口设置是否允许或拒绝 Allow 和 Deny 字段中的操作,设置 Operations 字段中可以执行的操作,然后在 syntax 字段中列出组、用户或 IP 地址被授权或拒绝访问。
ACI 可以允许或拒绝指定组、用户 ID 或 IP 地址的操作。通常,不需要创建 ACI 来拒绝访问。如果没有允许 ACI 包含用户 ID、组或 IP 地址,则拒绝组、用户 ID 或 IP 地址。
注意
如果用户没有明确允许访问资源的任何操作,则此用户将被认为拒绝;他不需要拒绝访问。
例如,用户 JohnB 是 Administrators 组的成员。如果 ACL 仅具有以下 ACL,JohnB 会拒绝任何访问,因为与任何允许 ACI 不匹配:
Allow (read,modify) group="Auditors" || user="BrianC"
通常不需要包含 deny 语句。然而,在有些情况下,对于指定情况非常有用。例如,JohnB管理员 组的成员)刚刚触发。如果用户无法立即删除,可能需要拒绝对 JohnB 的访问。另一个情况是,用户 BrianC 是管理员,但他不应该更改某些资源。由于 Administrators 组必须访问此资源,因此通过创建一个拒绝这个用户访问的 ACI,可以明确拒绝 BrianC 的访问。
允许的权限是 ACI 控制的操作,可以通过允许或拒绝权限来执行操作。为 ACL 设置的操作因 ACL 和子系统而异。可以定义的两个常见操作是读取和修改。
ACI 编辑器的 syntax 字段为表达式设置 evaluator。evaluator 可以指定组、名称和 IP 地址(IPv4 和 IPv6 地址)。它们按照等于(=)或不等号(!=)设置的名称指定。
在 ACL 中包括组的语法是 group="groupname"。排除组的语法为 group!="groupname",它允许除名为 的组外的任何组。例如:
group="Administrators" || group!="Auditors"
也可以使用正则表达式来指定组,例如使用星号(*)等通配符字符。例如:
group="* Managers"
有关支持的正则表达式模式的更多信息,请参阅 https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
在 ACL 中包含用户的语法是 用户="userID"。要排除用户的语法为 user!="userID",它允许除名为 的用户 ID 外的任何用户 ID 除外。例如:
user="BobC" || user!="JaneK"
要指定所有用户,请提供该人 的值。例如:
user="anybody"
也可以使用正则表达式来指定用户名,如使用通配符字符,如星号(*)。例如:
user="*johnson"
有关支持的正则表达式模式的更多信息,请参阅 https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
在 ACL 中包含 IP 地址的语法为 ipaddress="ipaddress"。从 ACL 中排除 ID 地址的语法为 ipaddress!="ipaddress"。IP 地址使用数字值指定;不允许使用 DNS 值。例如:
ipaddress="12.33.45.99"
ipaddress!="23.99.09.88"
IP 地址可以是 IPv4 地址,如上所示,也可以是 IPv6 地址。IPv4 地址的格式为 n.n.n.nn.n.n.n,m.m.m (子网掩码)。IPv6 地址使用 128 位命名空间,使用以冒号分隔的 IPv6 地址以及句点分隔的子网掩码。例如:
ipaddress="0:0:0:0:0:0:13.1.68.3"
也可以使用正则表达式来指定 IP 地址,如使用星号(*)等通配符字符。例如:
ipaddress="12.33.45.*"
有关支持的正则表达式模式的更多信息,请参阅 https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
通过将每个值分开两个管道字符(||),创建一个带有多个值的字符串。例如:
user="BobC" || group="Auditors" || group="Administrators"