ユーザーがシステムのさまざまな部分や資源にアクセスするには、アクセス権、あるいは特権付きのアプリケーション、そして、多くの場合は承認が必要となります。この章では、さらに詳しい例を挙げながら、Trusted Solaris 環境におけるデータ保護の仕組みについて説明します。ユーザーアカウント、実行可能ファイル、プロセス、データファイルにそれぞれ対応付けられたセキュリティ属性をどのように組み合わせるとデータファイルとやりとりしようとするプロセスへのアクセスが許可または拒否されるのかを、例に沿って説明していきます。
Trusted Solaris では、次の制御の組み合わせを使用してデータを保護します。
任意アクセス制御 (DAC) - ユーザーが設定する UNIX アクセス権とアクセス制御リスト
必須アクセス制御 (MAC) - サイトのセキュリティ認可上限と情報の機密度に関する規則
承認と特権 - セキュリティ管理者が付与する権利
これらの制御に含まれる要素が、広範な意味での「セキュリティ属性」です。セキュリティ属性は、Trusted Solaris 環境にあるセキュリティ関連の要素 (ファイル、ディレクトリ、プロセス、デバイス、ネットワークインタフェースなど) の属性です。セキュリティ属性は、適用先によって次のように分類されます。
ユーザーアカウントセキュリティ属性
ファイルセキュリティ属性
プロセスセキュリティ属性
次の図は、Trusted Solaris 環境でのセキュリティ属性の使用、格納、管理の全体像を示したものです。図の左側の列は、トランザクションにおいてセキュリティ属性が使用される場所を示しています。中の列は、セキュリティ属性 (および他の情報) が格納されるデータベースを示しています。右側の列は、管理者が各情報を管理するために使用するグラフィカルツールを示しています。
ユーザーのセキュリティ属性は、他のアカウント情報とともに tsoluser データベースに格納され、ユーザーマネージャと呼ばれるツールで管理されます。ユーザーアカウント情報は、7 つのカテゴリに分類され、ユーザーマネージャからアクセスできるダイアログボックスがカテゴリごとに用意されています。
「識別情報 (Identity)」 - ユーザーを識別する
「ホーム (Home)」 - ホームディレクトリ情報を割り当てる
「パスワード (Password)」 - パスワードの選択方法と変更条件を定義する
「ラベル (Labels)」 - ユーザーのラベル範囲とラベル表示を設定する
「プロファイル (Profiles)」 - ユーザーがアクセスできるアプリケーションと、それに対応するセキュリティ属性を判定する
「役割 (Roles)」 - 特別な権限を使用して、アカウントにユーザーアクセスを提供する
「アイドル (Idle)」 - ワークステーションがユーザー不在の状態になっている最長時間と、その経過後に取るべきアクションを設定する
役割は、ユーザーがログインした後に取得できる特別なユーザーアカウントにすぎません。1 つの役割にそれ以外の役割を割り当てることはできません。ユーザーが役割を取得する (役割になる) と、そのユーザーには別のセキュリティ属性のセットが設定されます。
実行可能ファイルのセキュリティ属性は、ファイル属性のサブセットであり、ファイルマネージャで管理されます。ファイルマネージャの選択メニューとポップアップメニューには、ファイルの属性、特権、機密ラベル (SL) を変更するためのコマンドが表示されます。
ユーザーがアプリケーションを選択すると、一般ユーザー、役割ユーザーの別に関わらず、そのトランザクションでは実行可能ファイルのファイルセキュリティ属性が機能します。たとえば、適切なアクセス権と優位な SL を持たないユーザーは、無効化特権を使用しない限り、実行可能ファイルにアクセスできません。
実行可能ファイルには、許容された特権と強制された特権を割り当てることもできます。許容されていない特権は、このアプリケーションでは使用できません。許容された特権は、強制された特権として割り当てられている場合、あるいは、ユーザーの実行プロファイルのどれかに定義されたアプリケーションに継承可能な特権として割り当てられている場合に使用できます。特権の詳細については、「特権」を参照してください。
トランザクションで影響を受けるデータファイルにも、ファイルセキュリティ属性が保持されます。この場合は、アクセス権と SL によって、ユーザーが呼び出したプロセスがそのデータファイルにアクセス可能かどうかが判定されます。許容された特権と強制された特権はデータファイルで使用できますが、実際には意味を成しません。これは、データファイルにとって実行権 (x) が何の意味も成さないのと同様です。
プロセス属性は、主にユーザーの実行プロファイルに定義されています。強制された特権だけは例外で、実行可能ファイルのファイル属性から取得されます。ユーザーのプロファイルには、プロセスを開始するコマンドやアクションや、関連するすべてのセキュリティ属性が定義されています。実行プロファイルは、tsolprof データベースに格納され、プロファイルマネージャで管理されます。プロファイルマネージャの表示画面は 3 種類あり、それぞれを使用して、承認、コマンド、アクションを対応するセキュリティ属性を実行プロファイルに指定します。
次の図は、データに影響を与えるプロセスを開始するトランザクションと、このとき使用する特定のセキュリティ属性のソースを示しています。
この図を解説すると、次のようになります。
1. ユーザーが Trusted Solaris 環境にログインする。Trusted Solaris 環境にログインするときには、ユーザー名とパスワードの入力が必要です。これらのエントリは passwd ファイル、shadow ファイルと照合されます。ユーザーが役割を取得した (別の役割になった) 場合は、その役割のパスワードも入力します。ユーザーの監査 UID は役割の UID ではなく、常にそのユーザーの個人 UID に設定されています。これは、監査を行うためです。
2. Trusted Solaris がユーザー属性を判定する。Trusted Solaris 環境にログインすると、選択したセッションタイプ (シングルラベルまたはマルチラベル) に応じて適切な SL に設定されたワークスペースが開きます。マルチラベルセッションを選択したユーザーは、ユーザーアカウントに割り当てられている最下位の SL から、そのセッションに許可されている最上位の SL までの範囲で、ワークスペースの SL を変更できます。ユーザーが特権を使用しなくてもアクセスできるファイルは、ユーザーの UID と GID で判定されます。ユーザーに許可されるアプリケーションやセキュリティ属性は、アカウントのプロファイルによって決まります。ユーザーが役割になった場合は、別のアプリケーションとセキュリティ属性が許可されます。
3. ユーザーがトランザクションを試行する。すべてのユーザーに All 実行プロファイルが割り当てられているサイトでは、特権を持っていないユーザーでも、すべてのコマンドまたはアクションを実行できます。プロファイルの割り当てを制限し、All を割り当てないサイトでは、禁止されているコマンドを実行しようとすると、「command not in profile」というエラーメッセージが表示されます。また、禁止されているアクションのアイコンはインタフェースに表示されません。アイコンが表示されたとしても、実際に実行しようとすると、エラーメッセージが表示されます。該当するアプリケーションがプロファイル内に見つからなかった場合、トランザクションの要求は拒否されます。
4. Trusted Solaris がサブジェクト (プロセス) の属性を判定する。ユーザーがアプリケーションを選択すると、アカウントセキュリティ属性と、アプリケーションの実行可能ファイルのセキュリティ属性によって、プロセスの機能が判定されます。プロセスのセキュリティ属性である、継承可能な特権、実効 UID (実効 GID)、最上位または最下位の機密ラベルは、アプリケーションが含まれているプロファイルに定義されています。承認は、このプロファイルからも、同じ UID に割り当てられている別のプロファイルからも取得できます。実行可能ファイルには、許容された特権と強制された特権が定義されています。
5. Trusted Solaris がオブジェクト (ファイル) 属性を取得する。データファイルへのアクセスを保護するセキュリティ属性には、所有者、グループ、ACL、アクセス権、データファイルの SL があります。
6. Trusted Solaris が属性を比較し、承認をチェックする。Trusted Solaris は、サブジェクト (プロセス) の属性とオブジェクト (ファイル) の属性を比較し、トランザクションを許可するかどうかを判定します。通常、次のような評価が行われます。
プロセスの機密ラベルはファイルのディレクトリラベルよりも優位か。優位でない場合は、そのまま優位なディレクトリにアクセスするための file_mac_search 特権がプロセスに割り当てられているか
プロセスのアクセス権を使用してファイルのディレクトリにアクセスできるか。できない場合は、適切なアクセス権を持たずにディレクトリにアクセスするための file_dac_search 特権がプロセスに割り当てられているか
プロセスの機密ラベルはファイルの機密ラベルよりも優位か。優位でない場合は、そのまま優位なファイルにアクセスするための file_mac_read 特権がプロセスに割り当てられているか
プロセスのアクセス権を使用してファイルにアクセスできるか。できない場合は、適切なアクセス権を持たずにファイルにアクセスするための file_dac_read 特権がプロセスに割り当てられているか
プロセスには特別な承認が必要か
次の 2 つの例では、Sam という名のユーザーが、tar コマンドを実行して、testFile というファイルを保存しようとしています。Sam には、tar コマンドの実行が許可されており、testFile ファイルの読み取りと書き込みに必要なアクセス権も与えられています。例 1 では、Sam は一般ユーザーとしてトランザクションを実行しようとし、失敗しています。例 2 では、Sam はシステムオペレータ (oper) になったため、トランザクションを無事完了しています。
次の図を見ると、Sam のユーザーアカウントには、 All 実行プロファイルが割り当てられています。このプロファイルは、特権を何も与えずに、tar コマンドへのアクセスを許可します。
したがって、Sam は tar コマンドを使用できるため、トランザクションは手順 3 から手順 5 まで進みます。ここでサブジェクト (tar プロセス) とオブジェクト (testFile ファイル) のセキュリティ属性がそれぞれ収集され、比較されます。この例では、次のような条件評価が行われます。
プロセスの SL はファイルとそのディレクトリの SL よりも優位か - セッションを開始したときの Sam の選択により、tar プロセスの SL は「C」になっています。testFile ファイルとそのディレクトリの SL も「C」であるため、このプロセスの SL は優位 (この場合は同等) であるといえます。したがって、プロセスには、ディレクトリを読み取るための file_mac_search 特権もファイルを読み取るための file_mac_read 特権も必要ありません。
プロセスのアクセス権を使用してファイルのディレクトリにアクセスできるか - Sam はファイルとディレクトリの所有者であるため、ディレクトリにアクセスするための file_dac_search 特権もファイルを読み取るための file_dac_read 特権も必要ありません。
プロセスには特別な承認が必要か - tar コマンドを使用するには、磁気テープデバイスが必要です。ところが、Sam は管理者しかデバイスの割り当てができないセキュリティ保護された環境で作業しており、デバイス割り当て承認を持っていないため、トランザクションはここで中断されてしまいます。
Sam がシステムオペレータ (oper) になると、次の図に示すようにトランザクションは成功します。
システムオペレータ (oper) には、他のプロファイルとともに Basic Media 実行プロファイルが割り当てられています。この実行プロファイルには、tar コマンドのほか、file_dac_search、file_dac_read、file_mac_read などの特権と、ADMIN_LOW から ADMIN_HIGH までの SL 範囲が指定されています。この例では、tar コマンドが許可されているため、プロセスは手順 3 から 5 まで進みます。このトランザクションは、次のような条件評価に合格しています。
プロセスの SL はファイルとそのディレクトリの SL よりも優位か - tar プロセスの SL は ADMIN_LOW になっています。これは、Sam がシステムオペレータになったときのデフォルトの SL です。testFile ファイルとそのディレクトリの SL は「C」なので、tar プロセスの方がレベルが低くなります。したがって、file_mac_search と file_mac_read 特権を使用する必要があります。
プロセスのアクセス権を使用してファイルのディレクトリにアクセスできるか - システムオペレータはディレクトリもファイルも所有していないため、プロセスは file_dac_search と file_dac_read 特権を使用します。
プロセスには特別な承認が必要か - 一般ユーザーとして実行に失敗した例と異なり、Basic Media 実行プロファイルには、デバイス割り当て承認も定義されています。したがって、Sam は、システムオペレータとしてデバイスマネージャから磁気テープを割り当て、tar トランザクションを実行することができます。