Trusted Solaris 開発ガイド

2 つのレベル間の関係の確認

レベルとは、機密ラベル、情報ラベル、認可上限のいずれかの格付けとコンパートメントセットのことで、データ型 blevel_t で定義されます。情報ラベルは、biltolev(3) ルーチンを使用してレベルに変換します。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