JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Trusted Extensions 開発者ガイド     Oracle Solaris 10 1/13 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  Trusted Extensions API およびセキュリティーポリシー

2.  ラベルと認可上限

3.  ラベルのコード例

4.  印刷とラベル API

5.  プロセス間通信

6.  Trusted X Window System

Trusted X Window System の環境

Trusted X Window System のセキュリティー属性

Trusted X Window System のセキュリティーポリシー

ルートウィンドウ

クライアントウィンドウ

オーバーライド/リダイレクトウィンドウ

キーボード、ポインタ、サーバー制御

選択マネージャー

デフォルトのウィンドウリソース

ウィンドウ間のデータ移動

特権操作と Trusted X Window System

Trusted Extensions X Window System API

X11 のデータ型

属性へのアクセス

ウィンドウラベルへのアクセスと設定

ウィンドウのユーザー ID へのアクセスと設定

ウィンドウプロパティーラベルへのアクセスと設定

ウィンドウプロパティーのユーザー ID へのアクセスと設定

ワークステーションの所有者 ID へのアクセスと設定

X ウィンドウサーバーの認可上限と最下位ラベルの設定

トラステッドパスウィンドウでの作業

スクリーンストライプの高さへのアクセスと設定

ウィンドウの多インスタンス化情報の設定

X11 ラベルクリッピングインタフェースでの作業

Trusted X Window System インタフェースの使用

ウィンドウ属性の取得

フォントリストによるウィンドウラベルの変換

ウィンドウラベルの取得

ウィンドウラベルの設定

ウィンドウのユーザー ID の取得

X ウィンドウサーバーワークステーションの所有者 ID の取得

7.  ラベルビルダー API

8.  信頼できる Web ガードプロトタイプ

9.  Solaris Trusted Extensions ラベル API のための試験的な Java バインディング

A.  プログラマーのリファレンス

B.  Trusted Extensions API リファレンス

索引

Trusted X Window System インタフェースの使用

以降のセクションでは、Trusted Extensions インタフェース呼び出しを使用するコード例の抜粋を示します。これらの呼び出しはセキュリティー属性を処理して、ラベルを文字列に変換します。この抜粋では、アプリケーションプログラムでもっとも一般的に管理されている属性である、ウィンドウのセキュリティー属性の処理に焦点を当てています。多くの場合、クライアントは適切な特権を使用して、別のアプリケーションで作成されたオブジェクトのセキュリティー属性を取得します。次に、クライアントはそれらの属性をチェックして、そのオブジェクトに対する操作がシステムのセキュリティーポリシーによって許可されているかどうかを判別します。このセキュリティーポリシーには、DAC ポリシーと MAC の同位書き込みおよび下位読み取りポリシーが含まれます。アクセスが拒否されると、アプリケーションは適宜エラーを生成するか、特権を使用します。特権が必要な場合については、「特権操作と Trusted X Window System」を参照してください。

Trusted Extensions API に渡すオブジェクト ID を取得する前に、そのオブジェクトを作成する必要があります。

ウィンドウ属性の取得

XTSOLgetResAttributes() ルーチンは、ウィンドウのセキュリティー関連の属性を返します。次を指定します。

クライアントはそのクライアントが作成したウィンドウのセキュリティー属性を取得するので、特権は必要ありません。

このドキュメントに記載されているプログラム例は、API の紹介を中心としており、エラーチェックを行なっていないことに注意してください。実際に作成するアプリケーションでは、適切なエラーチェックを行うようにしてください。

/* Retrieve underlying window and display IDs with Xlib calls */
   window = XtWindow(topLevel);
   display = XtDisplay(topLevel);

/* Retrieve window security attributes */
   retval = XTSOLgetResAttributes(display, window, IsWindow, &winattrs);

/* Translate labels to strings */
   retval = label_to_str(&winattrs.sl, &plabel, M_LABEL, LONG_NAMES);

/* Print security attribute information */
   printf(“Workstation Owner ID = %d\nUser ID = %d\nLabel = %s\n”,
   winattrs.ouid, winattrs.uid, string1);

printf 文によって次が出力されます。

Workstation Owner ID = 29378
User ID = 29378
Label = CONFIDENTIAL

フォントリストによるウィンドウラベルの変換

この例は、プロセスの機密ラベルを取得し、フォントリストとピクセル幅を使用してそれを文字列に変換する方法を示しています。そのラベルを表す文字列を使用してラベルウィジェットが作成されます。プロセスの機密ラベルはウィンドウの機密ラベルと同等です。したがって、特権は必要ありません。

最後の文字列がピクセル幅に収まらない場合、その文字列はクリッピングされ、クリッピングを示すインジケータが使用されます。X Window System のラベル変換インタフェースでは指定されたピクセル数にクリッピングされ、ラベルクリッピングインタフェースでは文字数にクリッピングされることに注意してください。


注 - 英語以外の言語でlabel_encodings ファイルを使用する場合、ISO 標準のコード番号が 128 以上のアクセント文字では変換が機能しないことがあります。次の例は、アジア言語の文字セットでは機能しません。


    retval = getplabel(&senslabel);

/* Create the font list and translate the label using it */
    italic = XLoadQueryFont(XtDisplay(topLevel),
        “-adobe-times-medium-i-*-*-14-*-*-*-*-*-iso8859-1”);
    fontlist = XmFontListCreate(italic, “italic”);
    xmstr = Xbsltos(XtDisplay(topLevel), &senslabel, width, fontlist, 
        LONG_WORDS);
/* Create a label widget using the font list and label text*/
    i=0;
    XtSetArg(args[i], XmNfontList, fontlist); i++;
    XtSetArg(args[i], XmNlabelString, xmstr); i++;
    label = XtCreateManagedWidget(“label”, xmLabelWidgetClass, 
        form, args, i);

ウィンドウラベルの取得

この例は、ウィンドウの機密ラベルを取得する方法を示しています。プロセスの機密ラベルはウィンドウの機密ラベルと同等です。したがって、特権は必要ありません。

/* Retrieve window label */
    retval = XTSOLgetResLabel(display, window, IsWindow, &senslabel);

/* Translate labels to string and print */
    retval = label_to_str(label, &string, M_LABEL, LONG_NAMES);
    printf(“Label = %s\n”, string);

たとえば、printf 文によって次が出力されます。

Label = PUBLIC

ウィンドウラベルの設定

この例は、ウィンドウの機密ラベルを設定する方法を示しています。新しい機密ラベルは、ウィンドウの機密ラベルおよびプロセスの機密ラベルよりも優位です。クライアントでそれよりも優位なラベルを変換する場合は、その実効セットに sys_trans_label 特権が含まれている必要があります。また、クライアントでウィンドウの機密ラベルを変更するには、win_upgrade_sl 特権が必要です。

特権の使用の詳細は、『Oracle Solaris 10 セキュリティー開発者ガイド』を参照してください。

/* Translate text string to sensitivity label */
   retval = label_to_str(string4, &label, M_LABEL, L_NO_CORRECTION, &error);

/* Set sensitivity label with new value */
   retval = XTSOLsetResLabel(display, window, IsWindow, label);

ウィンドウのユーザー ID の取得

この例は、ウィンドウのユーザー ID を取得する方法を示しています。プロセスはウィンドウリソースを所有し、同じ機密ラベルで実行されています。したがって、特権は必要ありません。

/* Get the user ID of the window */
    retval = XTSOLgetResUID(display, window, IsWindow, &uid);

X ウィンドウサーバーワークステーションの所有者 ID の取得

この例は、X ウィンドウサーバーにログインしているユーザーの ID を取得する方法を示しています。プロセスの機密ラベルはウィンドウの機密ラベルと同等です。したがって、特権は必要ありません。

/* Get the user ID of the window */
    retval = XTSOLgetWorkstationOwner(display, &uid);