レベルとは、機密ラベル、情報ラベル、認可上限のいずれかの格付けとコンパートメントセットのことで、データ型 blevel_t で定義されます。情報ラベルは、biltolev(3) ルーチンを使用してレベルに変換します。2 つのレベルには、同等、一方が他方より優位、一方が他方より完全に優位などの関係があります。
同等 - 2 つのレベルの格付けの階層の位置が数学的に等しいとき、この 2 つのレベルは「同等」です。このとき、一方のコンパートメントは他方のコンパートメントをすべて含み、その以外のコンパートメントを含んではいけません。
優位 - 格付けの階層において一方のレベルの格付けが他方のレベルの格付けより数学的に大きいか等しく、また、一方のコンパートメントが他方のコンパートメントをすべて含むとき、このレベルは他方のレベルより「優位」です。
完全な優位 - レベル 1 がレベル 2 より優位であるが、レベル 2 と等しくない場合、レベル 1 はレベル 2 より完全に優位であると言います。
次の例は、プロセス認可上限をファイルの CMW ラベルの機密ラベル部と照らし合わせ、その関係 (同等、優位、完全な優位のいずれか) を確認します。プロセス認可上限は TOP SECRET A B、ファイルの CMW ラベルの機密ラベル部は Confidential であり、このプロセスは Confidential で動作しています。
#include <tsol/label.h> main() { int retval; bclear_t pclear; bclabel_t cmwlabel; bslabel_t senslabel; retval = getclearance(&pclear); retval = getcmwlabel("/export/home/zelda/afile", &cmwlabel); getcsl(&senslabel, &cmwlabel); retval = blequal(&pclear, &senslabel); printf("Clearance equals sensitivity label? %d¥n", retval); retval = bldominates(&pclear, &senslabel); printf("Clearance dominates sensitivity label? %d¥n", retval); retval = blstrictdom(&pclear, &senslabel); printf("Clearance strictly dominates sensitivity label? %d¥n", retval); }
printf(1) 文によって、次のように出力されます。0 以外は true で、0 は false です。
Clearance equals sensitivity label? 0
Clearance dominates sensitivity label? 1
Clearance strictly dominates sensitivity label? 1