Oracle Solaris Trusted Extensions 管理の手順

第 10 章 Trusted Extensions でのゾーンの管理 (手順)

この章では、Solaris Trusted Extensions が設定されたシステムで非大域ゾーンがどのように動作するかについて説明します。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」を参照してください。

Trusted Extensions のゾーンと IP アドレス

初期設定チームは、大域ゾーンとラベル付きゾーンに IP アドレスを割り当てています。3 タイプの構成については、『Oracle Solaris Trusted Extensions 構成ガイド』「ラベル付きゾーンの作成」に説明されています。

非大域ゾーン用の排他的 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 が受け取れるパケットが制約されます。

ラベル付きゾーンに MLP を追加する例については、例 13–16 を参照してください。

Trusted Extensions のゾーンと ICMP

ネットワークはブロードキャストメッセージを送信し、ネットワーク上のシステムに 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 を使用します。

たとえば、ユーザーがデバイスを public ゾーンに割り当てる場合、ADMIN_HIGH ラベルで実行される大域ゾーンプロセスでは、ゾーンパス /zone/public/devdev ディレクトリが変更されます。同様に、ユーザーがデスクトップ構成を保存する場合、デスクトップ構成ファイルは /zone/public/home/username の大域ゾーンプロセスによって変更されます。最後に、ラベル付きゾーンのファイルを共有する場合、大域ゾーン管理者は構成ファイル dfstab をゾーンパス /zone/public/etc/dfs/dfstab に作成します。ラベル付きゾーン管理者はそのファイルにアクセスできません。また、ラベル付きゾーンのファイルも共有できません。ラベル付きディレクトリを共有する場合は、「ラベル付きゾーンのディレクトリを共有する」を参照してください。

Trusted Extensions でのゾーン管理ユーティリティー

一部のゾーン管理タスクは、コマンド行から実行できます。しかし、ゾーン管理のもっとも簡単な方法は、Trusted Extensions に用意されている GUI を使用することです。

ゾーンの管理 (作業マップ)

次の作業マップでは、Trusted Extensions に固有のゾーン管理タスクについて説明します。このマップでは、Solaris システムの場合と同様に、Trusted Extensions で実行される一般的な手順も説明しています。

作業 

説明 

参照先 

すべてのゾーンの表示 

任意のラベルで、現在のゾーンのほうが優位であるゾーンを表示します。 

「作成済みまたは実行中のゾーンを表示する」

マウントされたディレクトリの表示 

任意のラベルで、現在のラベルのほうが優位であるディレクトリを表示します。 

「マウントされたファイルのラベルを表示する」

一般ユーザーが /etc ファイルを表示できるようにする

ラベル付きゾーンでデフォルトでは表示されない大域ゾーンから、ディレクトリまたはファイルをループバックマウントします。 

「通常はラベル付きゾーンから表示されないファイルをループバックマウントする」

一般ユーザーが上位レベルのラベルから下位レベルのホームディレクトリを表示できないようにします。 

デフォルトでは、上位レベルのゾーンから下位レベルのディレクトリを表示できます。下位ゾーンの 1 つのマウントを無効にすると、下位ゾーンのマウントはすべて無効になります。 

「下位ファイルのマウントを無効にする」

ファイルのラベルを変更できるようにゾーンを構成します。 

ラベル付きゾーンには制限付きの特権があります。デフォルトでは、ラベル付きゾーンには、承認ユーザーがファイルに再ラベル付けする特権がありません。ゾーン構成を修正して特権を追加します。 

「ラベル付きゾーンからファイルに再ラベル付けできるようにする」

ラベル付きゾーンとの間でファイルまたはディレクトリを移動します。 

ラベルを変更して、ファイルまたはディレクトリのセキュリティーレベルを変更します。 

『Oracle Solaris Trusted Extensions ユーザーズガイド』「Trusted CDE でラベル間でファイルを移動する」

ZFS データセットをラベル付きゾーンに接続して共有します。 

ZFS データセットを読み取り/書き込み権でラベル付きゾーンにマウントし、そのデータセットを読み取り専用で上位のゾーンと共有します。 

「ラベル付きゾーンの ZFS データセットを共有する」.

新しいゾーンを構成します。 

このシステムでゾーンのラベル付けに現在使用されていないラベルに、ゾーンを作成します。 

『Oracle Solaris Trusted Extensions 構成ガイド』「ゾーンに名前およびラベルを付ける」を参照してください。

次に、初期設定チームがほかのゾーンを作成した手順に従います。手順については、『Oracle Solaris Trusted Extensions 構成ガイド』「ラベル付きゾーンの作成」を参照してください。

アプリケーション用のマルチレベルポートを作成します。 

マルチレベルポートは、ラベル付きゾーンへのマルチレベルフィードを必要とするプログラムに役立ちます。 

udp で NFSv3 のマルチレベルポートを構成する」

「ゾーンにマルチレベルポートを作成する」

NFS マウントとアクセスの問題をトラブルシューティングします。 

マウントと、場合によってはゾーンに関する一般的なアクセス上の問題をデバッグします。 

「Trusted Extensions でマウントの失敗をトラブルシューティングする」

ラベル付きゾーンを削除します。 

ラベル付きゾーンをシステムから完全に削除します。 

『System Administration Guide: Oracle Solaris Containers-Resource Management and Oracle Solaris Zones』「How to Remove a Non-Global Zone」

Procedure作成済みまたは実行中のゾーンを表示する

この手順では、現在のゾーンと、現在のゾーンのほうが優位であるすべてのゾーンのラベルを表示するシェルスクリプトを作成します。

始める前に

大域ゾーンで、システム管理者役割になっている必要があります。

  1. トラステッドエディタを使用して、getzonelabels スクリプトを作成します。

    詳細は、「Trusted Extensions の管理ファイルを編集する」を参照してください。

    /usr/local/scripts/getzonelabels など、スクリプトへのパス名を入力します。

  2. 次の内容を入力して、ファイルを保存します。


    #!/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
  3. 大域ゾーンでスクリプトをテストします。


    # 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

Procedureマウントされたファイルのラベルを表示する

この手順では、現在のゾーンでマウントされたファイルシステムを表示するシェルスクリプトを作成します。大域ゾーンからこのスクリプトを実行すると、各ゾーンでマウントされたすべてのファイルシステムのラベルが表示されます。

始める前に

大域ゾーンで、システム管理者役割になっている必要があります。

  1. トラステッドエディタを使用して、getmounts スクリプトを作成します。

    詳細は、「Trusted Extensions の管理ファイルを編集する」を参照してください。

    /usr/local/scripts/getmounts など、スクリプトへのパス名を入力します。

  2. 次の内容を追加して、ファイルを保存します。


    #!/bin/sh
    #
    for i in `/usr/sbin/mount -p | cut -d " " -f3` ; do
            /usr/bin/getlabel $i
    done
  3. 大域ゾーンでスクリプトをテストします。


    # /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

Procedure通常はラベル付きゾーンから表示されないファイルをループバックマウントする

この手順では、指定されたラベル付きゾーンのユーザーが、デフォルトでは大域ゾーンからエクスポートされないファイルを表示できるようにします。

始める前に

大域ゾーンで、システム管理者役割になっている必要があります。

  1. 構成を変更するゾーンを停止します。


    # zoneadm -z zone-name halt
  2. ファイルまたはディレクトリをループバックマウントします。

    たとえば、一般ユーザーが /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 ソフトウェアでは検査されません。詳細は、「ラベル付きゾーンのファイルの共有」を参照してください。


  3. ゾーンを起動します。


    # 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

Procedure下位ファイルのマウントを無効にする

デフォルトでは、ユーザーは下位レベルのファイルを表示できます。特定ゾーンから下位レベルのすべてのファイルを表示することを禁止するには、net_mac_aware 特権を削除します。net_mac_aware 特権については、privileges(5) のマニュアルページを参照してください。

始める前に

大域ゾーンで、システム管理者役割になっている必要があります。

  1. 構成を変更するゾーンを停止します。


    # zoneadm -z zone-name halt
  2. 下位レベルのファイルの表示を禁止するようにゾーンを構成します。

    ゾーンから net_mac_aware 特権を削除します。


    # zonecfg -z zone-name
     set limitpriv=default,!net_mac_aware
     exit
  3. ゾーンを再起動します。


    # 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 ゾーンに対するコマンドは実行しません。


Procedureラベル付きゾーンの ZFS データセットを共有する

この手順では、ZFS データセットを読み取り/書き込み権でラベル付きゾーンにマウントします。すべてのコマンドが大域ゾーンで実行されるため、大域ゾーン管理者がラベル付きゾーンへの ZFS データセットの追加を制御します。

データセットを共有するには、最低でもラベル付きゾーンが ready 状態である必要があります。ラベル付きゾーンが running 状態であっても構いません。

始める前に

データセットを持つゾーンを構成するには、最初にそのゾーンを停止します。

  1. ZFS データセットを作成します。


    # zfs create datasetdir/subdir
    

    データセットの名前には、zone/data などのディレクトリを含めることができます。

  2. 大域ゾーンで、ラベル付きゾーンを停止します。


    # zoneadm -z labeled-zone-name halt
  3. データセットのマウントポイントを設定します。


    # zfs set mountpoint=legacy datasetdir/subdir
    

    ZFS mountpoint プロパティーで、マウントポイントがラベル付きゾーンに対応付けられたときのマウントポイントのラベルを設定します。

  4. ラベル付きゾーンにデータセットをファイルシステムとして追加します。


    # 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 ファイルが解釈されます。

  5. データセットを共有します。

    データセットファイルシステムのエントリを /zone/labeled-zone-name/etc/dfs/dfstab ファイルに追加します。このエントリには、/subdir パス名も使用されます。


    share  -F nfs  -d "dataset-comment"  /subdir
    
  6. ラベル付きゾーンを起動します。


    # 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 コマンドを実行して、オートマウンタサービスを再起動する必要があります。

Procedureラベル付きゾーンからファイルに再ラベル付けできるようにする

ユーザーがファイルに再ラベル付けできるようにする場合、この手順が前提条件となります。

始める前に

大域ゾーンでセキュリティー管理者役割になります。

  1. 構成を変更するゾーンを停止します。


    # zoneadm -z zone-name halt
  2. 再ラベル付けできるようにゾーンを構成します。

    ゾーンに適切な特権を追加します。ウィンドウ特権により、ユーザーはドラッグ&ドロップ操作と、カット&ペースト操作を使うことができます。

    • ダウングレードを可能にするには、ゾーンに 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
  3. ゾーンを再起動します。


    # 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 にダウングレードできます。


Procedureudp で NFSv3 のマルチレベルポートを構成する

この手順は、udp で NFSv3 の下位読み取りマウントを有効にする場合に使用されます。MLP の追加には Solaris 管理コンソールを使用します。

始める前に

大域ゾーンでセキュリティー管理者役割になります。

  1. Solaris 管理コンソールを起動します。

    詳細は、「Solaris 管理コンソールでローカルシステムを管理する」を参照してください。

  2. 「ファイル」ツールボックスを選択します。

    ツールボックスのタイトルには、Scope=Files, Policy=TSOL が含まれています。

  3. ゾーンと MLP を構成します。

    1. 「トラステッドネットワークゾーン」ツールにナビゲートします。

    2. 大域ゾーンをダブルクリックします。

    3. UDP プロトコルのマルチレベルポートを追加します。

      1. 「ゾーンの IP アドレスに対するマルチレベルポートの追加」をクリックします。

      2. ポート番号として 2049 と入力し、「了解」をクリックします。

    4. 「了解」をクリックして設定を保存します。

  4. Solaris 管理コンソールを閉じます。

  5. カーネルを更新します。


    # tnctl -fz /etc/security/tsol/tnzonecfg
    

Procedureゾーンにマルチレベルポートを作成する

この手順は、ラベル付きゾーンで実行されるアプリケーションがマルチレベルポート (MLP) とゾーンとの通信を必要としている場合に使用されます。この手順では、Web プロキシがゾーンと通信します。MLP の追加には Solaris 管理コンソールを使用します。

始める前に

大域ゾーンでセキュリティー管理者役割になります。ラベル付きゾーンが存在する必要があります。詳細は、『Oracle Solaris Trusted Extensions 構成ガイド』「ラベル付きゾーンの作成」を参照してください。

  1. Solaris 管理コンソールを起動します。

    詳細は、「Solaris 管理コンソールでローカルシステムを管理する」を参照してください。

  2. 「ファイル」ツールボックスを選択します。

    ツールボックスのタイトルには、Scope=Files, Policy=TSOL が含まれています。

  3. コンピュータのリストに、プロキシホストと Web サービスホストを追加します。

    1. 「システム構成」で「コンピュータとネットワーク」ツールにナビゲートします。

    2. 「コンピュータ」ツールで「アクション」メニューをクリックし、「コンピュータの追加」を選択します。

    3. プロキシホストのホスト名と IP アドレスを追加します。

    4. 変更を保存します。

    5. Web サービスホストのホスト名と IP アドレスを追加します。

    6. 変更を保存します。

  4. ゾーンと MLP を構成します。

    1. 「トラステッドネットワークゾーン」ツールにナビゲートします。

    2. ラベル付きゾーンを選択します。

    3. 「ローカル IP アドレスの MLP 構成」セクションで、適切なポートとプロトコルフィールドを指定します。

    4. 変更を保存します。

  5. 次の手順に従って、ゾーンのテンプレートをカスタマイズします。

    1. 「セキュリティーテンプレート」ツールにナビゲートします。

      「アクション」メニューをクリックし、「テンプレートの追加」を選択します。

    2. テンプレート名には、ホスト名を使用します。

    3. 「ホストタイプ」に「CIPSO」を指定します。

    4. 「最小ラベル」および「最大ラベル」にはゾーンのラベルを使用します。

    5. 「機密ラベルセット」にゾーンラベルを割り当てます。

    6. 「明示的に割り当てられたホスト」タブを選択します。

    7. 「エントリの追加」セクションで、ゾーンに関連付ける IP アドレスを追加します。

    8. 変更を保存します。

  6. Solaris 管理コンソールを閉じます。

  7. ゾーンを起動します。


    # zoneadm -z zone-name boot
  8. 大域ゾーンで、新しいアドレスの経路を追加します。

    たとえば、ゾーンに共有 IP アドレスがある場合は、次のようにします。


    # route add proxy labeled-zones-IP-address
    # route add webservice labeled-zones-IP-address