Go to main content

マニュアルページ セクション 8: システム管理コマンド

印刷ビューの終了

更新: 2018年8月8日
 
 

labelcfg (8)

名前

labelcfg - ラベルエンコーディングの作成と変更

形式

labelcfg [-e encoding_file] [-f command_file] [subcommand]...
labelcfg help

説明

ラベルは、階層型および無関係型の必須アクセスポリシーを実装するために使用されます。labelcfg ユーティリティーは、格付けおよびコンパートメントと呼ばれるコンポーネントに属性を割り当てることにより、ラベル間の関係を指定します。各ラベルは、1 つの格付けとオプションのコンパートメントセットで構成されています。これらの関係全体をラベルエンコーディングと呼びます。

格付けは、レベルと呼ばれる整数値の割り当てによって順序付けられます。デフォルトでは、labelcfg は新しい格付けの追加時に、次に使用可能なレベルを割り当てます。したがって、格付けの追加はもっとも低いレベルから始めることをお勧めします。ただし、レベルを明示的に割り当てることもでき、あとで格付けの順序を変更することもできます。

コンパートメントは最初は順序付けられていません。ほかのコンパートメントをサブコンパートメントとして指定することで、階層を指定できます。ほかのコンパートメントを競合として指定することで、無関係型の関係を指定できます。

コンパートメントを格付けのサブコンパートメントとして割り当てることもできます。この場合、格付けを指定すると、そのサブコンパートメントも暗黙的に含まれます。

これらのポリシー制約によって、有効なラベルを形成できる格付けとコンパートメントの組み合わせが制限されます。ただし、これらの制約は、ほかのすべての有効なラベルを支配する有効なラベルの形成を妨げてはいけません。labelcfg ユーティリティーはユーザーの入力を検証して、無効なエンコーディングファイルの作成を防止します。

エンコーディングファイルが存在しない場合は、新しい空のファイルが label_encodings_template ファイルから作成されます。保存する前に、少なくとも 1 つの格付けを追加する必要があります。

プロパティー

プロパティー値には、単純な文字列、またはコンマで区切られた単純な文字列のリストを指定できます。スペース文字を含む単純な文字列は、二重引用符で囲む必要があります。プロパティーとその値の間には等号 (=) が必要です。

次のプロパティーはエンコーディング全体に適用されます。

title

任意のタイトル。ラベル付けエンコーディングファイルにコメントとして格納されます。

min_label

ユーザーのデフォルトの最小ラベル。Trusted Extensions が有効になっている場合、このプロパティーは、トラステッドデスクトップにログインするときの初期ラベルも指定します。標準の Oracle Solaris の場合、これは、承認されたユーザーが自分のファイルをダウングレードできるもっとも低いラベルを指定します。この場合は、値 ADMIN_LOW が推奨されます。

clearance

ユーザーのデフォルトの認可上限。Trusted Extensions が有効になっている場合を除き、値 ADMIN_HIGH を指定すると、ユーザーに認可上限が明示的に割り当てられていないかぎり、すべてのユーザーに対してラベル付けポリシーの適用が無効になります。

classification

新しい格付けの追加、あるいは既存の格付けの選択または削除に使用されます。

compartment

新しいコンパートメントの追加、あるいは既存のコンパートメントの選択または削除に使用されます。

次のプロパティーは、現在選択されている格付けに適用されます。

name

格付けの完全名 (必須)。名前は複数の単語で構成されることがあり、その場合は二重引用符が必要です。

shortname

格付けの短縮名 (オプション)。名前は複数の単語で構成されることがあり、その場合は二重引用符が必要です。

level

格付けレベルの機密性を表す整数。もっとも低い値は 1 です。デフォルトのテンプレートでは、もっとも高い値は 100 です。格付けの作成時に、レベルは次に使用可能な値に自動的に設定されます。

nextclass

現在の格付けのすぐ上にある格付けの名前。このプロパティーは自動的に設定されますが、現在の格付けの順序を変更する場合に使用できます。

prevclass

現在の格付けのすぐ下にある格付けの名前。このプロパティーは自動的に設定されますが、現在の格付けの順序を変更する場合に使用できます。

subcompartments

現在の格付けに含まれるコンパートメントのリスト (オプション)。

valid

ユーザーにラベルを割り当てるときに現在の格付けと一緒に使用できる、コンパートメントの組み合わせのセットから成るリスト (オプション)。

invalid

ユーザーにラベルを割り当てるときに現在の格付けと一緒に使用できない、コンパートメントの組み合わせのセットから成るリスト (オプション)。アスタリスク (*) は、現在の格付けではすべてのラベルが無効であることを指定します。

valid または invalid プロパティーのどちらか一方を設定すると、他方のプロパティーはクリアされます。

次のプロパティーは、現在選択されているコンパートメントに適用されます。

name

コンパートメントの完全名 (必須)。名前は複数の単語で構成されることがあり、その場合は二重引用符が必要です。

shortname

コンパートメントの完全名 (オプション)。名前は複数の単語で構成されることがあり、その場合は二重引用符が必要です。

prefix

コンパートメントに関連付けることができるフレーズ (オプション)。これは、そのコンパートメントを含んでいるラベルが表示されるときに、コンパートメントの前に出力されます。

suffix

コンパートメントに関連付けることができるフレーズ (オプション)。これは、そのコンパートメントを含んでいるラベルが表示されるときに、コンパートメントの後ろに出力されます。

subcompartments

現在のコンパートメントに含まれるコンパートメントのリスト (オプション)。

conflicts

現在のコンパートメントと一緒には使用できないコンパートメントのリスト (オプション)。

minclass

現在の格付けと組み合わせることができる、もっとも低い格付けの名前。

maxclass

現在の格付けと組み合わせることができる、もっとも高い格付けの名前。

bit

コンパートメントは 1 つ以上のビットから成り、0 から 255 の範囲内にあります。bit プロパティーは、現在のコンパートメントからそのサブコンパートメントをすべて除外した、現在のコンパートメントに割り当てられる一意のビット番号を指定します。これは、コンパートメントの作成時に自動的に設定されます。複数のサブコンパートメントを含んでいるコンパートメントには一意のビットは必要でないことがあり、その場合はビットをクリアできます。

サブコマンド

サブコマンドは、–f オプションを使用してコマンドファイルで指定するか、対話形式で指定することができます。セミコロンで区切られた複数のサブコマンドをコマンド行に指定するには、一連のサブコマンド全体を引用符で囲みます。サブコマンドが指定されていない場合は、対話型セッションが行われることを意味します。対話型セッションでは、TAB キーを使用することにより、サブコマンドと値の自動補完を呼び出すことができます。

add および select サブコマンドでは、格付けまたはコンパートメントを指定でき、その時点でコンテキストがその項目に切り替わります。対話型セッションでは、選択した項目の名前がプロンプトに表示されることによってコンテキストが識別されます。end サブコマンドと cancel サブコマンドを使用すると、指定を終了できます。指定を終了した時点で、コンテキストはエンコーディングコンテキストに戻ります。

プロパティー値には、単純値、またはリストを受け入れるプロパティーの場合は、単純値のリストを指定できます。サポートされているサブコマンドは次のとおりです。

add classification=name

新しい格付けの指定を開始します。格付けのプロパティーを受け入れるようにコンテキストが切り替わります。

add compartment=name

新しいコンパートメントの指定を開始します。コンパートメントのプロパティーを受け入れるようにコンテキストが切り替わります。

add property-name=property-value

指定された値を現在の格付けまたはコンパートメントに追加します。このサブコマンドを適用できるのは、リストを受け入れるプロパティー subcompartmentsconflictsvalid、および invalid のみです。

cancel

指定を終了し、コンテキストをエンコーディングコンテキストにリセットします。指定途中のリソースをすべて破棄します。cancel を適用できるのは、格付けおよびコンパートメントコンテキストのみです。

clear property-name

プロパティーの値をクリアします。

commit

現在の構成をメモリーから –e オプションで指定されたファイルにコミットします。変更を適用するには、構成を確定する必要があります。labelcfg セッションが終了するときには、commit 処理が自動的に実行されます。構成が正しく設定されていないと確定できないので、この処理では自動検証が行われます。

ユーザーに solaris.smf.manage.labels 承認が割り当てられていて、パス名が /etc/security/tsol/ で始まっている場合は、構成が正常に保存されたあとで svc:/system/labeld サービスの labeld/label_encodings プロパティーが更新され、サービスインスタンスが再起動されます。

end

格付けまたはコンパートメントの指定を終了します。

exit [–F]

labelcfg のセッションを終了します。確定されていない変更がある場合は、終了する前に変更を確定するかどうかが尋ねられます。EOF 文字を使用して labelcfg を終了することもできます。この操作を強制的に実行する場合は、–F オプションを使用します。

export [–f output-file]

標準出力または –f オプションで指定された出力ファイルに、構成を出力します。このコマンドの出力は、あとで入力コマンドファイルとしてコマンド行に指定して使用できる適切な形式で生成されます。

help [usage] [subcommands] [properties] [<subcommand>] [<properties>]

一般ヘルプまたは特定項目のヘルプを出力します。

list

現在のエンコーディングを使用してすべての有効なラベルを一覧表示します。

info [property-name]

エンコーディング、現在選択されている格付けまたはコンパートメント、あるいは指定されたプロパティーに関する情報を表示します。

remove classification=name|shortname

指定された格付けをエンコーディングから削除します。このサブコマンドは、エンコーディングコンテキストでのみ有効です。

remove compartment=name|shortname

指定されたコンパートメントをエンコーディングから削除します。このサブコマンドは、エンコーディングコンテキストでのみ有効です。

select classification=name|shortname

編集する格付けを選択します。name プロパティーまたは shortname プロパティーを指定できます。このサブコマンドを適用できるのは、エンコーディングコンテキストのみです。

select compartment=name|shortname

編集するコンパートメントを選択します。name プロパティーまたは shortname プロパティーを指定できます。このサブコマンドを適用できるのは、エンコーディングコンテキストのみです。

set property-name=property-value

指定されたプロパティー名を、指定された値に設定します。そのプロパティーの既存の値はすべて新しい値に置き換えられます。現在の値を置き換えるのではなく、値を追加する場合は、add サブコマンドを使用します。

verify

現在の構成が正しいかどうかを確認します。

オプション

サポートしているオプションは、次のとおりです。

–e

編集するエンコーディングファイルを指定します。ファイルが存在しない場合は、テンプレートファイル /etc/security/tsol/label_encodings.template から作成され、初期化されます。ファイルが書き込み可能でない場合、セッションは読み取り専用モードで動作します。

このオプションを省略した場合、SMF プロパティー labeld/encodings_file で指定されているデフォルトファイルが使用されます。デフォルトでは、FMRI は svc:/system/labeld:clearance です。ただし、Trusted Extensions が有効になっている場合は、このサービスの init インスタンスが使用されるため、対応する FMRI は svc:/system/labeld:init です。

–f

入力として使用するオプションのコマンドファイルを指定します。コマンドファイルは、export サブコマンドの –f オプションを使用して生成できます。コマンドファイルを指定した場合、ほかの入力は受け入れられません。通常、–e を使用して指定するファイルは空であるべきです。そうでない場合は、コマンドファイル内のサブコマンドと競合する可能性があります。

使用例 1 もっとも単純なエンコーディングファイルを作成する
# labelcfg -e simple "add classification=Confidential;end"
使用例 2 コンプライアンスエンコーディングファイルを作成する
# labelcfg -e  /etc/security/tsol/lef
labelcfg:lef> set title="Sample Data Protection Policy"
labelcfg:lef> add classification="Public"
labelcfg:Public> set shortname="Public"
labelcfg:Public> end
labelcfg:lef> add classification="Confidential"
labelcfg:Confidential> set shortname="Confidential"
labelcfg:Confidential> end
labelcfg:lef> add compartment="Internal Use Only"
labelcfg:Internal Use Only> set minclass="Confidential"
labelcfg:Internal Use Only> end
labelcfg:lef> add compartment="Payment Data"
labelcfg:Payment Data> set subcompartments="Internal Use Only"
labelcfg:Payment Data> set minclass="Confidential"
labelcfg:Payment Data> end
labelcfg:lef> add compartment="Health Records"
labelcfg:Health Records> set subcompartments="Internal Use Only"
labelcfg:Health Records> set conflicts="Payment Data"
labelcfg:Health Records> set minclass="Confidential"
labelcfg:Health Records> end
labelcfg:lef> add compartment="Highly Restricted"
labelcfg:Highly Restricted> clear bit
labelcfg:Highly Restricted> set minclass="Confidential"
labelcfg:Highly Restricted> set subcompartments="Payment Data,Health Records"
labelcfg:Highly Restricted> end
labelcfg:lef> select classification="Confidential"
labelcfg:Confidential> set invalid=""
labelcfg:Confidential> end
labelcfg:lef> set min_label=Public
labelcfg:lef> set clearance="Confidential Internal Use Only"
labelcfg:lef> verify
labelcfg:lef> commit
labelcfg:lef> exit
#
使用例 3 エンコーディングコンテキストで info サブコマンドを使用する
gfaden@islay% labelcfg -e  /etc/security/tsol/lef
labelcfg:lef> info
title=Sample Data Protection Policy
classification=Public
	level=1
classification=Confidential
	level=2
compartment=Highly Restricted
	subcompartments="Payment Data,Health Records"
	minclass=Confidential
compartment=Payment Data
	bit=1
	subcompartments="Internal Use Only"
	minclass=Confidential
compartment=Health Records
	bit=2
	subcompartments="Internal Use Only"
	conflicts="Payment Data"
	minclass=Confidential
compartment=Internal Use Only
	bit=0
	minclass=Confidential
min_label=Public
clearance=Confidential Internal Use Only
使用例 4 list オプションを使用して有効なラベルを表示する
labelcfg:lef> list
 "Confidential Highly Restricted"
 "Confidential Payment Data"
 "Confidential Health Records"
 "Confidential Internal Use Only"
 Public
 labelcfg:lef> 
使用例 5 コンパートメントの名前を変更する
labelcfg:lef> select compartment="Heath Records"
labelcfg:Health Records> set name="Medical Records"
labelcfg:Medical Records> info
compartment=Medical Records
        bit=2
        subcompartments="Internal Use Only"
        conflicts="Payment Data"
        minclass=Confidential
labelcfg:Medical Records> end
labelcfg:lef> 

ファイル

/etc/security/tsol/label_encodings.default

属性

属性についての詳細は、マニュアルページの attributes(7) を参照してください。

属性タイプ
属性値
使用条件
system/file_labeling

labelcfg は、Trusted Extensions のラベルエンコーディングファイルで使用できますが、『コンパートメントモードワークステーションのラベル作成: エンコード形式』で説明されているすべてのフィールドを管理するわけではありません。たとえば、「必須組み合わせ」や「プリンタバナー」はサポートしていません。したがって、既存のエンコーディングファイルの変更には適さない場合があります。

関連項目

sandbox(1)clearance(7)labels(7)chk_encodings(8)labeld(8)