ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Trusted Extensions 管理者の手順 Oracle Solaris 10 1/13 Information Library (日本語) |
3. Trusted Extensions 管理者として開始 (タスク)
4. Trusted Extensions システムのセキュリティー要件 (概要)
5. Trusted Extensions でのセキュリティー要件の管理 (タスク)
6. Trusted Extensions でのユーザー、権利、および役割 (概要)
7. Trusted Extensions でのユーザー、権利、役割の管理 (タスク)
8. Trusted Extensions でのリモート管理 (タスク)
9. Trusted Extensions と LDAP (概要)
10. Trusted Extensions でのゾーンの管理 (タスク)
Trusted Extensions のゾーンと IP アドレス
Trusted Extensions でのゾーン管理ユーティリティー
11. Trusted Extensions でのファイルの管理とマウント (タスク)
13. Trusted Extensions でのネットワークの管理 (タスク)
14. Trusted Extensions でのマルチレベルメール (概要)
16. Trusted Extensions のデバイス (概要)
17. Trusted Extensions でのデバイス管理 (タスク)
18. Trusted Extensions での監査 (概要)
19. Trusted Extensions のソフトウェア管理 (タスク)
次のタスクマップでは、Trusted Extensions に固有のゾーン管理タスクについて説明します。このマップでは、Oracle Solaris システムの場合と同様に、Trusted Extensions で実行される一般的な手順も示します。
|
この手順では、現在のゾーンと、現在のゾーンのほうが優位であるすべてのゾーンのラベルを表示するシェルスクリプトを作成します。
始める前に
大域ゾーンで、システム管理者役割になっている必要があります。
詳細は、「Trusted Extensions の管理ファイルを編集する」を参照してください。
/usr/local/scripts/getzonelabels など、スクリプトへのパス名を入力します。
#!/bin/sh # echo "NAME\t\tSTATUS\t\tLABEL" echo "====\t\t======\t\t=====" myzone=`zonename` for i in `/usr/sbin/zoneadm list -p` ; do zone=`echo $i | cut -d ":" -f2` status=`echo $i | cut -d ":" -f3` path=`echo $i | cut -d ":" -f4` if [ $zone != global ]; then if [ $myzone = global ]; then path=$path/root/tmp else path=$path/export/home fi fi label=`/usr/bin/getlabel -s $path |cut -d ":" -f2-9` if [ `echo $zone|wc -m` -lt 8 ]; then echo "$zone\t\t$status\t$label" else echo "$zone\t$status\t$label" fi done
# getzonelabels NAME STATUS LABEL ==== ====== ===== global running ADMIN_HIGH needtoknow running CONFIDENTIAL : NEED TO KNOW restricted ready CONFIDENTIAL : RESTRICTED internal running CONFIDENTIAL : INTERNAL public running PUBLIC
大域ゾーンからこのスクリプトを実行すると、作成済みまたは実行中のすべてのゾーンのラベルが表示されます。デフォルトの label_encodings ファイルから作成されたゾーンの大域ゾーン出力は、次のとおりです。
例 10-1 作成済みまたは実行中のゾーンすべてのラベルの表示
次の例では、internal ゾーンでユーザーが getzonelabels スクリプトを実行します。
# getzonelabels NAME STATUS LABEL ==== ====== ===== internal running CONFIDENTIAL : INTERNAL public running PUBLIC
この手順では、現在のゾーンでマウントされたファイルシステムを表示するシェルスクリプトを作成します。大域ゾーンからこのスクリプトを実行すると、各ゾーンでマウントされたすべてのファイルシステムのラベルが表示されます。
始める前に
大域ゾーンで、システム管理者役割になっている必要があります。
詳細は、「Trusted Extensions の管理ファイルを編集する」を参照してください。
/usr/local/scripts/getmounts など、スクリプトへのパス名を入力します。
#!/bin/sh # for i in `/usr/sbin/mount -p | cut -d " " -f3` ; do /usr/bin/getlabel $i done
# /usr/local/scripts/getmounts /: ADMIN_LOW /dev: ADMIN_LOW /kernel: ADMIN_LOW /lib: ADMIN_LOW /opt: ADMIN_LOW /platform: ADMIN_LOW /sbin: ADMIN_LOW /usr: ADMIN_LOW /var/tsol/doors: ADMIN_LOW /zone/needtoknow/export/home: CONFIDENTIAL : NEED TO KNOW /zone/internal/export/home: CONFIDENTIAL : INTERNAL USE ONLY /zone/restricted/export/home: CONFIDENTIAL : RESTRICTED /proc: ADMIN_LOW /system/contract: ADMIN_LOW /etc/svc/volatile: ADMIN_LOW /etc/mnttab: ADMIN_LOW /dev/fd: ADMIN_LOW /tmp: ADMIN_LOW /var/run: ADMIN_LOW /zone/public/export/home: PUBLIC /root: ADMIN_LOW
例 10-2 restricted ゾーンでのファイルシステムのラベルの表示
一般ユーザーがラベル付きゾーンから getmounts スクリプトを実行すると、そのゾーンでマウントされたすべてのファイルシステムのラベルが表示されます。デフォルトの label_encodings ファイル内の各ラベルに対してゾーンが作成されたシステムでは、restricted ゾーンの出力は次のとおりです。
# /usr/local/scripts/getmounts /: CONFIDENTIAL : RESTRICTED /dev: CONFIDENTIAL : RESTRICTED /kernel: ADMIN_LOW /lib: ADMIN_LOW /opt: ADMIN_LOW /platform: ADMIN_LOW /sbin: ADMIN_LOW /usr: ADMIN_LOW /var/tsol/doors: ADMIN_LOW /zone/needtoknow/export/home: CONFIDENTIAL : NEED TO KNOW /zone/internal/export/home: CONFIDENTIAL : INTERNAL USE ONLY /proc: CONFIDENTIAL : RESTRICTED /system/contract: CONFIDENTIAL : RESTRICTED /etc/svc/volatile: CONFIDENTIAL : RESTRICTED /etc/mnttab: CONFIDENTIAL : RESTRICTED /dev/fd: CONFIDENTIAL : RESTRICTED /tmp: CONFIDENTIAL : RESTRICTED /var/run: CONFIDENTIAL : RESTRICTED /zone/public/export/home: PUBLIC /home/gfaden: CONFIDENTIAL : RESTRICTED
この手順では、指定されたラベル付きゾーンのユーザーが、デフォルトでは大域ゾーンからエクスポートされないファイルを表示できるようにします。
始める前に
大域ゾーンで、システム管理者役割になっている必要があります。
# zoneadm -z zone-name halt
たとえば、一般ユーザーが /etc ディレクトリにあるファイルを表示できるようにします。
# zonecfg -z zone-name add filesystem set special=/etc/filename set directory=/etc/filename set type=lofs add options [ro,nodevices,nosetuid] end exit
注 - 特定のファイルはループバックマウントしても影響しないようにシステムで使用されません。たとえば、ラベル付きゾーンの /etc/dfs/dfstab ファイルは Trusted Extensions ソフトウェアでは検査されません。詳細は、「ラベル付きゾーンのファイルの共有」を参照してください。
# zoneadm -z zone-name boot
例 10-3 /etc/passwd ファイルのループバックマウント
この例でセキュリティー管理者は、テスターおよびプログラマのローカルパスワードが設定されていることをそのテスターやプログラマ自身が確認できるようにします。sandbox ゾーンが停止されたあと、passwd ファイルをループバックマウントするように構成されます。次に、ゾーンが再起動されます。
# zoneadm -z sandbox halt # zonecfg -z sandbox add filesystem set special=/etc/passwd set directory=/etc/passwd set type=lofs add options [ro,nodevices,nosetuid] end exit # zoneadm -z sandbox boot
デフォルトでは、ユーザーは下位レベルのファイルを表示できます。特定ゾーンから下位レベルのすべてのファイルを表示することを禁止するには、net_mac_aware 特権を削除します。net_mac_aware 特権については、privileges(5) のマニュアルページを参照してください。
始める前に
大域ゾーンで、システム管理者役割になっている必要があります。
# zoneadm -z zone-name halt
ゾーンから net_mac_aware 特権を削除します。
# zonecfg -z zone-name set limitpriv=default,!net_mac_aware exit
# zoneadm -z zone-name boot
例 10-4 ユーザーによる下位ファイルの表示を禁止する
この例でセキュリティー管理者は、このシステム上のユーザーが混乱しないように構成しようとします。そのため、ユーザーは自身が作業中のラベルでしかファイルを表示できなくなります。セキュリティー管理者は、下位レベルのすべてのファイルの表示を禁止します。このシステムで、ユーザーは PUBLIC ラベルで作業しないかぎり、共通で利用可能なファイルを表示することができません。また、ユーザーはゾーンのラベルでファイルを NFS マウントできるだけです。
# zoneadm -z restricted halt # zonecfg -z restricted set limitpriv=default,!net_mac_aware exit # zoneadm -z restricted boot
# zoneadm -z needtoknow halt # zonecfg -z needtoknow set limitpriv=default,!net_mac_aware exit # zoneadm -z needtoknow boot
# zoneadm -z internal halt # zonecfg -z internal set limitpriv=default,!net_mac_aware exit # zoneadm -z internal boot
PUBLIC は最小のラベルなので、セキュリティー管理者は PUBLIC ゾーンに対するコマンドは実行しません。
この手順では、ZFS データセットを読み取り/書き込み権でラベル付きゾーンにマウントします。すべてのコマンドが大域ゾーンで実行されるため、大域ゾーン管理者がラベル付きゾーンへの ZFS データセットの追加を制御します。
データセットを共有するには、最低でもラベル付きゾーンが ready 状態である必要があります。ラベル付きゾーンが running 状態であっても構いません。
始める前に
データセットを持つゾーンを構成するには、最初にそのゾーンを停止します。
# zfs create datasetdir/subdir
データセットの名前には、zone/data などのディレクトリを含めることができます。
# zoneadm -z labeled-zone-name halt
# zfs set mountpoint=legacy datasetdir/subdir
ZFS mountpoint プロパティーで、マウントポイントがラベル付きゾーンに対応付けられたときのマウントポイントのラベルを設定します。
# zonecfg -z labeled-zone-name # zonecfg:labeled-zone-name> add fs # zonecfg:labeled-zone-name:dataset> set dir=/subdir # zonecfg:labeled-zone-name:dataset> set special=datasetdir/subdir # zonecfg:labeled-zone-name:dataset> set type=zfs # zonecfg:labeled-zone-name:dataset> end # zonecfg:labeled-zone-name> exit
データセットをファイルシステムとして追加することにより、dfstab ファイルが解釈される前に、データセットがゾーンの /data にマウントされます。この手順により、ゾーンがブートする前にデータセットがマウントされないようになります。具体的に言うと、ゾーンがブートし、データセットがマウントされてから、dfstab ファイルが解釈されます。
データセットファイルシステムのエントリを /zone/labeled-zone-name/etc/dfs/dfstab ファイルに追加します。このエントリには、/subdir パス名も使用されます。
share -F nfs -d "dataset-comment" /subdir
# zoneadm -z labeled-zone-name boot
ゾーンがブートすると、データセットが、labeled-zone-name ゾーンのラベルを持つ labeled-zone-name ゾーンの読み取り/書き込みマウントポイントとして自動的にマウントされます。
例 10-5 ラベル付きゾーンの ZFS データセットを共有してマウントする
この例では、管理者は ZFS データセットを needtoknow ゾーンに追加し、そのデータセットを共有します。データセット zone/data は現在、/mnt マウントポイントに割り当てられています。restricted ゾーンのユーザーはそのデータセットを表示できます。
最初に、管理者はゾーンを停止します。
# zoneadm -z needtoknow halt
データセットは現在別のマウントポイントに割り当てられているため、管理者は以前の割り当てを削除してから、新しいマウントポイントを設定します。
# zfs set zoned=off zone/data # zfs set mountpoint=legacy zone/data
次に、zonecfg 対話型インタフェースで、管理者はデータセットを needtoknow ゾーンに明示的に追加します。
# zonecfg -z needtoknow # zonecfg:needtoknow> add fs # zonecfg:needtoknow:dataset> set dir=/data # zonecfg:needtoknow:dataset> set special=zone/data # zonecfg:needtoknow:dataset> set type=zfs # zonecfg:needtoknow:dataset> end # zonecfg:needtoknow> exit
さらに、管理者はそのデータセットを共有するように /zone/needtoknow/etc/dfs/dfstab ファイルを変更してから、needtoknow ゾーンをブートします。
## Global zone dfstab file for needtoknow zone share -F nfs -d "App Data on ZFS" /data
# zoneadm -z needtoknow boot
これで、データセットはアクセス可能になります。
restricted ゾーンのユーザーは、needtoknow ゾーンを独占しており、/data ディレクトリに変更することでマウントされたデータセットを表示できます。ユーザーは、大域ゾーンを基準にして、マウントされたデータセットへのフルパスを使用します。この例では、machine1 はラベル付きゾーンを含むシステムのホスト名です。管理者は、このホスト名を共有していない IP アドレスに割り当てています。
# cd /net/machine1/zone/needtoknow/root/data
注意事項
上位ラベルからデータセットにアクセスしようとして、エラー not found または No such file or directory が返された場合、管理者は svcadm restart autofs コマンドを実行して、オートマウンタサービスを再起動する必要があります。
ユーザーがファイルに再ラベル付けできるようにする場合、この手順が前提条件となります。
始める前に
大域ゾーンでセキュリティー管理者役割になります。
# zoneadm -z zone-name halt
ゾーンに適切な特権を追加します。ウィンドウ特権により、ユーザーはドラッグ&ドロップ操作と、カット&ペースト操作を使うことができます。
# zonecfg -z zone-name set limitpriv=default,win_dac_read,win_mac_read,win_dac_write, win_mac_write,win_selection,file_downgrade_sl exit
# zonecfg -z zone-name set limitpriv=default,win_dac_read,win_mac_read,win_dac_write, win_mac_write,win_selection,sys_trans_label,file_upgrade_sl exit
# zonecfg -z zone-name set limitpriv=default,win_dac_read,win_mac_read,win_dac_write, win_mac_write,win_selection,sys_trans_label,file_downgrade_sl, file_upgrade_sl exit
# zoneadm -z zone-name boot
再ラベル付けを許可するユーザーおよびプロセスの要件については、setflabel(3TSOL) のマニュアルページを参照してください。ユーザーによるファイルの再ラベル付けを承認する方法については、「ユーザーによるデータのセキュリティーレベルの変更を有効にする」を参照してください。
例 10-6 internal ゾーンからのアップグレードを可能にする
この例でセキュリティー管理者は、このシステム上の承認ユーザーがファイルをアップグレードできるようにします。ユーザーによる情報のアップグレードを可能にすることで、管理者はさらに高いセキュリティーレベルでユーザーが情報を保護できるようにします。大域ゾーンで、管理者は次のゾーン管理コマンドを実行します。
# zoneadm -z internal halt # zonecfg -z internal set limitpriv=default,sys_trans_label,file_upgrade_sl exit # zoneadm -z internal boot
これで、承認ユーザーは internal 情報を internal ゾーンから restricted にアップグレードできます。
例 10-7 restricted ゾーンからのダウングレードを可能にする
この例でセキュリティー管理者は、このシステム上の承認ユーザーがファイルをダウングレードできるようにします。管理者がゾーンにウィンドウ特権を追加しないため、承認ユーザーはファイルマネージャーを使用してファイルに再ラベル付けはできません。ファイルを再ラベル付けする場合、ユーザーは setlabel コマンドを使用します。
ユーザーによる情報のダウングレードを可能にすることにより、管理者はセキュリティーの下位のユーザーがファイルにアクセスできるようにします。大域ゾーンで、管理者は次のゾーン管理コマンドを実行します。
# zoneadm -z restricted halt # zonecfg -z restricted set limitpriv=default,file_downgrade_sl exit # zoneadm -z restricted boot
これで、承認ユーザーは setlabel コマンドを使用して、restricted 情報を restricted ゾーンから internal または public にダウングレードできます。
この手順は、udp で NFSv3 の下位読み取りマウントを有効にする場合に使用されます。MLP の追加には Solaris 管理コンソールを使用します。
始める前に
大域ゾーンでセキュリティー管理者役割になります。
詳細は、「Solaris 管理コンソールでローカルシステムを管理する」を参照してください。
ツールボックスのタイトルには、Scope=Files, Policy=TSOL が含まれています。
# tnctl -fz /etc/security/tsol/tnzonecfg
この手順は、ラベル付きゾーンで実行されるアプリケーションがマルチレベルポート (MLP) とゾーンとの通信を必要としている場合に使用されます。この手順では、Web プロキシがゾーンと通信します。MLP の追加には Solaris 管理コンソールを使用します。
始める前に
大域ゾーンでセキュリティー管理者役割になります。ラベル付きゾーンが存在する必要があります。詳細は、『Trusted Extensions Configuration Guide』の「Creating Labeled Zones」を参照してください。
詳細は、「Solaris 管理コンソールでローカルシステムを管理する」を参照してください。
ツールボックスのタイトルには、Scope=Files, Policy=TSOL が含まれています。
「アクション」メニューをクリックし、「テンプレートの追加」を選択します。
# zoneadm -z zone-name boot
たとえば、ゾーンに共有 IP アドレスがある場合は、次のようにします。
# route add proxy labeled-zones-IP-address # route add webservice labeled-zones-IP-address