Solaris Trusted Extensions 開発ガイド

ラベルオブジェクトの比較

次の equalsdominates、および strictlyDominates メソッドを使用してラベルを比較します。これらのメソッドは blequal()bldominate()、および blstrictdom() ルーチンに対応します。inRange メソッドを使用して、指定したラベル範囲内にラベルがあるかどうかを判別します。このメソッドは blinrange() ルーチンに対応します。これらのメソッドで label が指すのは、格付けおよび機密ラベルまたは認可上限ラベルのコンパートメントのセットです。詳細は、「ラベルの比較」および blcompare(3TSOL) のマニュアルページを参照してください。

public boolean dominates(SolarisLabel label)

dominates メソッドで 2 つのラベルを比較して、一方のラベルがもう一方のラベルより優位であるかどうかを判別します。

次のサンプルコーディングは、どのように比較ができるかを示します。CNF : INTERNAL ラベルが比較されて、PUBLIC ラベルに対する優位性がチェックされます。


SensitivityLabel sl = SolarisLabel.getSensitivityLabel("CNF : INTERNAL");
boolean isDominant = sl.dominates(SolarisLabel.getSensitivityLabel("PUBLIC"));
public boolean equals(java.lang.Object obj)

equals ソッドで 2 つのラベルを比較して、それらが等位であるかどうかを判別します。

次のサンプルコーディングは、どのように比較ができるかを示します。


SensitivityLabel sl = SolarisLabel.getSensitivityLabel("CNF : INTERNAL");
boolean isSame = sl.equals(SolarisLabel.getSensitivityLabel("PUBLIC"));
public boolean Range inRange(SensitivityLabel label)

The inRange メソッドで、指定したラベルが範囲内にあるかどうかを判別します。このメソッドは Range クラスに属します。

次のコードフラグメントは、ファイルがユーザーの認可上限範囲内であるかどうかを検証できる方法を示します。


import solarismac.*;
import java.io.*;

public class Example1
{
    public static void main (String args[]) {

        try {
	    Range range;

            range = Range.getUserRange("jweeks");
            SensitivityLabel fsl =
                SolarisLabel.getFileLabel(new File("/etc/passwd"));
            boolean isInRange;

            isInRange = Range.inRange(fsl);

            if (isInRange)
                System.out.println("File is within user's range");
            else
                System.out.println("File is not within user's range");

        }
        catch (Exception e) {
            e.PrintStackTrace();
        }
    }
}
public boolean strictlyDominates(SolarisLabel label)

strictlyDominates メソッドで 2 つのラベルを比較して、一方のラベルがもう一方のラベルよりも厳密に優位であるかどうかを判別します。一方のラベルがもう一方のラベルよりも厳密に優位である場合は、もう一方のラベルよりも優先されますが、等位ではありません。

次のサンプルコーディングは、どのように比較ができるかを示します。CNF : INTERNAL ラベルが比較されて、PUBLIC ラベルに対する完全な優位性がチェックされます。


SensitivityLabel sl = SolarisLabel.getSensitivityLabel("CNF : INTERNAL");
boolean isStrictlyDominant =
    sl.strictlyDominates(SolarisLabel.getSensitivityLabel("PUBLIC"));

ラベル関係の詳細は、「ラベル関係」を参照してください。

getMaximum および getMinimum メソッドを使用して、指定した範囲の最小上限および最大下限をそれぞれ判別します。これらのメソッドで、blmaximum() および blminimum() ルーチンの機能をミラー化します。詳細は、「ラベルの比較」 および blminmax(3TSOL) のマニュアルページを参照してください。

たとえば、この getMaximum を使用して、ラベル付けされた 2 つのオブジェクトの情報を組み合わせ、新たに別のオブジェクトを作成してラベル付けするときに使用するラベルを決定します。新しいオブジェクトのラベルは、ラベル付けされた元の 2 つのオブジェクトよりも優位となります。各メソッド は、ClearanceLabel および SensitivityLabel サブクラスで定義されます。

public ClearanceLabel getMaximum(ClearanceLabel bounding)

getMaximum メソッドは、ユーザーが指定する 2 つのラベルオブジェクトよりも優位である、最下ラベルとなる新しい認可上限ラベルオブジェクトを作成します。 結果として得られるオブジェクトは、その範囲の最小上限です。getMaximum は、認可上限ラベルの内部形式でオブジェクトを返します。

public ClearanceLabel getMinimum(ClearanceLabel bounding)

getMinimum メソッドは、ユーザーが指定する 2 つのラベルのどちらに対しても優位でない、最大ラベルとなる新しい認可上限ラベルオブジェクトを作成します。結果として得られるオブジェクトは、その範囲の最大下限です。getMinimum は、認可上限ラベルの内部形式でオブジェクトを返します。

public SensitivityLabel getMaximum(SensitivityLabel bounding)

getMaximum メソッドは、ユーザーが指定する 2 つのラベルオブジェクトよりも優位である、最下ラベルとなる新しい機密ラベルオブジェクトを作成します。結果として得られるオブジェクトは、その範囲の最小上限です。getMaximum は、機密ラベルの内部形式でオブジェクトを返します。

public SensitivityLabel getMinimum(SensitivityLabel bounding)

getMinimum メソッドは、ユーザーが指定する 2 つのラベルのどちらに対しても優位でない、最上位ラベルとなる新しい機密ラベルオブジェクトを作成します。結果として得られるオブジェクトは、その範囲の最大下限です。getMinimum は、機密ラベルの内部形式でオブジェクトを返します。

次の表は、 getMaximum および getMinimum メソッドからのラベルの入力および出力を示します。

表 9–1 getMinimum および getMaximum メソッド

入力ラベル 

getMinimum 出力

getMaximum 出力

SECRET A B

TOP SECRET A B SA SB CC

SECRET A B

TOP SECRET A B SA SB CC

SECRET A B

TOP SECRET A SA CC

SECRET A

TOP SECRET A B SA CC

SECRET A B

TOP SECRET

SECRET

TOP SECRET A B

SECRET A

TOP SECRET B

SECRET

TOP SECRET A B