Solaris Trusted Extensions 開発ガイド

2 つのラベル間の関係の判別

アプリケーションが、異なる機密ラベルでデータにアクセスする場合、アクセス操作を許可する前に、コードを検査してプロセスラベルとデータラベルの関係が正しいことを確認します。アクセスされるオブジェクトの機密ラベルを検査して、システムによってアクセスが許可されるかどうかを判別します。

次のコーディング例は、2 つの機密ラベルの等位、優位、および厳密優位を検査する方法を示します。プログラムは、ファイルのラベルに対してプロセスのラベルが優位であるか、または等位であるかを検査します。

#include <stdio.h>
#include <stdlib.h>

#include <tsol/label.h>

main(int argc, char *argv[])
{
   m_label_t *plabel;
   m_label_t *flabel;

   plabel = m_label_alloc(MAC_LABEL);
   flabel = m_label_alloc(MAC_LABEL);

   if (getplabel(plabel) == -1) {
      perror("getplabel");
      exit(1);
   }
   if (getlabel(argv[1], flabel) == -1) {
      perror("getlabel");
      exit(1);
   }

   if (blequal(plabel, flabel)) {
      printf("Labels are equal\n");
   }
   if (bldominates(plabel, flabel)) {
      printf("Process label dominates file label\n");
   }
   if (blstrictdom(plabel, flabel)) {
      printf("Process label strictly dominates file label\n");
   }

   m_label_free(plabel);
   m_label_free(flabel);

   return (0);
}

このプログラムによって出力されるテキストは、次のように、プロセスに渡されたファイルのラベルを基準にしたプロセスのラベルに依存します。