跳转到主内容

NetApp_Insight_2020.png 

常见问题解答: ONTAP 管理的自定义角色

Views:
4
Visibility:
Public
Votes:
0
Category:
ontap-9
Specialty:
core
Last Updated:

可不使用  

适用于

在此处添加您的文本。

解答

本文介绍在集群和虚拟服务器管理员的集群 Data ONTAP 中创建自定义角色时涉及的各个方面、这些方面反过来又有助于创建自定义角色。

先决条件
  • 熟悉 ONTAP 命令行界面( CLI )。
  • 集群管理员的管理特权。
Terminology 

命令目录

指 CLI 中的目录。

例如:
volume

命令子目录

 指目录中的目录。

例如:
volume snapshot

命令

 指特定的可执行命令。

例如:volume show - 或 - volume offline.

内部命令

对于所有目录,以下命令均定义为内部命令:

  • create
  • 修改
  • 删除
  • 显示

非内部命令

 

客户角色

 请参考本文中提到的所有示例中的自定义角色。

角色

角色是一组权能或特权。角色包含多个规则;每个规则指定一个或多个权能。此功能在“命令目录”或“命令”上指定为“访问控制”。 

角色定义的语法

规则由以下参数组成:

  • 虚拟服务器名称: custrole 所属的 data/admin 虚拟服务器的名称。
  • 角色名称:新自定义角色的名称。例如storage_admin_role、。
  • 命令目录(或)命令:命令目录(或)命令。
  • 访问控制:有三个选项:allreadonlynone。 

请考虑一个具有以下角色定义的示例:

(vs1.example.com, custrole, "volume", all)
(vs1.example.com, custrole, "volume snapshot", readonly)
(vs1.example.com, custrole, "volume clone", none) 

在上面的示例中、角色 'custrole' 属于虚拟服务器vs1.example.com ,它包含三条规则。 

角色定义的语义:

目录 / 命令和访问控制共有六种组合。下表总结了每个组合的语义。 

功能

访问

说明

目录

all

允许访问指定目录、其子目录和命令

目录

readonly

允许read-only访问指定目录及其所有子目录。在内部命令中、只有show可用且非内部命令不可用。

目录

None

拒绝对指定目录、其子目录和命令的访问。

命令

all

允许执行指定的命令。

命令

readonly

无效。建议不要使用此组合。例如volume offline ,访问方式readonly无效。

命令

none

拒绝执行指定的命令

访问控制的工作原理
  1. 访问控制的行为是分层的:
  2. 规则使用目录时、它将应用于所有子目录。例如,此 tuple()vs1, custrole, "volume", all 允许访问volume 目录及其所有子目录。
  3. 子目录访问覆盖父目录访问:
  4. 如果父目录具有特定的访问控制、并且其子目录使用不同的访问控制指定、则子目录访问控制将覆盖父目录访问控制。

示例:请考虑以下两条规则:

(vs1, custrole, "volume", all)
(vs1, custrole, "volume snapshot", readonly)

第一条规则允许对volume目录及其所有子目录进行完全访问。但是,第二条规则将volume snapshot 目录的访问权限限制为readonly。在这种情况volume snapshot下,readonly访问将覆盖volume具有完全访问控制的。因此volume snapshot ,该目录及其所有子目录都具有readonly访问权限、不all具有访问权限。

示例:请考虑以下两条规则:

(vs1, custrole, "vserver", readonly)
(vs1, custrole, "vserver nfs", all)

第一条规则将vserver 目录及其所有子目录限制为readonly。但是,第二个规则指定vserver nfs的访问权限all。在这种情况vserver nfs下、具有完全访问权限将覆盖父目录readonly的访问控制。因此vserver nfs ,该目录和所有 IT 子目录都具有all 访问权限、不readonly 具有访问权限。

对使用内部命令的限制

createmodify、和deleteshow命令是内部命令,不能单独为访问控制指定这些命令。例如,以下规则无效: ()vs1, custrole, "volume create", all 。  此命令会发出警告、但也会启用modifydeleteshow。 

此默认规则是什么、为什么要创建?

默认规则指定生成其余规则的基础。对于 Data/Admin vserver 自定义角色、默认规则访问设置为none。默认规则将自动创建。 

如何在自定义 RBAC 角色中指定单个命令?

createmodifydelete不能指定 // 等内部命令,例如,不能仅指定modify角色的选项。 

如果要在自定义 RBAC 角色中使用内部命令,请在该目录中指定以下任意选项:

  • all - 允许所有create //modifydeleteshow 命令
  • readonly —只允许show使用命令
  • none —拒绝访问整个目录 

对于角色,可以允许或拒绝非内部命令。例如volume online,是一个非内在命令。在命令的情况下,可以拒绝访问(或)。可以使用 Access 启用命令权限all、使用 Access 可以启用命令 Denialnone 。访问readonly 权限不适用于单个命令,建议不要使用。

如何为角色启用特定的 ZAPI ?

 如果要为 custrole 指定特定的 zAPI ,请在角色规范中指定等效的 CLI 命令。例如,如果要为volume-offline  custrole 启用 zapivolume offline ,请将等效的 CLI 规则添加到角色规范中。

例如,运行以下命令: “security login role create –vserver vs1.example.com –role custrole –command “volume offline”–access all”.

如何将所有允许的命令列出给某个 custrole 以进行验证? 
  • 使用security login create命令创建用户帐户 'fred '
  • 使用 SSH for Admin vserver 登录或运行vserver context命令以切换到数据虚拟服务器的特定用户。

示例: vserver context –vserver vs1.example.com –username fred.

  • 使用security login role show-ontapi 该命令枚举用于 custrole 的所有 CLI 和等效 ZAPI 。

注意:确保security login role show-ontapi为 custrole 启用了该命令。

如何验证是否为 custrole 启用了特定命令(或) ZAPI ?

使用show-ontapi -command <command-name>命令验证给定命令是否允许进行 custrole 。输出还将显示等效的 ZAPI 。

给定 CLI 命令如何获取与 zAPI 相同的 zAPI (或)如何获取等效的 CLI ? 

使用show-ontapi -ontapi "<ZAPI-name>"命令验证给定的 ZAPI 是否允许用于 custrole 。输出还将显示等效的 CLI 。

是否有有助于复制 / 克隆角色的角色副本(或)角色克隆命令?

否、 Data ONTAP 8.1 不支持此功能。

是否可以将任何命令分配给数据虚拟服务器自定义角色?

否、所有命令都无法分配给 Data Vserver 自定义角色、只–vserver能将带有 as 选项的命令分配给 Vserver 自定义角色。  例如,system node reboot 无法将该命令分配给数据虚拟服务器自定义角色,因为此命令–vserver没有选项。 

自定义角色示例

示例:创建允许管理员查看系统中所有登录帐户的自定义角色。 

例如,将此角色命名为login_accts_ro。 

允许使用的命令是security login show。命令目录为security login

security loginreadonly需要具有访问权限的目录。

以下是规则元组:

(clus1, login_accts_ro, "security login", readonly). 

此元组不仅可以启用readonly目录的权限、还可以启用security login其他子目录的权限、readonly具有权限的目录将类似于以下内容:

security login domain-tunnelsecurity login publickeysecurity login role

应禁止这三个目录访问。因此,需要添加以下规则:

(clus1, login_accts_ro, "security login domain-tunnel", none)
(clus1, login_accts_ro, "security login publickey", none)
(clus1, login_accts_ro, "security login role", none) 

login_accts_ro应该有权更改当前用户的密码。

以下是规则:

(clus1, login_accts_ro, "security login password", all) 

CLIsecurity login role show-ontapi 可用于显示当前用户的功能;可以添加此命令来验证功能。

(clus1, login_accts_ro, "security login role show-ontapi", all) 

以下是规则的摘要:

(clus1, login_accts_ro, "security login", readonly)
(clus1, login_accts_ro, "security login domain-tunnel", none)
(clus1, login_accts_ro, "security login publickey", none)
(clus1, login_accts_ro, "security login role", none)
(clus1, login_accts_ro, "security login password", all)
(clus1, login_accts_ro, "security login role show-ontapi", all) 

可以使用以下命令集创建login_accts_ro角色: 

role create -vserver clus1 -role login_accts_ro -cmddirname "security login" -access readonly
role create -vserver clus1 -role login_accts_ro -cmddirname "security login domain-tunnel" -access none
role create -vserver clus1 -role login_accts_ro -cmddirname "security login publickey" -access none
role create -vserver clus1 -role login_accts_ro -cmddirname "security login role" -access none
role create -vserver clus1 -role login_accts_ro -cmddirname "security login password" -access all

示例:创建仅允许许可证管理的自定义角色 

例如,将此命名为 role licence_role 

允许使用的命令目录system license

system license"all需要具有访问权限的目录。

以下是元组:

(clus1, license_role, "system license", all). 

license_role 应该有权更改当前用户的密码。

该规则将类似于以下内容:

(clus1, license_role, "security login password", all) 

CLI"security login role show-ontapi" 可用于显示当前用户的功能、可以添加此命令来验证功能。

(clus1, license_role, "security login role show-ontapi", all) 

以下是规则的摘要:

(clus1, license_role, "system license", all)
(clus1, license_role, "security login password", all)


(clus1, license_role, "security login role show-ontapi", all) 

运行以下命令集以创建license_role: 

role create -vserver clus1 -role license_role  -cmddirname "system license" -access all
role create -vserver clus1 -role license_role  -cmddirname "security login password" -access all
role create -vserver clus1 -role license_role  -cmddirname "security login role show-ontapi" -access all
 

示例:创建仅允许文件系统管理的数据虚拟服务器自定义角色 

例如,调用此角色 filesys_admin_role。 

允许使用以下命令目录:

"vserver nfs"
“vserver cifs”
“vserver export-policy”
“vserver locks”
“vserver services ldap”
“vserver services nis-domain”
“vserver services unix-group”
“vserver services unix-user” 

以下为元组:

(vs1.example.com, filesys_admin_role, "vserver nfs", all)
(vs1.example.com, filesys_admin_role, “vserver cifs”, all)
(vs1.example.com, filesys_admin_role, “vserver export-policy”, all)
(vs1.example.com, filesys_admin_role, “vserver locks”, all)
(vs1.example.com, filesys_admin_role, “vserver services ldap”, all)
(vs1.example.com, filesys_admin_role, “vserver services nis-domain”, all)
(vs1.example.com, filesys_admin_role, “vserver services unix-group”, all)
(vs1.example.com, filesys_admin_role, “vserver services unix-user”, all) 

filesys_admin_role应该有权更改当前用户的密码。

规则如下:

(vs1.example.com, filesys_admin_role, "security login password", all) 

CLI"security login role show-ontapi" 可用于显示当前用户的功能;可以添加此命令来验证功能。

(vs1.example.com, filesys_admin_role, "security login role show-ontapi", all) 

以下是规则的摘要:

(vs1.example.com, filesys_admin_role, "vserver nfs", all)
(vs1.example.com, filesys_admin_role, “vserver cifs”, all)
(vs1.example.com, filesys_admin_role, “vserver export-policy”, all)
(vs1.example.com, filesys_admin_role, “vserver locks”, all)
(vs1.example.com, filesys_admin_role, “vserver services ldap”, all)
(vs1.example.com, filesys_admin_role, “vserver services nis-domain”, all)
(vs1.example.com, filesys_admin_role, “vserver services unix-group”, all)
(vs1.example.com, filesys_admin_role, “vserver services unix-user”, all)
(vs1.example.com, filesys_admin_role, "security login password", all)
(vs1.example.com, filesys_admin_role, "security login role show-ontapi", all) 

以下是用于创建的命令集filesys_admin_role

role create -vserver vs1.example.com -role filesys_admin_role  -cmddirname "vserver nfs" -access all
role create -vserver vs1.example.com -role filesys_admin_role  -cmddirname "vserver cifs" -access all
role create -vserver vs1.example.com -role filesys_admin_role  -cmddirname "vserver export-policy" -access all
role create -vserver vs1.example.com -role filesys_admin_role  -cmddirname "vserver locks" -access all
role create -vserver vs1.example.com -role filesys_admin_role  -cmddirname "vserver services ldap" -access all
role create -vserver vs1.example.com -role filesys_admin_role  -cmddirname "vserver services nis-domain" -access all
role create -vserver vs1.example.com -role filesys_admin_role  -cmddirname "vserver services unix-group" -access all
role create -vserver vs1.example.com -role filesys_admin_role  -cmddirname "vserver services unix-user" -access all
role create -vserver vs1.example.com -role filesys_admin _role  -cmddirname "security login password" -access all
role create -vserver vs1.example.com -role filesys_admin _role  -cmddirname "security login role show-ontapi" -access all