跳转到主内容

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

Views:
90
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

 

NetApp provides no representations or warranties regarding the accuracy or reliability or serviceability of any information or recommendations provided in this publication or with respect to any results that may be obtained by the use of the information or observance of any recommendations provided herein. The information in this document is distributed AS IS and the use of this information or the implementation of any recommendations or techniques herein is a customer's responsibility and depends on the customer's ability to evaluate and integrate them into the customer's operational environment. This document and the information contained herein may be used solely in connection with the NetApp products discussed in this document.