将基于角色的访问控制与 Virtual I/O Server 配合使用

通过 Virtual I/O Server 版本 2.2和更高版本,系统管理员可以使用基于角色的访问控制 (RBAC) 来定义基于组织中的作业功能的角色。

系统管理员可以使用基于角色的访问控制 (RBAC) 为 Virtual I/O Server中的用户定义角色。 角色将一组许可权和权限授予指定的用户。 因此,用户只能根据给定的访问权来执行特定的系统功能集。 例如,如果系统管理员创建具有访问用户管理命令的权限的角色 UserManagement 并且将此角色分配给用户,那么该用户可以管理系统上的用户,但没有其他访问权。

将基于角色的访问控制与 Virtual I/O Server 配合使用的优点如下所示:

  • 分割系统管理功能
  • 通过只为用户授予必要的访问权提高安全性
  • 一致地实现和强制实施系统管理及访问控制
  • 轻松地管理和审计系统功能

授权

Virtual I/O Server 创建紧密仿真 AIX® 操作系统的授权的授权。 Virtual I/O Server 创建紧密仿真 AIX 操作系统授权的授权。 授权仿真命名约定和描述,但仅适用于特定于 Virtual I/O Server 的需求。 缺省情况下, padmin 用户被授予 Virtual I/O Server上的所有权限,并且可以运行所有命令。 其他类型的用户(使用 mkuser 命令创建)保留其命令执行权限。

mkauth 命令会在权限数据库中创建新的用户定义的权限。 可以在 auth 参数中使用点 (.) 来创建权限层次结构,以创建 ParentAuth.SubParentAuth.SubSubParentAuth... 格式的权限。 auth 参数中的所有父元素都必须存在于权限数据库,然后才能创建权限。 可以用于创建权限的最大父元素数目是 8。

在创建权限时,可以通过 Attribute=Value 参数设置权限属性。 所创建的每个权限都必须具有 id 权限属性的值。 如果未使用 mkauth 命令指定 id 属性,那么该命令会自动生成授权的唯一标识。 如果指定标识,那么该值必须唯一且必须大于 15000。 1 - 15000 范围内的标识保留给系统定义的权限使用。

命名约定:
Virtual I/O Server 中的系统定义的权限以 vios.开头。 因此,用户定义的权限不得以 vios 开头。aix。aix.。 从以 vios 开头的权限开始。aix。aix。 被视为系统定义的权限,用户无法向这些权限添加任何进一步的层次结构。
限制:

AIX 操作系统不同,用户无法为所有 Virtual I/O Server 命令创建权限。 在 AIX 操作系统中,授权用户可以为所有命令创建权限层次结构。 但是,在 Virtual I/O Server中,只能为用户拥有的命令或脚本创建权限。 用户无法创建以 vios 开头的任何授权。 或 aix 。 因为它们被视为系统定义的权限。 因此,用户不能将任何其他层次结构添加至这些权限。

用户无法为所有 Virtual I/O Server 命令创建权限。 在 Virtual I/O Server中,只能为用户拥有的命令或脚本创建权限。 用户无法创建以 vios 开头的任何授权。 因为它们被视为系统定义的权限。 因此,用户不能将任何其他层次结构添加至这些权限。

授权名称不得以短划线 (-) ,加号 (+) , at 符号 (@) 或波浪号 (~) 开头。 它们不得包含空格,制表符或换行符。 不能将关键字 ALLdefault ALLOW_OWNERALLOW_GROUPALLOW_ALL 或星号(*)用作授权名称。 不要在权限字符串中使用以下字符:

  • :(冒号)
  • "(引号)
  • #(编号符号)
  • ,(逗号)
  • =(等号)
  • \(反斜杠)
  • /(正斜杠)
  • 你说什么 (问号)
  • '(单引号)
  • `(重音符)

下表列出了对应于 Virtual I/O Server 命令的权限。 不使用 vios 和后续子权限,例如 vios 和 vios.device。 如果给予用户具有父权限或后续子权限(例如 vios 或 vios.device)的角色,那么该用户将具有对所有后续子权限及其相关命令的访问权。 例如,具有权限 vios.device 的角色,可为用户提供所有 vios.device.config 和 vios.device.manage 权限及其相关命令的访问权。

表 1. 对应于 Virtual I/O Server 命令的权限
命令 命令选项 授权
activatevg 全部 vios.lvm.manage.varyon
alert 全部 vios.system.cluster.alert
alt_root_vg 全部 vios.lvm.change.altrootvg
artexdiff 全部 vios.system.rtexpert.diff
artexget 全部 vios.system.rtexpert.get
artexlist 全部 vios.system.rtexpert.list
artexmerge 全部 vios.system.rtexpert.merge
artexset 全部 vios.system.rtexpert.set
backup 全部 vios.fs.backup
backupios 全部 vios.install.backup
bootlist 全部 vios.install.bootlist
cattracerpt 全部 vios.system.trace.format
cfgassist 全部 vios.security.cfgassist
cfgdev 全部 vios.device.config
cfglnagg 全部 vios.network.config.lnagg
cfgnamesrv 全部 vios.system.dns
cfgsvc 全部 vios.system.config.agent
chauth 全部 vios.security.auth.change
chbdsp 全部 vios.device.manage.backing.change
chdate 全部 vios.system.config.date.change
chdev 全部 vios.device.manage.change
checkfs 全部 vios.fs.check
chedition 全部 vios.system.edition
chkdev 全部 vios.device.manage.check
chlang 全部 vios.system.config.locale
chlv 全部 vios.lvm.manage.change
chpath 全部 vios.device.manage.path.change
chrep 全部 vios.device.manage.repos.change
chrole 全部 vios.security.role.change
chsp 全部 vios.device.manage.spool.change
chtcpip 全部 vios.network.tcpip.change
chuser 全部 vios.security.user.change
chvg 全部 vios.lvm.manage.change
chvlog 全部 vios.device.manage.vlog.change
chvlrepo 全部 vios.device.manage.vlrepo.change
chvopt 全部 vios.device.manage.optical.change
cl_snmp 全部 vios.security.manage.snmp.query
cleandisk 全部 vios.system.cluster.change
cluster 全部 vios.system.cluster.create
cplv 全部 vios.lvm.manage.copy
cpvdi 全部 vios.lvm.manage.copy
deactivatevg 全部 vios.lvm.manage.varyoff
diagmenu 全部 vios.system.diagnostics
dsmc 全部 vios.system.manage.tsm
entstat 全部 vios.network.stat.ent
errlog -rm vios.system.log
其他 vios.system.log.view
exportvg 全部 vios.lvm.manage.export
extendlv 全部 vios.lvm.manage.extend
extendvg 全部 vios.lvm.manage.extend
failgrp -create-modify-remove vios.device.manage.spool.change 或 vios.system.cluster.pool.modify
fcstat 全部 vios.network.stat.fc
fsck 全部 vios.fs.check
hostmap 全部 vios.system.config.address
hostname 全部 vios.system.config.hostname
importvg 全部 vios.lvm.manage.import
invscout 全部 vios.system.firmware.scout
ioslevel 全部 vios.system.level
ldapadd 全部 vios.security.manage.ldap.add
ldapsearch 全部 vios.security.manage.ldap.search
ldfware 全部 vios.system.firmware.load
license -接受 vios.system.license
其他 vios.system.license.view
loadopt 全部 vios.device.manage.optical.load
loginmsg 全部 vios.security.user.login.msg
lsauth 全部 vios.security.auth.list
lsdev 全部 vios.device.manage.list
lsfailedlogin 全部 vios.security.user.login.fail
lsfware 全部 vios.system.firmware.list
lsgcl 全部 vios.security.log.list
lslparinfo 全部 vios.system.lpar.list
lslv 全部 vios.lvm.manage.list
lsmap 全部 vios.device.manage.map.phyvirt
lsnetsvc 全部 vios.network.service.list
lsnports 全部 vios.device.manage.list
lspath 全部 vios.device.manage.list
lspv 全部 vios.device.manage.list
lsrep 全部 vios.device.manage.repos.list
lsrole 全部 vios.security.role.list
lssecattr -c vios.security.cmd.list
-d vios.security.device.list
-f vios.security.file.list
-p vios.security.proc.list
lssp 全部 vios.device.manage.spool.list
lssvc 全部 vios.system.config.agent.list
lssw 全部 vios.system.software.list
lstcpip 全部 vios.network.tcpip.list
lsuser 全部 vios.security.user.list
注: 任何用户都可以运行此命令以查看最少的用户属性集。 但是,只有具有此权限的用户才能查看所有用户属性。
lsvg 全部 vios.lvm.manage.list
lsvlog 全部 vios.device.manage.vlog.list
lsvlrepo 全部 vios.device.manage.vlrepo.list
lsvopt 全部 vios.device.manage.optical.list
lu -创建 vios.device.manage.backing.create 或 vios.system.cluster.lu.create
-地图 vios.device.manage.backing.create 或 vios.system.cluster.lu.create 或 vios.system.cluster.lu.map
-remove vios.device.manage.backing.remove 或 vios.system.cluster.lu.remove
-解 vios.device.manage.remove 或 vios.system.cluster.lu.unmap
migratepv 全部 vios.device.manage.migrate
mirrorios 全部 vios.lvm.manage.mirrorios.create
mkauth 全部 vios.security.auth.create
mkbdsp 全部 vios.device.manage.backing.create
mkkrb5clnt 全部 vios.security.manage.kerberos.create
mkldap 全部 vios.security.manage.ldap.create
mklv 全部 vios.lvm.manage.create
mklvcopy 全部 vios.lvm.manage.mirror.create
mkpath 全部 vios.device.manage.path.create
mkrep 全部 vios.device.manage.repos.create
mkrole 全部 vios.security.role.create
mksp 全部 vios.device.manage.spool.create
mktcpip 全部 vios.network.tcpip.config
mkuser 全部 vios.security.user.create
mkvdev -fbo vios.device.manage.create.virtualdisk
-lnagg vios.device.manage.create.lnagg
-海运 vios.device.manage.create.sea
-vdev vios.device.manage.create.virtualdisk
-vlan vios.device.manage.create.vlan
mkvg 全部 vios.lvm.manage.create
mkvlog 全部 vios.device.manage.vlog.create
mkvopt 全部 vios.device.manage.optical.create
motd 全部 vios.security.user.msg
mount 全部 vios.fs.mount
netstat 全部 vios.network.tcpip.list
optimizenet 全部 vios.network.config.tune
oem_platform_level 全部 vios.system.level
oem_setup_env 全部 vios.oemsetupenv
passwd 全部 vios.security.passwd
注: 用户可以在没有此权限的情况下更改密码。 仅当用户要更改其他用户的密码时,才需要此权限。
pdump 全部 vios.system.dump.platform
ping 全部 vios.network.ping
postprocesssvc 全部 vios.system.config.agent
prepdev 全部 vios.device.config.prepare
pv -add-remove-replace vios.device.manage.spool.change 或 vios.system.cluster.pool.modify
redefvg 全部 vios.lvm.manage.reorg
reducevg 全部 vios.lvm.manage.change
refreshvlan 全部 vios.network.config.refvlan
remote_management 全部 vios.system.manage.remote
replphyvol 全部 vios.device.manage.replace
restore 全部 vios.fs.backup
restorevgstruct 全部 vios.lvm.manage.restore
rmauth 全部 vios.security.auth.remove
rmbdsp 全部 vios.device.manage.backing.remove
rmdev 全部 vios.device.manage.remove
rmlv 全部 vios.lvm.manage.remove
rmlvcopy 全部 vios.lvm.manage.mirror.remove
rmpath 全部 vios.device.manage.path.remove
rmrep 全部 vios.device.manage.repos.remove
rmrole 全部 vios.security.role.remove
rmsecattr -c vios.security.cmd.remove
-d vios.security.device.remove
-f vios.security.file.remove
rmsp 全部 vios.device.manage.spool.remove
rmtcpip 全部 vios.network.tcpip.remove
rmuser 全部 vios.security.user.remove
rmvdev 全部 vios.device.manage.remove
rmvlog 全部 vios.device.manage.vlog.remove
rmvopt 全部 vios.device.manage.optical.remove
rolelist -p vios.security.proc.role.list
注: 您可以在没有任何权限的情况下运行此命令的其他选项。
-U vios.security.role.list
savevgstruct 全部 vios.lvm.manage.save
save_base 全部 vios.device.manage.saveinfo
seastat 全部 vios.network.stat.sea
setkst 全部 vios.security.kst.set
setsecattr -c vios.security.cmd.set
-d vios.security.device.set
-f vios.security.file.set
-O vios.security.domain.set
-p vios.security.proc.set
showmount 全部 vios.fs.mount.show
shutdown 全部 vios.system.boot.shutdown
snap 全部 vios.system.trace.format
snapshot 全部 vios.device.manage.backing.create
snmp_info 全部 vios.security.manage.snmp.info
snmpv3_ssw 全部 vios.security.manage.snmp.switch
snmp_trap 全部 vios.security.manage.snmp.trap
startnetsvc 全部 vios.network.service.start
startsvc 全部 vios.system.config.agent.start
startsysdump 全部 vios.system.dump
starttrace 全部 vios.system.trace.start
stopnetsvc 全部 vios.network.service.stop
stopsvc 全部 vios.system.config.agent.stop
stoptrace 全部 vios.system.trace.stop
svmon 全部 vios.system.stat.memory
syncvg 全部 vios.lvm.manage.sync
sysstat 全部 vios.system.stat.list
rmsecattr -c vios.security.cmd.remove
-d vios.security.device.remove
-f vios.security.file.remove
tier -创建 vios.device.manage.spool.change 或

vios.system.cluster.pool.modify

-remove vios.device.manage.spool.change 或

vios.system.cluster.pool.modify

-modify vios.device.manage.spool.change 或

vios.system.cluster.pool.modify

topas 全部 vios.system.config.topas
topasrec 全部 vios.system.config.topasrec
tracepriv 全部 vios.security.priv.trace
traceroute 全部 vios.network.route.trace
uname 全部 vios.system.uname
unloadopt 全部 vios.device.manage.optical.unload
unmirrorios 全部 vios.lvm.manage.mirrorios.remove
unmount 全部 vios.fs.unmount
updateios 全部 vios.install
vasistat 全部 vios.network.stat.vasi
vfcmap 全部 vios.device.manage.map.virt
viosbr -观点 vios.system.backup.cfg.view
其他 vios.system.backup.cfg
注: 要运行此命令的任何其他选项,需要此授权。
viosecure 全部 vios.security.manage.firewall
viostat 全部 vios.system.stat.io
vmstat 全部 vios.system.stat.memory
wkldagent 全部 vios.system.manage.workload.agent
wkldmgr 全部 vios.system.manage.workload.manager
wkldout 全部 vios.system.manage.workload.process

角色

Virtual I/O Server 保留其当前角色,并将相应的权限分配给这些角色。 可以创建在 AIX 操作系统中紧密仿真角色的其他角色。 可以创建在 AIX 操作系统中紧密仿真角色的其他角色。 角色模拟命名约定和描述,但仅适用于特定于 Virtual I/O Server 的需求。 用户无法查看,使用或修改任何缺省角色AIX 操作系统中AIX 操作系统中

以下角色是缺省角色AIX 操作系统中AIX 操作系统中。 这些角色对 Virtual I/O Server 用户不可用,并且不会显示。

  • AccountAdmin
  • BackupRestore
  • DomainAdmin
  • FSAdmin
  • SecPolicy
  • SysBoot
  • SysConfig
  • isso
  • sa
  • so

以下角色是 Virtual I/O Server中的缺省角色:

  • 管理员
  • DEUser
  • PAdmin
  • RunDiagnostics
  • SRUser
  • SYSAdm
  • ViewOnly

mkrole 命令会创建角色。 newrole 参数必须是唯一的角色名称。 不能使用 ALLdefault 关键字作为角色名称。 每个角色都必须具有唯一的角色标识,用于安全决策。 如果创建角色时未指定 id 属性,那么 mkrole 命令会自动将唯一标识分配给角色。

命名约定: 没有针对角色的标准命名约定。 但是,不能将角色的现有名称用于创建角色。
限制:

角色参数不能包含空格、制表符或换行符。 为了防止不一致,请将角色名称限制为 POSIX 可移植文件名字符集中的字符。 不能使用 ALLdefault 关键字作为角色名称。 不要在角色字符串中使用以下字符:

  • :(冒号)
  • "(引号)
  • #(编号符号)
  • ,(逗号)
  • =(等号)
  • \(反斜杠)
  • /(正斜杠)
  • 你说什么 (问号)
  • '(单引号)
  • `(重音符)

特权

特权是进程的属性,进程可通过它来避免系统的特定限制和局限性。 特权与进程相关联,并且通过运行特许命令获取。 特权在操作系统内核中定义为位掩码,并通过特许的操作强制实施访问控制。 例如,特权位 PV_KER_TIME 可控制内核操作以修改系统日期和时间。 操作系统随附约 80 个特权,它们提供对特许操作的粒度控制。 可以通过内核中特许操作的划分来获取执行操作所需的最低特权。 此功能可增强安全性,因为进程黑客只能获得系统中一两个特权的访问权,不能获得 root 用户特权。

权限和角色是用户级工具,用于配置特许操作的用户访问权。 特权是在操作系统内核中使用的限制机制,用于确定进程是否具有执行操作的权限。 因此,如果用户处于具有运行命令的权限的角色会话中,并且运行该命令,那么会为进程指派一组特权。 权限和角色与特权之间没有直接的映射。 可通过权限提供对若干命令的访问权。 可为这些命令中的每个命令授予一组不同的特权。

下表列示了与基于角色的访问控制 (RBAC) 相关的命令。

表 2。 RBAC 命令及其描述
命令 描述
chauth 修改由 newauth 参数标识的权限的属性
chrole 更改由 role 参数标识的角色的属性
lsauth 显示权限数据库中用户定义的权限和系统定义的权限的属性
lsrole 显示角色属性
lssecattr 列示一个或多个命令、设备或进程的安全性属性
mkauth 在权限数据库中创建新的用户定义的权限
mkrole 创建新角色
rmauth 除去由 auth 参数标识的用户定义的权限
rmrole 从角色数据库中除去由 role 参数标识的角色
rmsecattr 从相应数据库中除去由 Name 参数标识的命令、设备或文件条目的安全性属性
rolelist 为调用者提供关于指定给他们的角色的角色和权限信息
setkst 读取安全性数据库并将信息从数据库装入到内核安全性表中
setsecattr 设置由 Name 参数指定的命令、设备或进程的安全性属性
swrole 使用由 Role 参数指定的角色创建角色会话
tracepriv 记录运行命令时命令尝试使用的特权