03-RBAC配置
本章节下载: 03-RBAC配置 (332.26 KB)
设备运行于FIPS模式时,本特性部分配置相对于非FIPS模式有所变化,具体差异请见本文相关描述。有关FIPS模式的详细介绍请参见“安全配置指导”中的“FIPS”。
RBAC(Role Based Access Control,基于角色的访问控制)通过建立“权限<->角色”的关联实现将权限赋予给角色,并通过建立“角色<->用户”的关联实现为用户指定角色,从而使用户获得相应角色所具有的权限。RBAC的基本思想就是给用户指定角色,这些角色中定义了允许用户操作哪些系统功能以及资源对象。
由于权限与用户的分离,RBAC具有以下优势:
· 管理员不需要针对用户去逐一指定权限,只需要预先定义具有相应权限的角色,再将角色赋予用户即可。因此RBAC更能适应用户的变化,提高了用户权限分配的灵活性。
· 由于角色与用户的关系常常会发生变化,但是角色和权限的关系相对稳定,因此利用这种稳定的关联可减小用户授权管理的复杂性,降低管理开销。
权限与角色的关联是通过为角色赋予权限建立的,具体实现包括以下两个方面:
· 通过用户角色规则实现对系统功能的操作权限的控制。例如,定义用户角色规则允许用户配置A功能,或禁止用户配置B功能。
· 通过资源控制策略实现对系统资源(接口、VLAN、VPN实例)的操作权限的控制。例如,定义资源控制策略允许用户操作VLAN 10,禁止用户操作接口FortyGigE1/0/1。
用户角色规则定义了允许/禁止用户操作某些功能的权限。一个用户角色中可以包含多条用户角色规则,每条规则定义了是允许还是禁止用户对某命令、特性、特性组、XML元素或者OID进行操作。
(1) 命令:控制用户权限的最小单元。RBAC根据命令的作用,将命令分成以下三类:
· 读类型:本类型的命令仅能显示系统配置信息和维护信息,如显示命令display、显示文件信息的命令dir。
· 写类型:本类型的命令用于对系统进行配置,如使能信息中心功能的命令info-center enable、配置调试信息开关的命令debugging。
· 执行类型:本类型的命令用于执行特定的功能,如ping命令、与FTP服务器建立连接的命令ftp。
(2) 特性:与一个功能相关的所有命令的集合,例如OSPF特性包含了所有OSPF的配置、显示及调试命令。系统中的所有特性及其包含的命令都是系统预定义的,不允许用户自定义。
(3) 特性组:一个或者多个特性的集合。其主要目的是为了方便管理员对用户权限进行配置。系统预定义了两个特性组L2和L3。L2中包含了所有的二层协议相关功能的命令,L3中包含了所有三层协议相关功能的命令。管理员可以根据需要自定义特性组,但不能修改和删除系统预定义的特性组L2和L3。各个特性组之间包含的特性允许重叠。
(4) XML元素:对于配置对象的组织呈现树状结构,每一个XML元素代表XML配置中的一个XML节点。
(5) OID:Object Identifier,对象标识符,SNMP协议通过OID唯一标识一个被管理对象。
根据权限控制范围的不同,可以将用户角色规则分为如下三类:
(1) 基于命令的规则:用来控制一条命令或者与指定命令关键字相匹配的一类命令是否允许被执行。关于匹配的具体涵义,请参见RBAC配置命令。
(2) 基于特性的规则:用来控制特性包含的命令是否允许被执行。因为特性中的每条命令都属于读类型、写类型或执行类型,所以在定义基于特性的规则时,可以精细地控制特性所包含的读、写或执行类型的命令能否被执行。
(3) 基于特性组的规则:此规则和基于特性的规则类似,区别是一条基于特性组的规则中可同时对多个特性包含的命令进行控制。
(4) 基于XML元素的规则:用来控制指定的XML元素是否允许被执行。XML元素也具有读,写或执行属性。
(5) 基于OID的规则:用来控制指定的OID是否允许被SNMP访问。OID具有读,写和执行属性。
一个用户角色中可以定义多条规则,各规则以创建时指定的编号为唯一标识,被授权该角色的用户可以执行的命令为这些规则中定义的可执行命令的并集。若这些规则定义的权限内容有冲突,则规则编号大的有效。例如,规则1允许执行命令A,规则2允许执行命令B,规则3禁止执行命令A,则最终规则2和规则3生效,即禁止执行命令A,允许执行命令B。
资源控制策略规定了用户对系统资源的操作权限。在用户角色中可定义三种类型的资源控制策略:接口策略、VLAN策略以及VPN策略,它们分别定义了用户允许操作的接口、VLAN或者VPN实例。对接口/VLAN/VPN实例的操作是指创建并进入接口视图/VLAN视图/VPN实例视图、删除和应用接口/VLAN/ VPN实例(在display命令中指定接口/VLAN/VPN实例参数并不属于应用接口/VLAN/ VPN实例)。
资源控制策略需要与用户角色规则相配合才能生效。在用户执行命令的过程中,系统对该命令涉及的系统资源使用权限进行动态检测,因此只有用户同时拥有执行该命令的权限和使用该资源的权限时,才能执行该命令。例如,若管理员为某用户角色定义了一条规则允许用户执行创建VLAN的命令vlan,且同时定义了一条VLAN策略允许用户操作VLAN 10,则当用户被授权此用户角色并试图创建VLAN 10时,操作会被允许,但试图创建其它VLAN时,操作会被禁止。若管理员并没有为该用户角色定义规则允许用户执行创建VLAN命令,则用户即便拥有该VLAN资源的操作权限,也无法执行相关的命令。
系统预定义了20种用户角色,用户角色名和对应的权限如表1-1所示。这些用户角色缺省均具有操作所有系统资源的权限,但具有不同的系统功能操作权限。如果系统预定义的用户角色无法满足权限管理需求,管理员还可以自定义用户角色来对用户权限做进一步控制。
用户角色名 |
权限 |
network-admin |
可操作系统所有功能和资源 |
network-operator |
· 可执行系统所有功能和资源的相关display命令(除display history-command all之外) · 可执行切换MDC(Multitenant Device Context,多租户设备环境)视图的命令 · 如果用户采用本地认证方式登录系统并被授予该角色,则可以修改自己的密码 · 可执行进入XML视图的命令 · 可允许用户操作所有读类型的XML元素 · 可允许用户操作所有读类型的OID |
mdc-admin |
可操作该MDC所有功能和资源 |
mdc-operator |
· 可执行该MDC所有功能和资源的相关display命令(除display history-command all、display security-logfile summary等命令,具体请通过display role命令查看) · 如果用户采用本地认证方式登录系统并被授予该角色,则可以修改自己的密码 · 可执行进入XML视图的命令 · 可允许用户操作所有读类型的XML元素 · 可允许用户操作所有读类型的OID |
level-n (n = 0~15) |
· level-0:可执行命令ping、quit、ssh2、super、system-view、telnet和tracert,且管理员可以为其配置权限 · level-1:具有level-0用户角色的权限,并且可执行系统所有功能和资源的相关display命令(除display history-command all之外),以及管理员可以为其配置权限 · level-2~level-8和level-10~level-14:无缺省权限,需要管理员为其配置权限 · level-9:可操作系统中绝大多数的功能和所有的资源,且管理员可以为其配置权限,但不能操作display history-command all命令、RBAC的命令(Debug命令除外)、MDC、文件管理、设备管理以及本地用户特性。对于本地用户,若用户登录系统并被授予该角色,可以修改自己的密码 · level-15:在缺省MDC中,具有与network-admin角色相同的权限;在非缺省MDC中,具有与mdc-admin角色相同的权限(支持MDC的设备) |
· MDC相关的介绍请参见“虚拟化技术配置指导”中的“MDC”。
· 缺省MDC中系统预定义了表1-1中的所有用户角色,而非缺省MDC中没有network-admin和network-operator两种用户角色。
· 只有具有network-admin、mdc-admin、level-15用户角色的用户登录设备后才可以执行RBAC特性的所有命令、修改用户线视图下的相关配置(包括user-role、authentication-mode、protocol和set authentication password)以及执行创建/修改/删除本地用户和本地用户组;其它角色的用户,即使被授权对本地用户和本地用户组的操作权限,也仅仅具有修改自身密码的权限,没有除此之外的对本地用户和本地用户组的任何操作权限。
· 预定义的用户角色中,仅用户角色level-0~level-14可以通过自定义规则和资源控制策略调整自身的权限。需要注意的是,这种修改对于display history-command all命令不生效,即不能通过添加对应的规则来更改它的缺省执行权限。
角色与用户的关联是通过为用户赋予角色建立的。将有效的用户角色成功授权给用户后,登录设备的用户才能以各角色所具有的权限来配置、管理或者监控设备。根据用户登录设备时采用的不同认证方式,可以将为用户授权角色分为AAA(Authentication、Authorization、Accounting,认证、授权、计费)方式和非AAA方式。
(1) AAA方式:用户登录时使用的认证方式为scheme,用户登录设备后所拥有的用户角色由AAA功能进行授权。
· 若用户通过了本地授权,则由设备为其授权用户角色,授权的用户角色是在本地用户中设置的。
· 若用户通过了远程授权,则由远程AAA服务器为其授权用户角色,授权的用户角色是在远程AAA服务器(RADIUS或HWTACACS服务器)上设置的。
(2) 非AAA方式:用户登录时使用的认证方式为none或者password,用户登录后所拥有的用户角色是用户线下配置的用户角色。
以上两种方式均支持对一个用户同时授权多个用户角色。拥有多个角色的用户可获得这些角色中被允许执行的功能以及被允许操作的资源的集合。例如,某用户拥有角色A,它禁止用户执行qos apply policy命令,且仅允许操作接口2。同时,该用户拥有角色B,它允许用户执行qos apply policy命令,且允许用户操作所有接口。则,这种情况下该用户将能够在所有接口下执行qos apply policy命令,以及可以操作所有的接口资源。
· AAA相关内容的介绍请参见“安全配置指导”中的“AAA”。
· 用户线相关内容的介绍请参见“基础配置指导”中的“登录设备”。
· 通过publickey或password-publickey认证登录服务器的SSH用户将被授予同名的设备管理类本地用户视图下配置的授权用户角色。SSH用户相关的介绍请参见“安全配置指导”中的“SSH”。
表1-2 RBAC配置任务简介
配置任务 |
说明 |
详细配置 |
创建用户角色 |
必选 |
|
为用户角色赋予权限 |
必选 |
|
为用户授权角色 |
可选 |
|
切换用户角色 |
可选 |
如果系统预定义角色无法满足用户的权限管理需求,可以自定义用户角色来对用户权限做更精细和灵活的控制。除系统预定义的用户角色外,系统中最多允许同时创建64个用户角色。
表1-3 创建用户角色
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建用户角色,并进入用户角色视图 |
role name role-name |
缺省情况下,系统预定义了20个用户角色,名称为network-admin、network-operator、mdc-admin、mdc-operator、level-n(n为0~15的整数)。其中,仅用户角色level-0~level-14可以自定义规则、资源控制策略以及配置描述信息 |
(可选)配置用户角色描述信息 |
description text |
缺省情况下,未定义用户角色描述信息 |
用户角色规则分为以下三类,可根据权限控制需要配置一条或多条规则:
· 基于命令的规则:由允许/禁止(permit/deny)关键字及命令匹配字符串(command-string)定义是否允许执行一条命令或者与指定命令关键字相匹配的一组命令。
· 基于特性的规则:由允许/禁止(permit/deny)关键字、特性名称(feature-name)以及该特性中命令的类型(读/写/执行)定义是否允许执行一个或所有特性中包含的指定类型的命令。
· 基于特性组的规则:由允许/禁止(permit/deny)关键字、特性组名称(feature-group-name)以及该特性组中命令的类型(读/写/执行)定义是否允许执行一个特性组中的特性包含的指定类型的命令。
· 基于XML元素的规则:由允许/禁止(permit/deny)关键字、XML元素名称(feature-name)以及该XML元素的类型(读/写/执行)定义是否允许执行一个或所有指定类型的XML元素。
· 基于OID的规则:由允许/禁止(permit/deny)关键字、OID(oid-string)以及对该OID的操作类型(读/写/执行)定义是否允许执行一个或所有指定类型的OID。
关于用户角色规则,存在以下配置限制:
· 仅系统预定义的用户角色network-admin/network-operator/mdc-admin/mdc-operator/level-15具有MDC特性的相应操作权限,具体请参见“表1-1系统预定义的用户角色名和对应的权限”。其它用户角色视图下,对于MDC特性或MDC相关命令的配置都无效。
· 每个用户角色中最多可以配置256条规则,系统中可以配置的用户角色规则总数不能超过1024。
· 修改后的规则对于当前已经在线的用户不生效,对于之后使用该角色登录设备的用户生效。
表1-4 配置用户角色规则
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入用户角色视图 |
role name role-name |
- |
配置基于命令的规则 |
rule number { deny | permit } command command-string |
至少选其一 缺省情况下,新创建的用户角色中未定义规则,即当前用户角色无任何权限 当多条规则中配置的权限出现冲突时,规则编号大的权限生效 |
配置基于特性的规则 |
rule number { deny | permit } { execute | read | write } * feature [ feature-name ] |
|
配置基于特性组的规则 |
rule number { deny | permit } { execute | read | write } * feature-group feature-group-name |
|
配置基于XML元素的规则 |
rule number { deny | permit } { execute | read | write } * xml-element [ xml-string ] |
|
配置基于OID的规则 |
rule number { deny | permit } { execute | read | write } * oid [ oid-string ] |
|
退回系统视图 |
quit |
- |
创建特性组,并进入特性组视图 |
role feature-group name feature-group-name |
若要配置基于特性组的规则,则必选 缺省情况下,存在两个特性组,名称为L2和L3 除系统预定义的特性组L2和L3之外,系统中最多允许创建64个特性组 |
向特性组中添加一个特性 |
feature feature-name |
缺省情况下,自定义特性组中不包含任何特性 |
资源控制策略分为接口策略、VLAN策略和VPN策略三类。所有用户角色均具有缺省的资源控制策略,允许用户具有操作任何系统资源(接口/VLAN/ VPN实例)的权限。若要限制或区分用户对这些资源的使用权限,则应该配置资源控制策略并在指定类型的策略中配置允许操作的资源列表。
需要注意的是,修改后的资源控制策略对于当前已经在线的用户不生效,对于之后使用该角色登录设备的用户生效。
表1-5 配置接口资源控制策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入用户角色视图 |
role name role-name |
- |
进入接口策略视图 |
interface policy deny |
缺省情况下,用户具有操作任何接口的权限 进入接口策略视图后,如果不配置允许操作的接口列表,则用户将没有操作任何接口的权限 |
(可选)配置允许操作的接口列表 |
permit interface interface-list |
缺省情况下,未定义允许操作的接口列表,用户没有操作任何接口的权限 可以多次执行此命令向接口列表中添加允许操作的接口 |
表1-6 配置VLAN资源控制策略
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入用户角色视图 |
role name role-name |
- |
并进入VLAN策略视图 |
vlan policy deny |
缺省情况下,用户具有操作任何VLAN的权限 进入VLAN策略视图后,如果不配置允许操作的VLAN列表,则用户将没有操作任何VLAN的权限 |
(可选)配置允许操作的VLAN列表 |
permit vlan vlan-id-list |
缺省情况下,未定义允许操作的VLAN列表,用户没有操作任何VLAN的权限 可以多次执行此命令向VLAN列表中添加允许操作的VLAN |
表1-7 配置VPN资源控制策略
进入VPN策略视图 |
缺省情况下,用户具有操作任何VPN实例的权限 进入VPN策略视图后,如果不配置允许操作的VPN列表,则用户将没有操作任何VPN实例的权限 |
|
缺省情况下,未定义允许操作的VPN列表,用户没有操作任何VPN实例的权限 可以多次执行此命令向VPN列表中添加允许操作的VPN实例 |
为保证对用户授权角色成功,设备上必须存在对应的被授权的用户角色。若要授权的用户角色有多个,则只要被授权的用户角色中的一个或多个在设备上存在,相应的用户角色即可授权成功;若设备上不存在任何一个被授权的用户角色,则用户角色授权将会失败。
对于通过AAA认证登录设备的用户,由服务器(远程认证服务器或本地认证服务器)为其授权用户角色。如果用户没有被授权任何用户角色,将无法成功登录设备。为此,系统提供了一个缺省用户角色授权功能。使能该功能后,用户在没有被服务器授权任何角色的情况下,将具有一个缺省的用户角色,该缺省用户角色可以通过参数配置为系统中已存在的任意用户角色。
表1-8 使能缺省用户角色授权功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能缺省用户角色授权功能 |
role default-role enable [ role-name ] |
缺省情况下,缺省用户角色授权功能处于关闭状态 若本地用户的授权方案为none(即不授权),则必须使能缺省用户角色授权功能 |
对于通过AAA远程认证登录设备的用户,由AAA服务器的配置决定为其授权的用户角色。有关AAA以及远程AAA认证相关配置的详细介绍请参见“安全配置指导”中的“AAA”。
RADIUS服务器上的授权角色配置与服务器的具体情况有关,请参考服务器的配置指导进行;HWTACACS服务器上的授权角色配置必须满足格式:roles="name1 name2 namen",其中name1、name2、namen为要授权下发给用户的用户角色,可为多个,并使用空格分隔。
为了适应原有AAA服务器上配置的基于优先级的权限管理模式,设备支持将AAA服务器下发的优先级转换为对应级别的RBAC角色(优先级别为0~15分别对应RBAC角色level-0~level-15)。若AAA服务器上同时配置了基于优先级和基于角色属性的下发模式,则取权限的并集下发。
对于通过本地AAA认证登录设备的用户,由本地用户配置决定为其授权的用户角色。有关AAA以及本地用户相关配置的详细介绍请参见“安全配置指导”中的“AAA”。
由于本地用户缺省就拥有一个用户角色,如果要赋予本地用户新的用户角色,请确认是否需要保留这个缺省的用户角色,若不需要,请删除。
表1-9 为本地用户授权用户角色
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建本地用户,并进入本地用户视图 |
local-user user-name class { manage | network } |
- |
为本地用户授权用户角色 |
authorization-attribute user-role role-name |
缺省情况下,由用户角色为network-admin或者level-15,且登录到缺省MDC的用户创建的本地用户被授权用户角色network-operator;由用户角色为mdc-admin或者level-15,且登录到非缺省MDC的用户创建的本地用户被授权用户角色mdc-operator 可通过多次执行本命令,为本地用户授权多个用户角色,最多可授权64个 |
对于不使用AAA认证登录设备的非SSH用户,由用户线配置决定为其授权的用户角色。有关用户线相关配置的详细介绍请参见“基础配置指导”中的“登录设备”;通过publickey或password-publickey认证登录设备的SSH用户,由同名的设备管理类本地用户配置决定为其授权的用户角色。SSH用户相关的介绍请参见“安全配置指导”中的“SSH”。
表1-10 为非AAA认证用户授权用户角色
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入用户线视图 |
line { first-num1 [ last-num1 ] | { aux | vty } first-num2 [ last-num2 ] } |
二者选其一 关于用户线和用户线视图下各属性生效情况和优先级的详细介绍,请参见“基础配置指导”中的“登录设备” |
进入用户线类视图 |
line class { aux | vty } |
|
为从当前用户线登录系统的用户配置授权的用户角色 |
user-role role-name |
缺省情况下,使用AUX用户线登录缺省MDC的用户将被授权用户角色network-admin;通过其它用户线登录缺省MDC的用户将被授权用户角色network-operator;network-admin用户使用switchto mdc命令登录非缺省MDC后,将被授权用户角色mdc-admin,其它登录非缺省MDC的用户将被授权用户角色mdc-operator 可通过多次执行本命令,配置多个用户角色,最多可配置64个 |
切换用户角色是指在不退出当前登录、不断开当前连接的前提下修改用户的用户角色,改变用户所拥有的命令行权限。切换后的用户角色只对当前登录生效,用户重新登录后,又会恢复到原有角色。
· 为了防止对设备的误操作,通常情况下建议管理员使用较低权限的用户角色登录设备、查看设备运行参数,当需要对设备进行维护时,再临时切换到较高权限的用户角色。
· 当管理员需要暂时离开设备或者将设备暂时交给其它人代为管理时,为了安全起见,可以临时切换到较低权限的用户角色,来限制其他人员的操作。
为了保证操作的安全性,通常用户进行用户角色切换时,均需要输入用户角色切换密码。切换到不同的用户角色时,需要输入相应切换密码。如果服务器没有响应或者没有配置用户角色切换密码,则切换操作失败,若还有备份认证方案,则转而进行备份认证。因此,在进行切换操作前,请先保证配置了正确的用户角色切换密码。
为了保证切换操作的安全性,执行用户角色切换时,需要进行身份认证。设备支持如表1-11所示的四种用户角色切换认证方式。
认证方式 |
涵义 |
说明 |
local |
本地密码认证 |
设备验证用户输入的用户角色切换密码 使用该方式时,需要在设备上使用super password命令设置用户角色切换密码 对于AUX用户,在设备仅采用本地密码切换认证方式且未配置切换密码的情况下,设备不关心用户是否输入切换密码以及输入切换密码的内容,可允许用户成功切换用户角色 |
scheme |
通过HWTACACS或RADIUS进行远程AAA认证 |
设备将用户角色切换使用的用户名和密码发送给HWTACACS/RADIUS服务器进行远程验证 使用该方式时,需要进行以下相关配置: · 在设备上配置HWTACACS/RADIUS方案,并在ISP域中引用已创建的HWTACACS/RADIUS方案,详细介绍请参见“安全配置指导”中的“AAA” · 在HWTACACS/RADIUS服务器上创建相应的用户并配置密码 |
local scheme |
先本地密码认证,后远程AAA认证 |
先进行本地密码认证,若设备上没有设置本地用户角色切换密码,使用VTY用户线登录的用户则转为远程AAA认证,使用AUX用户线登录的用户则可以成功切换用户角色 |
scheme local |
先远程AAA认证,后本地密码认证 |
先进行远程AAA认证,远程HWTACACS/RADIUS服务器无响应或设备上的AAA远程认证配置无效时,转为本地密码认证 |
目前,本地密码认证方式可支持任意用户角色之间的切换认证,但远程认证方式只能支持名称为level-n的用户角色之间的切换认证。
· 当使用HWTACACS方案进行用户角色切换认证时,系统使用用户输入的用户角色切换用户名进行角色切换认证,HWTACACS服务器上也必须存在相应的用户,每一个该类型的用户都能提供切换到低于或等于某最大级别的服务。例如,HWTACACS服务器上存在一个用于角色切换认证的用户,它支持切换到的最高级别用户角色为level-3,即表示用户可以使用该用户的用户名进行level-0、level-1、level-2、level-3之间的用户角色切换。无论用户希望切换到哪一个角色,系统均使用该用户名进行用户角色切换认证(是否携带域名由user-name-format命令决定)。
· 当使用RADIUS方案进行用户角色切换认证时,系统使用“$enabn$”形式的用户名进行用户角色切换认证,其中n为用户希望切换到的用户角色level-n中的n,RADIUS服务器上也必须存在相同形式的用户名。与HWTACACS不同的是,用户进行角色切换时可输入任意用户名,该名称在认证过程中无实际意义。例如,用户希望切换到用户角色level-3,输入任意用户名,系统忽略用户输入的用户名,使用“$enab3$@domain-name”或“$enab3$”形式的用户名进行用户角色切换认证(是否携带域名由user-name-format命令决定)。
· 当用户从用户角色a切换到用户角色b后,若输入quit命令,将退出当前登录的用户线。
表1-12 配置用户角色切换时的认证方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置用户角色切换时的认证方式 |
super authentication-mode { local | scheme } * |
缺省情况下,采用local认证方式 |
配置用户角色切换的密码 |
非FIPS模式下: super password [ role rolename ] [ { hash | simple } password ] FIPS模式下: super password [ role rolename ] |
如果采用local认证方式,则该步骤必选 缺省情况下,没有设置切换用户角色的密码 若不指定用户角色,则配置的是切换到network-admin用户角色的密码 |
缺省情况下,对于登录缺省MDC的用户,用户角色切换的缺省目的角色为network-admin;对于登录非缺省MDC的用户,用户角色切换的缺省目的角色为mdc-admin |
表1-13 切换用户角色
操作 |
命令 |
说明 |
切换用户角色 |
super [ rolename ] |
该命令在用户视图下执行 若不指定用户角色,则切换到当前缺省目的用户角色。缺省的目的用户角色由super default role命令指定 用户最多可以连续进行三次切换认证,如果三次认证都失败则本轮切换失败 若要执行切换用户角色的操作,必须保证当前用户具有执行本命令的权限 |
完成上述配置后,在任意视图下执行display命令可以显示配置后RBAC的运行情况,通过查看显示信息验证配置的效果。
表1-14 RBAC显示和维护
操作 |
命令 |
显示用户角色信息 |
display role [ name role-name ] |
显示特性信息 |
display role feature [ name feature-name | verbose ] |
显示特性组信息 |
display role feature-group [ name feature-group-name ] [ verbose ] |
如图1-1所示,Telnet用户主机与Switch相连,需要实现Switch对Telnet用户进行本地认证并授权用户角色。Telnet用户的登录用户名为user1@bbb,认证通过后被授权的用户角色为role1。
role1具有如下用户权限:
· 允许用户执行所有特性中读类型的命令;
· 允许用户执行创建VLAN以及进入VLAN视图后的相关命令,并只具有操作VLAN 10~VLAN 20的权限。
图1-1 Telnet用户本地认证/授权配置组网图
# 配置VLAN接口2的IP地址,Telnet用户将通过该地址连接Switch。
<Switch> system-view
[Switch] interface vlan-interface 2
[Switch-Vlan-interface2] ip address 192.168.1.70 255.255.255.0
[Switch-Vlan-interface2] quit
# 开启Switch的Telnet服务器功能。
[Switch] telnet server enable
# 配置Telnet用户登录采用AAA认证方式。
[Switch] line vty 0 63
[Switch-line-vty0-63] authentication-mode scheme
[Switch-line-vty0-63] quit
# 配置ISP域bbb的AAA方法为本地认证和本地授权。
[Switch] domain bbb
[Switch-isp-bbb] authentication login local
[Switch-isp-bbb] authorization login local
[Switch-isp-bbb] quit
# 创建用户角色role1。
[Switch] role name role1
# 配置用户角色规则1,允许用户执行所有特性中读类型的命令。
[Switch-role-role1] rule 1 permit read feature
# 配置用户角色规则2,允许用户执行创建VLAN以及进入VLAN视图后的相关命令。
[Switch-role-role1] rule 2 permit command system-view ; vlan *
# 进入VLAN策略视图,允许用户具有操作VLAN 10~VLAN 20的权限。
[Switch-role-role1] vlan policy deny
[Switch-role-role1-vlanpolicy] permit vlan 10 to 20
[Switch-role-role1-vlanpolicy] quit
[Switch-role-role1] quit
# 创建设备管理类本地用户user1。
[Switch] local-user user1 class manage
# 配置用户的密码是明文的aabbcc。
[Switch-luser-manage-user1] password simple aabbcc
# 指定用户的服务类型是Telnet。
[Switch-luser-manage-user1] service-type telnet
# 指定用户user1的授权角色为role1。
[Switch-luser-manage-user1] authorization-attribute user-role role1
# 为保证用户仅使用授权的用户角色role1,删除用户user1具有的缺省用户角色network-operator。
[Switch-luser-manage-user1] undo authorization-attribute user-role network-operator
[Switch-luser-manage-user1] quit
用户向Switch发起Telnet连接,在Telnet客户端按照提示输入用户名user1@bbb及正确的密码后,可成功登录Switch,并被授予用户角色role1,具有相应的命令行执行权限。
可通过如下步骤验证用户的权限:
· 可操作VLAN 10~VLAN 20。(以创建VLAN 10为例)
<Switch> system-view
[Switch] vlan 10
[Switch-vlan10] quit
· 不能操作其它VLAN。(以创建VLAN 30为例)
[Switch] vlan 30
Permission denied.
· 可执行所有特性中读类型的命令。(以display clock为例)
[Switch] display clock
09:31:56 UTC Sat 01/01/2014
[Switch] quit
· 不能执行特性中写类型和执行类型的命令。
<Switch> debugging role all
Permission denied.
<Switch> ping 192.168.1.58
Permission denied.
如图1-2所示,Telnet用户主机与Switch相连,Switch与一台RADIUS服务器相连,需要实现RADIUS服务器对登录Switch的Telnet用户进行认证和授权。
· 由一台FreeRadius服务器(IP地址为10.1.1.1/24)担当认证/授权RADIUS服务器的职责;
· Switch与RADIUS服务器交互报文时使用的共享密钥为expert,认证端口号为1812;
· Switch向RADIUS服务器发送的用户名携带域名;
· Telnet用户登录Switch时使用RADIUS服务器上配置的用户名hello@bbb以及密码进行认证,认证通过后被授权的用户角色为role2。
role2具有如下用户权限:
· 允许用户执行ISP视图下的所有命令;
· 允许用户执行ARP和RADIUS特性中读和写类型的命令;
· 禁止用户执行ACL特性中读类型的命令;
· 允许用户执行创建VLAN以及进入VLAN视图后的相关命令,并只具有操作VLAN 1~VLAN 20的权限;
· 允许用户执行进入接口视图以及接口视图下的相关命令,并具有操作接口FortyGigE1/0/1~FortyGigE1/0/24的权限。
图1-2 Telnet用户RADIUS认证/授权配置组网图
(1) Switch上的配置
# 配置接口VLAN接口2的IP地址,Telnet用户将通过该地址连接Switch。
<Switch> system-view
[Switch] interface vlan-interface 2
[Switch-Vlan-interface2] ip address 192.168.1.70 255.255.255.0
[Switch-Vlan-interface2] quit
# 配置接口VLAN接口3的IP地址,Switch将通过该地址与服务器通信。
[Switch] interface vlan-interface 3
[Switch-Vlan-interface3] ip address 10.1.1.2 255.255.255.0
[Switch-Vlan-interface3] quit
# 开启Switch的Telnet服务器功能。
[Switch] telnet server enable
# 配置Telnet用户登录采用AAA认证方式。
[Switch] line vty 0 63
[Switch-line-vty0-63] authentication-mode scheme
[Switch-line-vty0-63] quit
# 创建RADIUS方案rad。
[Switch] radius scheme rad
# 配置主认证/授权服务器的IP地址为10.1.1.1,认证端口号为1812。
[Switch-radius-rad] primary authentication 10.1.1.1 1812
# 配置与认证/授权服务器交互报文时的共享密钥为明文expert。
[Switch-radius-rad] key authentication simple expert
[Switch-radius-rad] quit
# 配置ISP域bbb的AAA方法。由于RADIUS服务器的授权信息是随认证应答报文发给RADIUS客户端的,所以必须保证认证和授权方法相同。
[Switch] domain bbb
[Switch-isp-bbb] authentication login radius-scheme rad
[Switch-isp-bbb] authorization login radius-scheme rad
[Switch-isp-bbb] quit
# 创建特性组fgroup1。
[Switch] role feature-group name fgroup1
# 配置特性组fgroup1中包含特性ARP和RADIUS。
[Switch-featuregrp-fgroup1] feature arp
[Switch-featuregrp-fgroup1] feature radius
[Switch-featuregrp-fgroup1] quit
# 创建用户角色role2。
[Switch] role name role2
# 配置用户角色规则1,允许用户执行ISP视图下的所有命令。
[Switch-role-role2] rule 1 permit command system-view ; domain *
# 配置用户角色规则2,允许用户执行特性组fgroup1中所有特性的读和写类型的命令。
[Switch-role-role2] rule 2 permit read write feature-group fgroup1
# 配置用户角色规则3,禁止用户执行ACL特性中读类型的命令。
[Switch-role-role2] rule 3 deny read feature acl
# 配置用户角色规则4,允许用户执行创建VLAN以及进入VLAN视图后的相关命令。
[Switch-role-role2] rule 4 permit command system-view ; vlan *
# 配置用户角色规则5,允许用户执行进入接口视图以及接口视图下的相关命令。
[Switch-role-role2] rule 5 permit command system-view ; interface *
# 进入VLAN策略视图,允许用户具有操作VLAN 1~VLAN 20的权限。
[Switch-role-role2] vlan policy deny
[Switch-role-role2-vlanpolicy] permit vlan 1 to 20
[Switch-role-role2-vlanpolicy] quit
# 进入接口策略视图,允许用户具有操作接口FortyGigE1/0/1~FortyGigE1/0/24的权限。
[Switch-role-role2] interface policy deny
[Switch-role-role2-ifpolicy] permit interface fortygige 1/0/1 to fortygige 1/0/24
[Switch-role-role2-ifpolicy] quit
[Switch-role-role2] quit
(2) RADIUS服务器的配置
需要在FreeRadius服务器的字典文件中增加如下配置文本之一:
Cisco-AVPair = "shell:roles=\"role2\""
Cisco-AVPair = "shell:roles*\"role2\""
关于FreeRadius的其它配置请参见服务器的相关手册,本文不进行详细介绍。
用户向Switch发起Telnet连接,在Telnet客户端按照提示输入用户名hello@bbb及正确的密码后,可成功登录Switch,并被授予用户角色role2,具有相应的命令行执行权限。
可通过如下步骤验证用户的权限:
· 可执行ISP视图下所有的命令。
<Switch> system-view
[Switch] domain abc
[Switch-isp-abc] authentication login radius-scheme abc
[Switch-isp-abc] quit
· 可执行RADIUS特性中读和写类型的命令。(ARP特性同,此处不再举例)
[Switch] radius scheme rad
[Switch-radius-rad] primary authentication 2.2.2.2
[Switch-radius-rad] display radius scheme rad
RADIUS方案的显示信息此处略。
· 可操作VLAN 1~VLAN 20。(以创建VLAN 10、VLAN 30为例)
[Switch] vlan 10
[Switch-vlan10] quit
[Switch] vlan 30
Permission denied.
· 可操作接口FortyGigE1/0/1~FortyGigE1/0/24。(以接口FortyGigE1/0/2、FortyGigE1/0/25为例)
[Switch] vlan 10
# 将接口FortyGigE1/0/2加入到VLAN 10。
[Switch-vlan10] port fortygige 1/0/2
# 将接口FortyGigE1/0/25加入到VLAN 10。
[Switch-vlan10] port fortygige 1/0/25
Permission denied.
如图1-3所示,Telnet用户主机与Switch直接相连,Switch与一台HWTACACS服务器相连,需要配置Switch实现对登录Switch的Telnet用户进行用户角色切换认证。具体要求如下:
Telnet用户登录Switch时进行本地认证,登录后被授予用户角色level-0,当该用户切换到level-3用户角色时,首先使用HWTACACS认证,若AAA配置无效或者HWTACACS服务器没有响应则转为local认证。
图1-3 Telnet用户远端HWTACACS用户角色切换认证配置组网图
在交换机上的配置思路如下:
(1) 配置Telnet用户登录采用AAA认证方式(scheme),并且使用AAA中的本地认证。
· 创建ISP域bbb,配置Telnet用户登录时采用的login认证和授权方法为local。
· 创建本地用户,配置Telnet用户登录密码及登录后的用户角色。
(2) Telnet用户进行用户角色切换时,首先使用HWTACACS认证,若AAA配置无效或者HWTACACS服务器没有响应则转为本地认证。
· 配置用户角色切换认证方式为scheme local。
· 配置HWTACACS方案hwtac,指定HWTACACS服务器IP地址及与其进行交互的相关参数(HWTACACS协议报文交互时使用的共享密钥,Switch发送给HWTACACS服务器的用户名不带域名)。在ISP域bbb下配置用户角色切换认证方法为hwtac。
· 配置采用本地认证方式时的用户角色切换密码。
在HWTACACS server上需要添加用于用户角色切换认证的用户名和密码。
(1) 配置Switch
# 配置VLAN接口2的IP地址,Telnet客户端将通过该地址连接Switch。
<Switch> system-view
[Switch] interface vlan-interface 2
[Switch-Vlan-interface2] ip address 192.168.1.70 255.255.255.0
[Switch-Vlan-interface2] quit
# 配置VLAN接口3的IP地址,Switch将通过该地址与服务器通信。
[Switch] interface vlan-interface 3
[Switch-Vlan-interface3] ip address 10.1.1.2 255.255.255.0
[Switch-Vlan-interface3] quit
# 开启Switch的Telnet服务器功能。
[Switch] telnet server enable
# 配置Telnet用户登录采用AAA认证方式。
[Switch] line vty 0 63
[Switch-line-vty0-63] authentication-mode scheme
[Switch-line-vty0-63] quit
# 配置进行用户角色切换时的认证方式为scheme local。(首先使用HWTACACS认证,若AAA配置无效或者HWTACACS服务器没有响应则转为本地认证)
[Switch] super authentication-mode scheme local
# 创建HWTACACS方案hwtac。
[Switch] hwtacacs scheme hwtac
# 配置主认证服务器的IP地址为10.1.1.1,认证端口号为49。
[Switch-hwtacacs-hwtac] primary authentication 10.1.1.1 49
# 配置与认证服务器交互报文时的共享密钥为expert。
[Switch-hwtacacs-hwtac] key authentication simple expert
# 配置向HWTACACS服务器发送的用户名不携带域名。
[Switch-hwtacacs-hwtac] user-name-format without-domain
[Switch-hwtacacs-hwtac] quit
# 创建ISP域bbb。
[Switch] domain bbb
# 配置Telnet用户登录认证方法为本地认证。
[Switch-isp-bbb] authentication login local
# 配置Telnet用户登录授权方法为本地授权。
[Switch-isp-bbb] authorization login local
# 配置用户角色切换认证方法为hwtac。
[Switch-isp-bbb] authentication super hwtacacs-scheme hwtac
[Switch-isp-bbb] quit
# 创建并配置设备管理类本地Telnet用户test。
[Switch] local-user test class manage
[Switch-luser-manage-test] service-type telnet
[Switch-luser-manage-test] password simple aabbcc
# 指定Telnet用户登录系统后被授予的用户角色为level-0。
[Switch-luser-manage-test] authorization-attribute user-role level-0
# 为保证Telnet用户仅使用授权的用户角色level-0,删除用户test具有的缺省用户角色network-operator。
[Switch-luser-manage-test] undo authorization-attribute user-role network-operator
[Switch-luser-manage-test] quit
# 配置用户角色换认证方式为本地认证时,切换到用户角色level-3时使用的密码为654321。
[Switch] super password role level-3 simple 654321
[Switch] quit
(2) 配置HWTACACS server
下面以ACSv4.0为例,说明该例中HWTACACS server的基本配置。
在HWTACACS server上添加用户test,对该用户的高级属性进行设置。
· 设置Enable Password为enabpass;
· 设置Max Privilege为Level 3,表示用户角色在level-0到level-3之间任意切换时均使用密码enabpass进行认证。
图1-4 设置Telnet用户的高级属性
(1) Telnet用户建立与Switch的连接
在Telnet客户端按照提示输入用户名test@bbb及密码aabbcc,即可成功登录Switch,且只能访问指定权限的命令。
<Switch> telnet 192.168.1.70
Trying 192.168.1.70 ...
Press CTRL+K to abort
Connected to 192.168.1.59 ...
******************************************************************************
* Copyright (c) 2004-2017 New H3C Technologies Co., Ltd. All rights reserved.*
* Without the owner's prior written consent, *
* no decompiling or reverse-engineering shall be allowed. *
******************************************************************************
login: test@bbb
Password:
<Switch>?
User view commands:
ping Ping function
quit Exit from current command view
ssh2 Establish a secure shell client connection
super Switch to a user role
system-view Enter the System View
telnet Establish a telnet connection
tracert Tracert function
<Switch>
(2) 切换用户角色
# 在当前的用户线下执行切换到用户角色level-3的命令,按照提示输入HWTACACS用户角色切换认证密码enabpass,若认证成功即可将当前Telnet用户的角色切换到level-3。
<Switch> super level-3
Username: test@bbb
Password: <——此处需输入HWTACACS用户角色切换认证密码
User privilege role is level-3, and only those commands that authorized to the role can be used.
若ACS服务器无响应,按照提示输入本地用户角色切换认证密码654321,若认证成功即可将当前Telnet用户的角色切换到level-3。
<Switch> super level-3
Username: test@bbb
Password: <——此处需输入HWTACACS用户角色切换认证密码
Invalid configuration or no response from the authentication server.
Change authentication mode to local.
Password: <——此处需输入本地用户角色切换认证密码
User privilege role is level-3, and only those commands that authorized to the role can be used.
用户通过本地认证并被授权指定的用户角色后,发现登录设备后实际具有的权限与被授权的用户角色权限不符。
可能是该本地用户被授权了其它用户角色,例如该本地用户还具有缺省的用户角色。
通过display local-user命令查看该用户实际拥有的用户权限,并删除授予用户的多余用户角色。
在AAA配置正确及设备与服务器通信无故障的情况下,使用RADIUS服务器进行远程身份认证的用户登录设备失败。
RBAC要求登录设备的用户必须至少拥有一个用户角色,如果用户没有被服务器授权任何用户角色,则登录失败。
通过执行role default-role enable命令允许用户使用系统预定义的缺省用户角色登录设备,或根据需要在服务器上为该用户添加要授权的用户角色。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!