跳到主要内容

向导出策略添加规则

如果没有规则,导出策略就无法向客户端提供对数据的访问权限。要新建导出规则,必须确定客户端并选择客户端匹配格式、选择访问和安全类型、指定匿名用户标识映射、选择规则索引号,并选择访问协议。然后,可以使用 vserver export-policy rule create 命令为导出策略添加新的规则。

开始之前

  • 要添加导出规则的导出策略必须已存在。

  • 必须在数据 SVM 上正确配置 DNS,且 DNS 服务器必须具有 NFS 客户端的正确条目。

    这是因为 ONTAP 会针对某些客户端匹配格式使用数据 SVM 的 DNS 配置执行 DNS 查找,而导出策略规则匹配失败可能会妨碍客户端访问数据。

  • 如果使用 Kerberos 进行认证,必须已确定在 NFS 客户端上将使用以下哪种安全方法:

    • krb5(Kerberos V5 协议)
    • krb5i(使用校验和进行完整性检查的 Kerberos V5 协议)
    • krb5p(带隐私服务的 Kerberos V5 协议)

关于本任务

如果导出策略中的现有规则可满足您的客户端匹配和访问要求,则不必创建新规则。

如果使用 Kerberos 进行认证,且通过 Kerberos 访问 SVM 的所有卷,则可将根卷的导出规则选项 -rorule-rwrule-superuser 设置为 krb5krb5ikrb5p

  1. 为新规则确定客户端和客户端匹配格式。

    -clientmatch 选项指定应用规则的客户端。可指定一个或多个客户端匹配值;如指定多个值,必须用逗号分隔。可以指定以下任意格式的匹配:

    客户端匹配格式示例
    前面带有 . 字符的域名.example.com.example.com,.example.net,...
    主机名host1host1,host2, ...
    IPv4 地址10.1.12.2410.1.12.24,10.1.12.25, ...
    子网掩码以位数表示的 IPv4 地址10.1.12.10/410.1.12.10/4,10.1.12.11/4,...
    具有网络掩码的 IPv4 地址10.1.16.0/255.255.255.010.1.16.0/255.255.255.0,10.1.17.0/255.255.255.0,...
    采用点分格式的 IPv6 地址::1.2.3.4::1.2.3.4,::1.2.3.5,...
    子网掩码以位数表示的 IPv6 地址ff::00/32ff::00/32,ff::01/32,...
    名称前面带有 @ 字符的单一 netgroup@netgroup1@netgroup1,@netgroup2,...

    您还可以组合多种类型的客户端定义;例如,.example.com,@netgroup1

    指定 IP 地址时,请注意以下各项:

    • 不允许输入 IP 地址范围,如 10.1.12.10-10.1.12.70。

      这种格式的条目将解释为一个文本字符串,并视为一个主机名。

    • 如需在导出规则中指定单个 IP 地址,以便对客户端访问进行精细管理,请不要指定动态 IP 地址(例如,DHCP)或临时分配的 IP 地址(例如,IPv6)。

      否则,IP 地址改变后客户端将无法访问。

    • 不允许输入具有网络掩码的 IPv6 地址,例如 ff::12/ff::00。

  2. 为匹配的客户端选择访问和安全类型。

    对于使用指定安全类型认证的客户端,可以指定以下的一种或多种访问模式:

    • -rorule(只读访问)
    • -rwrule(读写访问)
    • -superuser(根访问)
    对于特定安全类型,如果导出规则也允许只读访问权限,客户端可以只获得读写访问权限。对于某一安全类型,如果只读参数比读写参数限制性更强,客户端可能不会获得读写访问权限。这也适用于超级用户的访问。
    可通过逗号分隔的列表为规则指定多种安全类型。如果指定 anynever 安全类型,请不要指定任何其他安全类型。请从以下有效的安全类型中进行选择:
    如果安全类型设为...匹配的客户端可以访问导出的数据...
    any 始终,无论传入哪种安全类型。
    none

    如果单独列出,具有任何安全类型的客户端均被授予匿名访问权限。如果与其他安全类型一同列出,将为具有指定安全类型的客户端授予访问权限,并为具有任何其他安全类型的客户端授予匿名访问权限。

    never 始终不可,无论传入哪种安全类型。
    krb5 如果通过 Kerberos 5 进行认证。

    仅认证:每个请求和响应的标头均已签名。

    krb5i 如果通过 Kerberos 5i 进行认证。

    认证和完整性:每个请求和响应的标头和正文均已签名。

    krb5p 如果通过 Kerberos 5p 进行认证。

    认证、完整性和隐私:每个请求和响应的标头和正文均已签名,且 NFS 数据有效负载已加密。

    ntlm 如果通过 CIFS NTLM 进行认证。
    sys 如果通过 NFS AUTH_SYS 进行认证。

    建议的安全类型为 sys,如果使用 Kerberos,建议的安全类型为 krb5krb5ikrb5p

    如果结合使用 Kerberos 与 NFSv3,除了 krb5 之外,导出策略规则还必须允许 sys-rorule-rwrule 访问权限。这是因为需要允许导出的 Network Lock Manager(NLM)访问权限。

  3. 指定匿名用户标识映射。

    -anon 选项指定 UNIX 用户标识或用户名,它映射到用户标识为 0(零)的客户端请求(通常与 root 用户名相关联)。默认值为 65534。NFS 客户端通常将用户标识 65534 与 nobody 用户名(也称为根权限压缩)相关联。在 ONTAP 中,此用户标识与用户 pcuser 关联。要禁用用户标识为 0 的任何客户端的访问权限,请指定值 65535

  4. 选择规则索引顺序。

    -ruleindex 选项指定规则的索引号。规则的评估顺序是根据索引号列表确定的;首先评估索引号较小的规则。例如,索引号为 1 的规则在索引号为 2 的规则之前评估。

    如果添加...则...
    导出策略中的第一条规则输入 1
    导出策略中的其他规则
    1. 显示策略中的现有规则:

      vserver export-policy rule show -instance -policyname your_policy
    2. 根据应评估的顺序选择新规则的索引号。

  5. 选择适用的 NFS 访问值:{nfs|nfs3|nfs4}

    nfs 可匹配任何版本;nfs3nfs4 仅匹配特定版本。

  6. 创建导出规则并添加到现有导出策略:vserver export-policy rule create -vserver vserver_name -policyname policy_name -ruleindex integer -protocol {nfs|nfs3|nfs4} -clientmatch { text | "text,text,..." } -rorule security_type -rwrule security_type -superuser security_type -anon user_ID
  7. 显示导出策略的规则,以验证新规则是否存在:vserver export-policy rule show -policyname policy_name
    此命令显示该导出策略的摘要,包括应用于该策略的规则列表。ONTAP 会为每条规则分配规则索引号。如果知道规则索引号,即可用它显示指定导出规则的详细信息。
  8. 验证应用于导出策略的规则配置是否正确:vserver export-policy rule show -policyname policy_name -vserver vserver_name -ruleindex integer

示例

以下命令在名为 vs1 的 SVM 上,为名为 rs1 的导出策略创建导出规则,并验证是否已创建。此规则的索引号为 1。此规则匹配 eng.company.com 域中和 netgroup @netgroup1 中的任何客户端。此规则启用所有 NFS 访问。对于使用 AUTH_SYS 认证的用户,它可启用只读和读写访问权限。除非使用 Kerberos 进行认证,否则 UNIX 用户标识为 0(零)的客户端均是匿名的。

vs1::> vserver export-policy rule create -vserver vs1 -policyname exp1 -ruleindex 1 -protocol nfs 
-clientmatch eng.company.com,@netgoup1 -rorule sys -rwrule sys -anon 65534 -superuser krb5

vs1::> vserver export-policy rule show -policyname nfs_policy
Virtual Policy Rule Access Client RO
Server Name Index Protocol Match Rule
------------ -------------- ------ -------- ---------------- ------
vs1 exp1 1 nfs eng.company.com, sys
@netgroup1

vs1::> vserver export-policy rule show -policyname exp1 -vserver vs1 -ruleindex 1

Vserver: vs1
Policy Name: exp1
Rule Index: 1
Access Protocol: nfs
Client Match Hostname, IP Address, Netgroup, or Domain: eng.company.com,@netgroup1
RO Access Rule: sys
RW Access Rule: sys
User ID To Which Anonymous Users Are Mapped: 65534
Superuser Security Types: krb5
Honor SetUID Bits in SETATTR: true
Allow Creation of Devices: true


以下命令在名为 vs2 的 SVM 上,为名为 expol2 的导出策略创建导出规则,并验证是否已创建。规则的索引号为 21。此规则匹配的客户端是 netgroup dev_netgroup_main 的成员。此规则启用所有 NFS 访问。对于使用 AUTH_SYS 认证的用户,它可启用只读访问权限,对于读写访问和根访问,需要 Kerberos 认证。除非使用 Kerberos 进行认证,否则 UNIX 用户标识为 0(零)的客户端根访问将被拒绝。

vs2::> vserver export-policy rule create -vserver vs2 -policyname expol2 -ruleindex 21 -protocol nfs 
-clientmatch @dev_netgroup_main -rorule sys -rwrule krb5 -anon 65535 -superuser krb5

vs2::> vserver export-policy rule show -policyname nfs_policy
Virtual Policy Rule Access Client RO
Server Name Index Protocol Match Rule
-------- ------------ ------ -------- ------------------ ------
vs2 expol2 21 nfs @dev_netgroup_main sys

vs2::> vserver export-policy rule show -policyname expol2 -vserver vs1 -ruleindex 21

Vserver: vs2
Policy Name: expol2
Rule Index: 21
Access Protocol: nfs
Client Match Hostname, IP Address, Netgroup, or Domain:
@dev_netgroup_main
RO Access Rule: sys
RW Access Rule: krb5
User ID To Which Anonymous Users Are Mapped: 65535
Superuser Security Types: krb5
Honor SetUID Bits in SETATTR: true
Allow Creation of Devices: true