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 属性を指定しない場合、コマンドは自動的に権限の固有 ID を生成します。 ID を指定する場合は、その値は 15000 より大きな固有の値でなければなりません。 ID 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. から始まる権限は、システム定義の権限であると見なされるため、ユーザーが作成することはできません。 そのため、ユーザーはこれらの権限にどのような階層も追加することはできません。

権限の名前は、ダッシュ (-)、正符号 (+)、アットマーク (@)、あるいはチルド (~) から始めることはできません。また、スペース、タブ、あるいは改行文字を含むこともできません。 権限名として 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 -エフボ vios.device.manage.create.virtualdisk
-ラング vios.device.manage.create.lnagg
-海 vios.device.manage.create.sea
-ブブ vios.device.manage.create.virtualdisk
-ブラン 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 or

vios.system.cluster.pool.modify

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

vios.system.cluster.pool.modify

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

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 パラメーターは、固有の役割名でなければなりません。 ロール名にキーワード ALL または default を使用できません。 すべてのロールには、セキュリティー決定に使用される固有のロール ID がなければなりません。 役割の作成時に id 属性を指定しない場合、mkrole コマンドは自動的に固有 ID をその役割に割り当てます。

命名規則: ロールの標準命名規則はありません。 ただし、作成する役割に、既存の役割名を使用することはできません。
制約事項:

役割のパラメーターには、スペース、タブ、あるいは改行文字を含むことはできません。 不整合を避けるには、役割名を POSIX ポータブル・ファイル名の文字セットにある文字に制限してください。 キーワード ALL または default をロール名に使用することはできません。 役割名のストリングに以下の文字を使用してはいけません。

  • : (コロン)
  • " (引用符)
  • # (番号記号)
  • , (コンマ)
  • = (等号)
  • \ (円記号)
  • / (スラッシュ)
  • ? (疑問符)
  • ' (単一引用符)
  • ` (バッククォート)

特権

特権は、プロセスがシステムの特定の制約事項や制限をバイパスすることを可能にする、プロセスの属性です。 特権はプロセスに関連付けられており、特権コマンドの実行によって獲得されます。 特権は、オペレーティング・システム・カーネルでビット・マスクとして定義され、特権操作全体のアクセス制御を実施します。 例えば、特権ビット PV_KER_TIME は、カーネル操作を制御してシステムの日時を変更します。 約 80 個の特権が オペレーティング・システムに組み込まれており、特権操作全体の精細な制御を提供します。 カーネルでの特権操作の分割によって、操作の実行に必要な最小の特権を獲得できます。 この機能によって、プロセス・ハッカーはシステム内の 1 つまたは 2 つの特権のアクセス権限しか取得できず、root ユーザー権限を取得できないため、セキュリティーが拡張されます。

権限および役割は、特権操作に対するユーザー・アクセス権限を構成するためのユーザー・レベルのツールです。 特権はオペレーティング・システム・カーネルで使用される制限メカニズムで、プロセスがアクションを実行するための権限を持っているかを判別します。 そのため、ユーザーがコマンドを実行する権限を持つ役割セッションに属しており、そのコマンドが実行された場合、特権のセットはプロセスに割り当てられます。 権限および役割を特権に直接マッピングするものはありません。 複数のコマンドへのアクセスは、権限を介して提供されます。 それらの各コマンドは、異なる特権のセットを付与されます。

次の表は、役割ベースのアクセス制御 (RBAC) に関連したコマンドをリストを示しています。

表 2. RBAC コマンドと説明
コマンド 説明
chauth newauth パラメーターによって識別された権限の属性を変更します
chrole role パラメーターによって識別された役割の属性を変更します
lsauth 権限データベースからのユーザー定義およびシステム定義の属性を表示します
lsrole 役割属性を表示します
lssecattr 1 つ以上のコマンド、デバイス、あるいはプロセスのセキュリティー属性をリストします
mkauth 新規のユーザー定義権限を権限データベースに作成します
mkrole 新規の役割を作成します
rmauth auth パラメーターによって識別されたユーザー定義の権限を削除します
rmrole role パラメーターによって識別された役割を役割データベースから削除します
rmsecattr Name パラメーターによって識別されたコマンド、デバイス、あるいはファイル・エントリーのセキュリティー属性を適切なデータベースから削除します
rolelist 呼び出し元に割り当てられた役割について、役割および権限の情報を提供します
setkst セキュリティー・データベースを読み取り、データベースからの情報をカーネル・セキュリティー・テーブルにロードします
setsecattr Name パラメーターによって指定されたコマンド、デバイス、あるいはプロセスのセキュリティー属性を設定します
swrole Role パラメーターによって指定された役割を持つ役割セッションを作成します
tracepriv コマンドの実行時にコマンドが使用を試みる特権を記録します