labelcfg - ラベルエンコーディングの作成と変更
labelcfg [-e encoding_file] [-f command_file] [subcommand]...
labelcfg help
ラベルは、階層型および無関係型の必須アクセスポリシーを実装するために使用されます。labelcfg ユーティリティーは、格付けおよびコンパートメントと呼ばれるコンポーネントに属性を割り当てることにより、ラベル間の関係を指定します。各ラベルは、1 つの格付けとオプションのコンパートメントセットで構成されています。これらの関係全体をラベルエンコーディングと呼びます。
格付けは、レベルと呼ばれる整数値の割り当てによって順序付けられます。デフォルトでは、labelcfg は新しい格付けの追加時に、次に使用可能なレベルを割り当てます。したがって、格付けの追加はもっとも低いレベルから始めることをお勧めします。ただし、レベルを明示的に割り当てることもでき、あとで格付けの順序を変更することもできます。
コンパートメントは最初は順序付けられていません。ほかのコンパートメントをサブコンパートメントとして指定することで、階層を指定できます。ほかのコンパートメントを競合として指定することで、無関係型の関係を指定できます。
コンパートメントを格付けのサブコンパートメントとして割り当てることもできます。この場合、格付けを指定すると、そのサブコンパートメントも暗黙的に含まれます。
これらのポリシー制約によって、有効なラベルを形成できる格付けとコンパートメントの組み合わせが制限されます。ただし、これらの制約は、ほかのすべての有効なラベルを支配する有効なラベルの形成を妨げてはいけません。labelcfg ユーティリティーはユーザーの入力を検証して、無効なエンコーディングファイルの作成を防止します。
エンコーディングファイルが存在しない場合は、新しい空のファイルが label_encodings_template ファイルから作成されます。保存する前に、少なくとも 1 つの格付けを追加する必要があります。
プロパティー値には、単純な文字列、またはコンマで区切られた単純な文字列のリストを指定できます。スペース文字を含む単純な文字列は、二重引用符で囲む必要があります。プロパティーとその値の間には等号 (=) が必要です。
次のプロパティーはエンコーディング全体に適用されます。
任意のタイトル。ラベル付けエンコーディングファイルにコメントとして格納されます。
ユーザーのデフォルトの最小ラベル。Trusted Extensions が有効になっている場合、このプロパティーは、トラステッドデスクトップにログインするときの初期ラベルも指定します。標準の Oracle Solaris の場合、これは、承認されたユーザーが自分のファイルをダウングレードできるもっとも低いラベルを指定します。この場合は、値 ADMIN_LOW が推奨されます。
ユーザーのデフォルトの認可上限。Trusted Extensions が有効になっている場合を除き、値 ADMIN_HIGH を指定すると、ユーザーに認可上限が明示的に割り当てられていないかぎり、すべてのユーザーに対してラベル付けポリシーの適用が無効になります。
新しい格付けの追加、あるいは既存の格付けの選択または削除に使用されます。
新しいコンパートメントの追加、あるいは既存のコンパートメントの選択または削除に使用されます。
次のプロパティーは、現在選択されている格付けに適用されます。
格付けの完全名 (必須)。名前は複数の単語で構成されることがあり、その場合は二重引用符が必要です。
格付けの短縮名 (オプション)。名前は複数の単語で構成されることがあり、その場合は二重引用符が必要です。
格付けレベルの機密性を表す整数。もっとも低い値は 1 です。デフォルトのテンプレートでは、もっとも高い値は 100 です。格付けの作成時に、レベルは次に使用可能な値に自動的に設定されます。
現在の格付けのすぐ上にある格付けの名前。このプロパティーは自動的に設定されますが、現在の格付けの順序を変更する場合に使用できます。
現在の格付けのすぐ下にある格付けの名前。このプロパティーは自動的に設定されますが、現在の格付けの順序を変更する場合に使用できます。
現在の格付けに含まれるコンパートメントのリスト (オプション)。
ユーザーにラベルを割り当てるときに現在の格付けと一緒に使用できる、コンパートメントの組み合わせのセットから成るリスト (オプション)。
ユーザーにラベルを割り当てるときに現在の格付けと一緒に使用できない、コンパートメントの組み合わせのセットから成るリスト (オプション)。アスタリスク (*) は、現在の格付けではすべてのラベルが無効であることを指定します。
valid または invalid プロパティーのどちらか一方を設定すると、他方のプロパティーはクリアされます。
次のプロパティーは、現在選択されているコンパートメントに適用されます。
コンパートメントの完全名 (必須)。名前は複数の単語で構成されることがあり、その場合は二重引用符が必要です。
コンパートメントの完全名 (オプション)。名前は複数の単語で構成されることがあり、その場合は二重引用符が必要です。
コンパートメントに関連付けることができるフレーズ (オプション)。これは、そのコンパートメントを含んでいるラベルが表示されるときに、コンパートメントの前に出力されます。
コンパートメントに関連付けることができるフレーズ (オプション)。これは、そのコンパートメントを含んでいるラベルが表示されるときに、コンパートメントの後ろに出力されます。
現在のコンパートメントに含まれるコンパートメントのリスト (オプション)。
現在のコンパートメントと一緒には使用できないコンパートメントのリスト (オプション)。
現在の格付けと組み合わせることができる、もっとも低い格付けの名前。
現在の格付けと組み合わせることができる、もっとも高い格付けの名前。
コンパートメントは 1 つ以上のビットから成り、0 から 255 の範囲内にあります。bit プロパティーは、現在のコンパートメントからそのサブコンパートメントをすべて除外した、現在のコンパートメントに割り当てられる一意のビット番号を指定します。これは、コンパートメントの作成時に自動的に設定されます。複数のサブコンパートメントを含んでいるコンパートメントには一意のビットは必要でないことがあり、その場合はビットをクリアできます。
サブコマンドは、–f オプションを使用してコマンドファイルで指定するか、対話形式で指定することができます。セミコロンで区切られた複数のサブコマンドをコマンド行に指定するには、一連のサブコマンド全体を引用符で囲みます。サブコマンドが指定されていない場合は、対話型セッションが行われることを意味します。対話型セッションでは、TAB キーを使用することにより、サブコマンドと値の自動補完を呼び出すことができます。
add および select サブコマンドでは、格付けまたはコンパートメントを指定でき、その時点でコンテキストがその項目に切り替わります。対話型セッションでは、選択した項目の名前がプロンプトに表示されることによってコンテキストが識別されます。end サブコマンドと cancel サブコマンドを使用すると、指定を終了できます。指定を終了した時点で、コンテキストはエンコーディングコンテキストに戻ります。
プロパティー値には、単純値、またはリストを受け入れるプロパティーの場合は、単純値のリストを指定できます。サポートされているサブコマンドは次のとおりです。
新しい格付けの指定を開始します。格付けのプロパティーを受け入れるようにコンテキストが切り替わります。
新しいコンパートメントの指定を開始します。コンパートメントのプロパティーを受け入れるようにコンテキストが切り替わります。
指定された値を現在の格付けまたはコンパートメントに追加します。このサブコマンドを適用できるのは、リストを受け入れるプロパティー subcompartments、conflicts、valid、および invalid のみです。
指定を終了し、コンテキストをエンコーディングコンテキストにリセットします。指定途中のリソースをすべて破棄します。cancel を適用できるのは、格付けおよびコンパートメントコンテキストのみです。
プロパティーの値をクリアします。
現在の構成をメモリーから –e オプションで指定されたファイルにコミットします。変更を適用するには、構成を確定する必要があります。labelcfg セッションが終了するときには、commit 処理が自動的に実行されます。構成が正しく設定されていないと確定できないので、この処理では自動検証が行われます。
ユーザーに solaris.smf.manage.labels 承認が割り当てられていて、パス名が /etc/security/tsol/ で始まっている場合は、構成が正常に保存されたあとで svc:/system/labeld サービスの labeld/label_encodings プロパティーが更新され、サービスインスタンスが再起動されます。
格付けまたはコンパートメントの指定を終了します。
labelcfg のセッションを終了します。確定されていない変更がある場合は、終了する前に変更を確定するかどうかが尋ねられます。EOF 文字を使用して labelcfg を終了することもできます。この操作を強制的に実行する場合は、–F オプションを使用します。
標準出力または –f オプションで指定された出力ファイルに、構成を出力します。このコマンドの出力は、あとで入力コマンドファイルとしてコマンド行に指定して使用できる適切な形式で生成されます。
一般ヘルプまたは特定項目のヘルプを出力します。
現在のエンコーディングを使用してすべての有効なラベルを一覧表示します。
エンコーディング、現在選択されている格付けまたはコンパートメント、あるいは指定されたプロパティーに関する情報を表示します。
指定された格付けをエンコーディングから削除します。このサブコマンドは、エンコーディングコンテキストでのみ有効です。
指定されたコンパートメントをエンコーディングから削除します。このサブコマンドは、エンコーディングコンテキストでのみ有効です。
編集する格付けを選択します。name プロパティーまたは shortname プロパティーを指定できます。このサブコマンドを適用できるのは、エンコーディングコンテキストのみです。
編集するコンパートメントを選択します。name プロパティーまたは shortname プロパティーを指定できます。このサブコマンドを適用できるのは、エンコーディングコンテキストのみです。
指定されたプロパティー名を、指定された値に設定します。そのプロパティーの既存の値はすべて新しい値に置き換えられます。現在の値を置き換えるのではなく、値を追加する場合は、add サブコマンドを使用します。
現在の構成が正しいかどうかを確認します。
サポートしているオプションは、次のとおりです。
編集するエンコーディングファイルを指定します。ファイルが存在しない場合は、テンプレートファイル /etc/security/tsol/label_encodings.template から作成され、初期化されます。ファイルが書き込み可能でない場合、セッションは読み取り専用モードで動作します。
このオプションを省略した場合、SMF プロパティー labeld/encodings_file で指定されているデフォルトファイルが使用されます。デフォルトでは、FMRI は svc:/system/labeld:clearance です。ただし、Trusted Extensions が有効になっている場合は、このサービスの init インスタンスが使用されるため、対応する FMRI は svc:/system/labeld:init です。
入力として使用するオプションのコマンドファイルを指定します。コマンドファイルは、export サブコマンドの –f オプションを使用して生成できます。コマンドファイルを指定した場合、ほかの入力は受け入れられません。通常、–e を使用して指定するファイルは空であるべきです。そうでない場合は、コマンドファイル内のサブコマンドと競合する可能性があります。
# 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>
属性についての詳細は、マニュアルページの attributes(7) を参照してください。
|
labelcfg は、Trusted Extensions のラベルエンコーディングファイルで使用できますが、『コンパートメントモードワークステーションのラベル作成: エンコード形式』で説明されているすべてのフィールドを管理するわけではありません。たとえば、「必須組み合わせ」や「プリンタバナー」はサポートしていません。したがって、既存のエンコーディングファイルの変更には適さない場合があります。
sandbox(1)、clearance(7)、labels(7)、chk_encodings(8)、labeld(8)