マルチレベル・セキュア環境内のアプリケーションを計画する際には、まず、ソケット・アプリケーションに適用されるマルチレベル・セキュリティー・プログラミング規則を理解しておく必要があります。
- トラステッド・ネットワーク管理サーバー・アプリケーション
- DNS やルーティングなど、インフラストラクチャーの一部となるアプリケーション。配信される情報は機密情報ではなく、多数のセキュリティー・ラベルからアクセス可能である必要があります。
- トラステッド・マルチレベル・セキュア・サーバー・アプリケーション
- ポート・オブ・エントリーを使用したログイン・プロセスを持つアプリケーション。これらのアプリケーションは、クライアントのログイン ID の下ですべてのリソース・アクセスを行い、さまざまなクライアント・タスク (FTP や otelnet など) によってアクセスされる情報の分離を維持します。
ID を変更するプロセス・アプリケーションは、以下のアクションを実行する必要があります。
- ID の変更 (親、例えば INETD によって行われる場合もある) に先立って _poe() を発行する。
- fork、spawn、または exec に先立って親プロセス内で ID を変更し、プロセス間通信 (IPC) リソースに適切なラベルが付くことを保証する。
- ID 変更の後、ユーザー・リソースにアクセスする。
- 不要な親リソースを exec に先立ってクローズする。
スレッド上で ID を設定するスレッド化アプリケーションは、以下のアクションを実行する必要があります。
- _pthread_security_np() に先立って、処理スレッド上に _poe() を発行する。
- 関連するすべての処理が、同じ ID を持つスレッド上で発生することを保証する。
- スレッド上で、spawn、fork、または exec に先立って ID を変更する。
- スレッド上で ID 変更の後、ユーザー・リソースにアクセスする。
- 他のスレッドのリソースにはアクセスしない。
- スレッドから ID を除去する前に、すべてのユーザー・リソースをクローズする。
- 新しい作業を獲得する前に、スレッドからユーザー ID を削除する。
すべての SYSMULTI アプリケーションは、ユーザー・データをサーバー・リソースまたはその他のユーザー・リソース上に置かないことを保証する必要があります。
デバッグ、ログ、またはトレースの出力に特に注意を払ってください。
多数のサーバーは、出力にユーザー・レベル・データを含んでいます。
- トラステッド単一レベル・セキュア・サーバー・アプリケーション
- TFTP や HTTP など、サーバーの ID の下でアクセスされた機密情報を配信するアプリケーションと、SMTP や MVSHRD など、サーバー の ID の下でポート・オブ・エントリーやアクセス・クライアント情報を使用しない、ログイン・プロセスを持つアプリケーション。
- ネットワーク管理コマンドおよびクライアント・アプリケーション
- ネットワーク・インフラストラクチャーの照会、構成、または診断に使用され、特殊な制御と特権を必要とするローカル・コマンド。
- IBM® zEnterprise® System (zEnterprise) プラットフォーム管理アプリケーション
- プラットフォーム管理機能を実行する zEnterprise 許可アプリケーション。これらのアプリケーションの詳細については、「IBM z Systems™ Ensemble Planning Guide」を参照してください。
- 一般的なユーザー・コマンドとクライアント・アプリケーション
- 呼び出し側ユーザーのセキュリティー環境の下でリソース (ネットワーク・リソースを含む) にアクセスするローカル・コマンド。
- ネットワーク管理インターフェース
- 機密情報を提供するアプリケーション・プログラミング・インターフェース。
- サポートされないアプリケーション
- 検査が済んでいないか、検査の結果、マルチレベル・セキュア環境内でトラステッドでないアプリケーション。