跳转到主内容

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

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

可不使用  

适用场景

  • ONTAP 9
  • role-based access control(基于角色的访问控制)(RBAC)

问题解答

本文介绍在ONTAP 9中为集群和Vserver管理员创建自定义角色时涉及的各个方面、进而帮助创建自定义角色。

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

命令目录

指 CLI 中的目录。

例如:
volume

命令子目录

 指目录中的目录。

例如:
volume snapshot

命令

 指特定的可执行命令。

例如:volume show - 或 - volume offline.

内部命令

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

  • create
  • 修改
  • 删除
  • 显示

非内部命令

 

客户角色

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

角色

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

角色定义的语法

规则由以下参数组成:

  • Vserver name:自定义角色所属的Data/ Admin Vserver的名称。
  • 角色名称:新自定义角色的名称。例如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 snapshot create", all 。  此命令会发出警告、但也会启用modifydeleteshow。 

示例

cluster1::> security login role create -vserver svm1 -role snap_create -cmddirname "volume snapshot create" -access all

Warning: This operation will also affect the following commands:
   "volume snapshot modify"
   "volume snapshot show"

cluster1::>security login role show -vserver svm1 -role snap_create
           Role          Command/                                      Access
Vserver    Name          Directory                               Query Level
---------- ------------- --------- ----------------------------------- --------
svm1       snap_create   DEFAULT                                       none
                         volume snapshot create                        all
                         volume snapshot modify                        all
                        volume snapshot show                          all

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

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

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

createmodifydelete无法指定//等内在命令。例如、不能仅为modify角色指定选项。 

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

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

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

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

如果要为自定义角色指定特定的ZAPI、请在角色规范中指定等效的CLI命令。例如、如果要为volume-offline 自定义角色启用ZAPI、请将等效的命令行界面volume offline规则添加到角色规范中。

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

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

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

  • 使用security login role show-ontapi 命令枚举自定义角色的所有CLI及等效ZAPI。

注意:确保security login role show-ontapi已为自定义角色启用命令。

如何验证是否为自定义角色启用了特定命令(或) ZAPI?

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

在命令行界面命令中、如何获取等效的ZAPI (或)给定的ZAPI、如何获取等效的命令行界面? 

使用show-ontapi -ontapi "<ZAPI-name>"命令验证自定义角色是否允许给定的ZAPI。输出还将显示等效的命令行界面。

是否存在有助于复制或克隆角色的role copy (或) role clone命令?

不支持、ONTAP 9不支持此功能。

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

不可以、并非所有命令都无法分配给数据SVM自定义角色。只–vserver能将带有选项的命令分配给SVM自定义角色。  例如system node reboot 、无法将此命令分配给数据SVM自定义角色、因为此命令–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 license_role 

允许使用的命令目录system license

system licenseall需要具有访问权限的目录。

以下是元组:

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

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

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

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

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

 

Scan to view the article on your device