如何处理超级用户访问请求
在配置导出策略时,需要考虑当存储系统收到的客户端访问请求中的用户标识为 0(即用户为超级用户)时应如何处理,并且相应设置导出规则。
在 UNIX 环境中,用户标识为 0 的用户称为超级用户(通常称为根用户),这种用户在系统中具有不受限制的访问权限。使用超级用户权限可能非常危险,原因有几种,包括危及系统和数据安全。
默认情况下,ONTAP 将提供的用户标识为 0 的客户端映射为匿名用户。但是,可指定导出规则中的 - superuser 参数以确定如何根据安全类型处理提供的用户标识为 0 的客户端。下面是 -superuser 参数的有效选项:
- any
- none
这是不指定 -superuser 参数时的默认设置。
- krb5
- ntlm
- sys
提供的用户标识为 0 的客户端的处理方法有两种,具体取决于 -superuser 参数配置:
如果 -superuser 参数和客户端安全类型... | 则客户端... |
---|---|
匹配 | 获取超级用户访问权限且用户标识为 0。 |
不匹配 | 获取访问权限,并作为用户标识由 -anon 参数及其分配的权限指定的匿名用户。 这不考虑选项 none 是只读参数还是读写参数指定的。 |
如果用户标识为 0 的客户端访问 NTFS 安全模式的卷,并且 -superuser 参数设置为 none,则 ONTAP 使用匿名用户的名称映射获取正确的凭证。
示例
导出策略中包含一个导出规则和以下参数:
- -protocol nfs3
- -clientmatch 10.1.16.0/255.255.255.0
- -rorule any
- -rwrule krb5,ntlm
- -anon 127
客户端 1 的 IP 地址为 10.1.16.207,用户标识为 746,使用 NFSv3 协议发送访问请求,并使用 Kerberos v5 认证过。
客户端 #2 的 IP 地址为 10.1.16.211,用户标识为 0,使用 NFSv3 协议发送访问请求,并使用 AUTH_SYS 认证过。
客户端访问协议和 IP 地址与两个客户端都匹配。无论客户端使用何种安全类型进行认证,只读参数都会对所有客户端允许只读访问权限。但是,仅客户端 1 获得了读写访问权限,原因是客户端 1 使用经核准的安全类型 Kerberos v5 进行认证。
客户端 2 无法获取超级用户权限。而是映射到匿名,因为未指定 -superuser 参数。这意味着默认设置为 none 并自动将用户标识 0 映射到匿名。客户端 2 也仅获取只读访问权限,因为其安全类型与读写参数不匹配。
示例
导出策略中包含一个导出规则和以下参数:
- -protocol nfs3
- -clientmatch 10.1.16.0/255.255.255.0
- -rorule any
- -rwrule krb5,ntlm
- -superuser krb5
- -anon 0
客户端 1 的 IP 地址为 10.1.16.207,用户标识为 0,使用 NFSv3 协议发送访问请求,并使用 Kerberos v5 认证过。
客户端 #2 的 IP 地址为 10.1.16.211,用户标识为 0,使用 NFSv3 协议发送访问请求,并使用 AUTH_SYS 认证过。
客户端访问协议和 IP 地址与两个客户端都匹配。无论客户端使用何种安全类型进行认证,只读参数都会对所有客户端允许只读访问权限。但是,仅客户端 1 获得了读写访问权限,原因是客户端 1 使用经核准的安全类型 Kerberos v5 进行认证。客户端 2 无法获取读写访问权限。
此导出规则允许用户标识为 0 的客户端拥有超级用户访问权限。客户端 1 获取超级用户访问权限,因为其与只读和 -superuser 参数的用户标识和安全类型匹配。客户端 2 无法获取读写或超级用户访问权限,因为其安全类型与读写参数或 -superuser 参数不匹配。而是将客户端 2 映射到匿名用户,即本示例中用户标识为 0 的用户。