[Solaris] Giving a Zone "More Power"

Solaris zoneが提供する従来の仮想化のメリットに加えて、ゾーンで実行中のアプリケーションは、よりセキュアな環境で動作しています。
これを定量化する一つの方法として、ローカルゾーンのものとグローバルゾーンで使用可能な特権を比較します。

例えば、グローバルゾーンで使用可能な特権は82個です:
bleonard@solaris:~$ ppriv -l | wc -l
82
それぞれの特権の内容を知ることができます。
bleonard@solaris:~$ ppriv -lv
contract_event
    Allows a process to request critical events without limitation.
    Allows a process to request reliable delivery of all events on
    any event queue.
contract_identity
    Allows a process to set the service FMRI value of a process
    contract template.
...
複数の権限の内容を確認することもできます。
bleonard@solaris:~$ ppriv -lv file_dac_read file_dac_write
file_dac_read
    Allows a process to read a file or directory whose permission
    bits or ACL do not allow the process read permission.
file_dac_write
    Allows a process to write a file or directory whose permission
    bits or ACL do not allow the process write permission.
    In order to write files owned by uid 0 in the absence of an
    effective uid of 0 ALL privileges are required.
非グローバルゾーンでは、83個の特権のうち、デフォルトでは43個の特権があります。
root@myzone:~# ppriv -l zone | wc -l
43
剥奪されている特権は以下の通りです。
cpc_cpu
dtrace_kernel
dtrace_proc
dtrace_user
file_downgrade_sl
file_flag_set
file_upgrade_sl
graphics_access
graphics_map
net_mac_implicit
proc_clock_highres
proc_priocntl
proc_zone
sys_config
sys_devices
sys_ipc_config
sys_linkdir
sys_dl_config
sys_net_config
sys_res_bind
sys_res_config
sys_smb
sys_suser_compat
sys_time
sys_trans_label
virt_manage
win_colormap
win_config
win_dac_read
win_dac_write
win_devices
win_dga
win_downgrade_sl
win_fontpath
win_mac_read
win_mac_write
win_selection
win_upgrade_sl
xvm_control
Tim Taylorのように、ゾーンに特権を追加することもできます。例えば、ゾーンには通常DTraceを実行する権限がありません。
root@myzone:~# dtrace -l
   ID   PROVIDER            MODULE                          FUNCTION NAME
以下のようにして、DTraceの権限を追加することができます。
bleonard@solaris:~$ sudo zonecfg -z myzone
Password:
zonecfg:myzone> set limitpriv="default,dtrace_proc,dtrace_user"
zonecfg:myzone> verify
zonecfg:myzone> exit
bleonard@solaris:~$ sudo zoneadm -z myzone reboot
これでゾーン内でDTraceを実行することができます。
root@myzone:~# dtrace -l | more
   ID   PROVIDER            MODULE                          FUNCTION NAME
    1     dtrace                                                     BEGIN
    2     dtrace                                                     END
    3     dtrace                                                     ERROR
 7115    syscall                                               nosys entry
 7116    syscall                                               nosys return
...
なお、一部の特権はゾーンに付与することができません。付与できない特権を付与している場合、ブート時に以下のようなメッセージが出ます。
bleonard@solaris:~$ sudo zoneadm -z myzone reboot
privilege "dtrace_kernel" is not permitted within the zone's privilege set
zoneadm: zone myzone failed to verify
すべての権限とゾーンのステータス(デフォルト、オプション、禁止)をまとめたリストはこちらです。

System Administration Guide: Virtualization Using the Solaris Operating System
Privileges in a Non-Global Zone
http://download.oracle.com/docs/cd/E19082-01/819-2450/z.admin.ov-18/index.html


原文はこちら。
http://blogs.oracle.com/observatory/entry/what_a_zone_is_never

0 件のコメント:

コメントを投稿