この章では、Solaris Trusted Extensions が設定されたシステムで非大域ゾーンがどのように動作するかについて説明します。Trusted Extensions のゾーンに特有の手順についても記載します。
適切に構成された Trusted Extensions システムは、オペレーティングシステムのインスタンスである大域ゾーンと、1 つ以上のラベル付きの非大域ゾーンで構成されます。構成中に Trusted Extensions は各ゾーンに一意のラベルを添付し、それによってラベル付きゾーンが作成されます。ラベルは、label_encodings ファイルから取得されます。管理者はすべてのラベルにゾーンを作成できますが、必須ではありません。システム上で、ラベル付きゾーンの数より多くのラベルを持つことができます。ラベルの数より多くのラベル付きゾーンを持つことはできません。
Trusted Extensions システムで、ゾーンのファイルシステムは通常、ループバックファイルシステム (lofs) としてマウントされます。ラベル付きゾーンの書き込み可能なファイルおよびディレクトリには、ゾーンと同じラベルが付いています。デフォルトでは、ユーザーは自身の現在のラベルより下位のラベルのゾーンにあるファイルを表示できます。この構成によって、ユーザーは現在のワークスペースのラベルより下位のラベルのホームディレクトリを表示することができます。ユーザーは下位のラベルのファイルを表示できますが、それらを変更することはできません。ユーザーは、ファイルと同じラベルのプロセスからしかファイルを変更できません。
Trusted Extensions では、大域ゾーンが管理ゾーンです。ラベル付きゾーンは一般ユーザー用です。ユーザーは、自身の認可範囲内にあるラベルのゾーンで作業することができます。
各ゾーンには、関連付けられた IP アドレスとセキュリティー属性があります。ゾーンは、マルチレベルポート (MLP) を使用して構成できます。また、ゾーンには ping などの ICMP (Internet Control Message Protocol) ブロードキャストのポリシーで構成することができます。
ラベル付きゾーンのディレクトリの共有とラベル付きゾーンのディレクトリの遠隔マウントについては、第 11 章Trusted Extensions でのファイルの管理とマウント (手順)を参照してください。
Trusted Extensions のゾーンは、Solaris ゾーン製品の上に構築されます。詳細は、『System Administration Guide: Oracle Solaris Containers-Resource Management and Oracle Solaris Zones』のパート II「Zones」を参照してください。具体的には、パッチとパッケージのインストールの問題が Trusted Extensions に影響します。詳細は、『System Administration Guide: Oracle Solaris Containers-Resource Management and Oracle Solaris Zones』の第 25 章「About Packages and Patches on a Solaris System With Zones Installed (Overview)」と『System Administration Guide: Oracle Solaris Containers-Resource Management and Oracle Solaris Zones』の第 30 章「Troubleshooting Miscellaneous Solaris Zones Problems」を参照してください。
初期設定チームは、大域ゾーンとラベル付きゾーンに IP アドレスを割り当てています。3 タイプの構成については、『Oracle Solaris Trusted Extensions 構成ガイド』の「ラベル付きゾーンの作成」に説明されています。
システムに、大域ゾーンとすべてのラベル付きゾーン用の 1 つの IP アドレスを設定します。
この構成は、DHCP ソフトウェアを使用して IP アドレスを取得するシステムで役に立ちます。ログインする予定のユーザーがいない場合は、LDAP サーバーをこのように構成します。
システムに、大域ゾーン用の 1 つの IP アドレスと、大域ゾーンを含めたすべてのゾーンで共有される 1 つの IP アドレスを設定します。任意のゾーンが、一意のアドレスと共有アドレスの組み合わせを持つことができます。
この構成は、一般ユーザーがログインするシステムで役に立ちます。プリンタや NFS サーバーにも使用できます。この構成では IP アドレスが節約されます。
システムに、大域ゾーン用の 1 つの IP アドレスを設定し、ラベル付きの各ゾーンが一意の IP アドレスを持ちます。
この構成は、シングルレベルシステムの個々の物理ネットワークにアクセスするときに役に立ちます。通常、各ゾーンはほかのラベル付きゾーンとは異なる物理ネットワーク上の IP アドレスを持ちます。この構成は単一の IP インスタンスによって実装されるため、大域ゾーンで物理インタフェースを制御し、経路テーブルなどの大域リソースを管理します。
非大域ゾーン用の排他的 IP インスタンスの導入に伴って、Solaris OS では 4 番目の構成タイプを使用できるようになりました。Solaris 10 8/07 リリース以降、非大域ゾーンにそれぞれの IP インスタンスを割り当てて、非大域ゾーンでそれぞれの物理インタフェースを管理できるようになりました。この構成では、各ゾーンは別個のシステムであるかのように動作します。詳細は、『System Administration Guide: Oracle Solaris Containers-Resource Management and Oracle Solaris Zones』の「Zone Network Interfaces」を参照してください。
ただし、このような構成では、各ラベル付きゾーンは別個のシングルラベル付きシステムのように動作します。Trusted Extensions のマルチレベルネットワーク機能は、共有 IP スタックの機能に依存しています。Trusted Extensions の管理手順は、ネットワーク接続が大域ゾーンによって完全に制御されることを前提としています。したがって、初期設定チームが排他的 IP インスタンスでラベル付きゾーンをインストールした場合は、サイト固有のマニュアルを用意するか参照する必要があります。
デフォルトでは、ゾーンはほかのゾーンとの間でパケットを送受信できません。マルチレベルポート (MLP) を使用すると、ポート上の特定のサービスがラベルの範囲内の、またはラベルセットからの要求を受け取ることができます。これらの特権サービスは、要求のラベルで返信できます。たとえば、すべてのラベルで待機できるが、その返信はラベルによって制限されるような特権 Web ブラウザポートを作成することができます。デフォルトでは、ラベル付きゾーンは MLP を持ちません。
MLP で受け取れるパケットを制約するラベル範囲またはラベルセットは、ゾーンの IP アドレスに基づきます。tnrhdb データベースで、IP アドレスに遠隔ホストテンプレートが割り当てられます。遠隔ホストテンプレートのラベル範囲またはラベルセットによって、MLP が受け取れるパケットが制約されます。
異なる IP アドレス構成での MLP の制約は次のとおりです。
大域ゾーンが IP アドレスを持ち、各ラベル付きゾーンが一意の IP アドレスを持つシステムでは、特定のサービス用の MLP を各ゾーンに追加することができます。たとえば、TCP ポート 22 上の ssh サービスが大域ゾーンと各ラベル付きゾーンで MLP であるようにシステムを構成できます。
通常の構成では、大域ゾーンには 1 つの IP アドレスが割り当てられ、ラベル付きゾーンは 2 番目の IP アドレスを大域ゾーンと共有します。MLP を共有インタフェースに追加すると、サービスパケットは MLP が定義されているラベル付きゾーンに経路指定されます。パケットは、ラベル付きゾーンの遠隔ホストテンプレートがパケットのラベルを含んでいる場合にだけ受け取られます。範囲が ADMIN_LOW から ADMIN_HIGH の場合、すべてのパケットが受け取られます。範囲がこれより狭い場合、範囲内にないパケットは破棄されます。
最大で 1 つのゾーンが、特定のポートを共有インタフェースでの MLP として定義することができます。前述のシナリオでは、ssh ポートが非大域ゾーンの共有 MLP として構成され、それ以外のゾーンは共有アドレスで ssh 接続を受け取ることができません。ただし、大域ゾーンはゾーン固有のアドレスで接続を受け取るプライベート MLP として ssh ポートを定義できます。
大域ゾーンとラベル付きゾーンが IP アドレスを共有するシステムでは、ssh サービス用の MLP を 1 つのゾーンに追加することができます。ssh 用の MLP を大域ゾーンに追加した場合、ラベル付きゾーンは ssh サービス用の MLP を追加できません。同様に、ssh サービス用の MLP をラベル付きゾーンに追加した場合、ssh MLP を使用して大域ゾーンを構成することはできません。
ラベル付きゾーンに MLP を追加する例については、例 13–16 を参照してください。
ネットワークはブロードキャストメッセージを送信し、ネットワーク上のシステムに ICMP パケットを送信します。マルチレベルシステムでは、これらの送信が各ラベルでシステムの容量を超えることがあります。ラベル付きゾーンのデフォルトのネットワークポリシーでは、一致するラベルでだけ ICMP パケットが受け取られるようにする必要があります。
Trusted Extensions では、大域ゾーンのプロセスを含むすべてのプロセスに MAC ポリシーが適用されます。大域ゾーンのプロセスは ADMIN_HIGH ラベルで実行されます。大域ゾーンのファイルが共有される場合、ADMIN_LOW ラベルで共有されます。MAC では上位のラベルの付いたプロセスが下位のオブジェクトを変更できないため、通常、大域ゾーンは NFS マウントシステムに書き込むことができません。
ただし、限定的ではあるものの、ラベル付きゾーンのアクションでは、大域ゾーンのプロセスにそのゾーンのファイルの変更を要求することがあります。
大域ゾーンのプロセスが読み取り/書き込み権を持つ遠隔ファイルシステムをマウントできるようにするには、遠隔ファイルシステムのラベルと一致するラベルを持ったゾーンのゾーンパスの下にマウントする必要があります。ただし、そのゾーンのルートパスの下にマウントしてはいけません。
マウントする側のシステムには、遠隔ファイルシステムと同じラベルのゾーンが必要です。
システムは同じラベルの付いたゾーンのゾーンパスの下に遠隔ファイルシステムをマウントする必要があります。
システムは遠隔ファイルシステムを同じラベルの付いたゾーンの「ゾーンルートパス」の下にマウントしてはいけません。
PUBLIC というラベルで public という名前のゾーンを考えてみましょう。「ゾーンパス」 は /zone/public/ です。このゾーンパスの下にあるディレクトリはすべて、次のように、PUBLIC ラベルになります。
/zone/public/dev /zone/public/etc /zone/public/home/username /zone/public/root /zone/public/usr |
ゾーンパスの下のディレクトリの中では、/zone/public/root の下にあるファイルのみ public ゾーンから表示できます。ほかの PUBLIC ラベルのディレクトリとファイルはすべて、大域ゾーンからのみアクセスできます。/zone/public/root は「ゾーンルートパス」です。
ゾーンルートパスは、public ゾーン管理者には / として表示されます。同様に、public ゾーン管理者は、ゾーンパスのユーザーのホームディレクトリである、/zone/public/home/username ディレクトリにはアクセスできません。そのディレクトリは、大域ゾーンからのみ表示できます。Public ゾーンはそのディレクトリをゾーンルートパスに /home/ username としてマウントします。そのマウントは、大域ゾーンには /zone/public/root/home/ username として表示されます。
Public ゾーン管理者は /home/ username を変更できます。ユーザーのホームディレクトリのファイルを変更する必要がある場合、大域ゾーンプロセスはそのパスを使用しません。大域ゾーンは、ゾーンパスのユーザーのホームディレクトリ /zone/public/home/username を使用します。
ゾーンパス /zone/zonename/ の下にあり、ゾーンルートパス /zone/zonename /root ディレクトリの下にないファイルおよびディレクトリは、ADMIN_HIGH ラベルで実行される大域ゾーンプロセスで変更できます。
ラベル付きゾーン管理者は、ゾーンルートパス /zone/public/root の下にあるファイルおよびディレクトリを変更できます。
たとえば、ユーザーがデバイスを public ゾーンに割り当てる場合、ADMIN_HIGH ラベルで実行される大域ゾーンプロセスでは、ゾーンパス /zone/public/dev の dev ディレクトリが変更されます。同様に、ユーザーがデスクトップ構成を保存する場合、デスクトップ構成ファイルは /zone/public/home/username の大域ゾーンプロセスによって変更されます。最後に、ラベル付きゾーンのファイルを共有する場合、大域ゾーン管理者は構成ファイル dfstab をゾーンパス /zone/public/etc/dfs/dfstab に作成します。ラベル付きゾーン管理者はそのファイルにアクセスできません。また、ラベル付きゾーンのファイルも共有できません。ラベル付きディレクトリを共有する場合は、「ラベル付きゾーンのディレクトリを共有する」を参照してください。
一部のゾーン管理タスクは、コマンド行から実行できます。しかし、ゾーン管理のもっとも簡単な方法は、Trusted Extensions に用意されている GUI を使用することです。
ゾーンのセキュリティー属性の構成は、Solaris 管理コンソールの「トラステッドネットワークゾーン」ツールを使用して実行します。このツールについては、「「トラステッドネットワークゾーン」ツール」を参照してください。ゾーンの構成および作成の例については、『Oracle Solaris Trusted Extensions 構成ガイド』の第 4 章「Trusted Extensions の構成 (手順)」と 「ゾーンにマルチレベルポートを作成する」を参照してください。
シェルスクリプト /usr/sbin/txzonemgr では、ゾーンの作成、インストール、初期化、起動を行うメニューベースのウィザードが提供されます。Solaris Trusted Extensions (JDS) からゾーンを管理している場合、Trusted CDE アクションではなく txzonemgr スクリプトを使用します。txzonemgr は zenity コマンドを使用します。詳細は、zenity(1) のマニュアルページを参照してください。
Trusted CDE では、ゾーンの構成と作成は Trusted_Extensionsフォルダのアクションを使用して実行できます。アクションについては、「Trusted CDE アクション」 を参照してください。アクションを使用する手順については、「Trusted Extensions の CDE 管理アクションを起動する」を参照してください。
次の作業マップでは、Trusted Extensions に固有のゾーン管理タスクについて説明します。このマップでは、Solaris システムの場合と同様に、Trusted Extensions で実行される一般的な手順も説明しています。
作業 |
説明 |
参照先 |
---|---|---|
すべてのゾーンの表示 |
任意のラベルで、現在のゾーンのほうが優位であるゾーンを表示します。 | |
マウントされたディレクトリの表示 |
任意のラベルで、現在のラベルのほうが優位であるディレクトリを表示します。 | |
一般ユーザーが /etc ファイルを表示できるようにする |
ラベル付きゾーンでデフォルトでは表示されない大域ゾーンから、ディレクトリまたはファイルをループバックマウントします。 | |
一般ユーザーが上位レベルのラベルから下位レベルのホームディレクトリを表示できないようにします。 |
デフォルトでは、上位レベルのゾーンから下位レベルのディレクトリを表示できます。下位ゾーンの 1 つのマウントを無効にすると、下位ゾーンのマウントはすべて無効になります。 | |
ファイルのラベルを変更できるようにゾーンを構成します。 |
ラベル付きゾーンには制限付きの特権があります。デフォルトでは、ラベル付きゾーンには、承認ユーザーがファイルに再ラベル付けする特権がありません。ゾーン構成を修正して特権を追加します。 | |
ラベル付きゾーンとの間でファイルまたはディレクトリを移動します。 |
ラベルを変更して、ファイルまたはディレクトリのセキュリティーレベルを変更します。 |
『Oracle Solaris Trusted Extensions ユーザーズガイド』の「Trusted CDE でラベル間でファイルを移動する」 |
ZFS データセットをラベル付きゾーンに接続して共有します。 |
ZFS データセットを読み取り/書き込み権でラベル付きゾーンにマウントし、そのデータセットを読み取り専用で上位のゾーンと共有します。 | |
新しいゾーンを構成します。 |
このシステムでゾーンのラベル付けに現在使用されていないラベルに、ゾーンを作成します。 |
『Oracle Solaris Trusted Extensions 構成ガイド』の「ゾーンに名前およびラベルを付ける」を参照してください。 次に、初期設定チームがほかのゾーンを作成した手順に従います。手順については、『Oracle Solaris Trusted Extensions 構成ガイド』の「ラベル付きゾーンの作成」を参照してください。 |
アプリケーション用のマルチレベルポートを作成します。 |
マルチレベルポートは、ラベル付きゾーンへのマルチレベルフィードを必要とするプログラムに役立ちます。 | |
NFS マウントとアクセスの問題をトラブルシューティングします。 |
マウントと、場合によってはゾーンに関する一般的なアクセス上の問題をデバッグします。 | |
ラベル付きゾーンを削除します。 |
ラベル付きゾーンをシステムから完全に削除します。 |
この手順では、現在のゾーンと、現在のゾーンのほうが優位であるすべてのゾーンのラベルを表示するシェルスクリプトを作成します。
大域ゾーンで、システム管理者役割になっている必要があります。
トラステッドエディタを使用して、getzonelabels スクリプトを作成します。
詳細は、「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 ファイルから作成されたゾーンの大域ゾーン出力は、次のとおりです。
次の例では、internal ゾーンでユーザーが getzonelabels スクリプトを実行します。
# getzonelabels NAME STATUS LABEL ==== ====== ===== internal running CONFIDENTIAL : INTERNAL public running PUBLIC |
この手順では、現在のゾーンでマウントされたファイルシステムを表示するシェルスクリプトを作成します。大域ゾーンからこのスクリプトを実行すると、各ゾーンでマウントされたすべてのファイルシステムのラベルが表示されます。
大域ゾーンで、システム管理者役割になっている必要があります。
トラステッドエディタを使用して、getmounts スクリプトを作成します。
詳細は、「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 |
一般ユーザーがラベル付きゾーンから 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 |
この例でセキュリティー管理者は、テスターおよびプログラマのローカルパスワードが設定されていることをそのテスターやプログラマ自身が確認できるようにします。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 |
この例でセキュリティー管理者は、このシステム上のユーザーが混乱しないように構成しようとします。そのため、ユーザーは自身が作業中のラベルでしかファイルを表示できなくなります。セキュリティー管理者は、下位レベルのすべてのファイルの表示を禁止します。このシステムで、ユーザーは 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 データセットを作成します。
# 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 ゾーンの読み取り/書き込みマウントポイントとして自動的にマウントされます。
この例では、管理者は 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 |
再ラベル付けできるようにゾーンを構成します。
ゾーンに適切な特権を追加します。ウィンドウ特権により、ユーザーはドラッグ&ドロップ操作と、カット&ペースト操作を使うことができます。
ダウングレードを可能にするには、ゾーンに file_downgrade_sl 特権を追加します。
# 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 |
アップグレードを可能にするには、ゾーンに sys_trans_label および file_upgrade_sl 特権を追加します。
# 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 |
アップグレードとダウングレードの両方を可能にするには、ゾーンに 3 つの特権をすべて追加します。
# 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) のマニュアルページを参照してください。ユーザーによるファイルの再ラベル付けを承認する方法については、「ユーザーによるデータのセキュリティーレベルの変更を有効にする」を参照してください。
この例でセキュリティー管理者は、このシステム上の承認ユーザーがファイルをアップグレードできるようにします。ユーザーによる情報のアップグレードを可能にすることで、管理者はさらに高いセキュリティーレベルでユーザーが情報を保護できるようにします。大域ゾーンで、管理者は次のゾーン管理コマンドを実行します。
# zoneadm -z internal halt # zonecfg -z internal set limitpriv=default,sys_trans_label,file_upgrade_sl exit # zoneadm -z internal boot |
これで、承認ユーザーは internal 情報を internal ゾーンから 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 管理コンソールを起動します。
詳細は、「Solaris 管理コンソールでローカルシステムを管理する」を参照してください。
「ファイル」ツールボックスを選択します。
ツールボックスのタイトルには、Scope=Files, Policy=TSOL が含まれています。
ゾーンと MLP を構成します。
Solaris 管理コンソールを閉じます。
カーネルを更新します。
# tnctl -fz /etc/security/tsol/tnzonecfg |
この手順は、ラベル付きゾーンで実行されるアプリケーションがマルチレベルポート (MLP) とゾーンとの通信を必要としている場合に使用されます。この手順では、Web プロキシがゾーンと通信します。MLP の追加には Solaris 管理コンソールを使用します。
大域ゾーンでセキュリティー管理者役割になります。ラベル付きゾーンが存在する必要があります。詳細は、『Oracle Solaris Trusted Extensions 構成ガイド』の「ラベル付きゾーンの作成」を参照してください。
Solaris 管理コンソールを起動します。
詳細は、「Solaris 管理コンソールでローカルシステムを管理する」を参照してください。
「ファイル」ツールボックスを選択します。
ツールボックスのタイトルには、Scope=Files, Policy=TSOL が含まれています。
コンピュータのリストに、プロキシホストと Web サービスホストを追加します。
ゾーンと MLP を構成します。
次の手順に従って、ゾーンのテンプレートをカスタマイズします。
Solaris 管理コンソールを閉じます。
ゾーンを起動します。
# zoneadm -z zone-name boot |
大域ゾーンで、新しいアドレスの経路を追加します。
たとえば、ゾーンに共有 IP アドレスがある場合は、次のようにします。
# route add proxy labeled-zones-IP-address # route add webservice labeled-zones-IP-address |