Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第31章 SELinux ユーザーマップの定義

Security-enhanced Linux (SELinux) は、システムユーザーがどのプロセス、ファイル、ディレクトリー、およびシステム設定にアクセスできるかを指定するルールを設定します。システム管理者とシステムアプリケーションの両方が、ユーザーアクセスと他のアプリケーションからのアクセスを許可、拒否する セキュリティーコンテキストを定義することができます。
Identity Management ドメインでの集中化されたセキュリティーポリシー定義の一部として、Identity Management は IdM ユーザーを (既存の) SELinux ユーザーコンテキストにマッピングして、定義された SELinux ポリシーに基づいてホストごとに IdM ドメイン内のクライアントおよびサービスへのアクセスを許可もしくは制限します。

31.1. Identity Management、SELinux、およびユーザーのマッピング

注記

Identity Management は、システム上の SELinux コンテキストの作成や編集は行いません。既存のコンテキストをベースとして使用し、(ドメイン内の) IdM ユーザーを (システム上の) SELinux ユーザーにマッピングします。
Security-enhanced Linux は、ユーザー、プロセス、およびアプリケーションがシステム上の他のリソースと対話する方法に関するカーネルレベルの必須アクセス制御です。コンテキスト と呼ばれるこれらの対話のルールはシステム上の異なるオブジェクトのデータと動作の特徴を読み取り、各オブジェクトのセキュリティーに関する影響に基づいて ポリシー と呼ばれるルールを設定します。これは、データの重要度やアプリケーションの動作を勘案することなく、主にファイルの所有権やユーザー ID について憂慮する高レベルの任意アクセス制御と対照的です。システム上のリソース (ユーザー、アプリケーション、ファイル、プロセス) はすべてにコンテキストが割り当てられます。
システムユーザーは、SELinux ロール に関連付けられます。ロールには、多層セキュリティーコンテキスト (MLS) と複数カテゴリーセキュリティーコンテキスト (MCS) の両方が割り当てられます。MLS/MCS コンテキストは、ユーザーをシステム上でアクセス可能なプロセス、ファイル、およびオペレーションに 限定します。
SELinux マネージャーの SELinux ユーザー

図31.1 SELinux マネージャーの SELinux ユーザー

これについてはすべて、『Red Hat Enterprise Linux 6 Security-Enhanced Linux ユーザーガイド』で詳述されています。
SELinux のユーザーとポリシーは、ネットワークレベルではなく、システムレベルで機能します。つまり、SELinux ユーザーは、各システムで個別に設定されます。SELinux には共通の定義済みシステムユーザーがあり、SELinux 対応サービスが独自のポリシーを定義しているので、これは多くの状況では受け入れられるものですが、リモートユーザーやローカルリソースにアクセスするシステムについては問題があります。リモートのユーザーとサービスは、それらの本来の SELinux ユーザーやロールについての情報が十分にない状態で、デフォルトのゲストコンテキストにシャッフルされる場合があります。
Identity Management が ID ドメインをローカルの SELinux サービスにうまく統合できるのはこのような状態です。Identity Management は IdM ユーザーを ホストごとの設定済み SELinux ロールにマッピングします。SELinux と IdM のユーザーをマッピングすることで、ユーザー管理が改善されます。
  • リモートユーザーは、自身の IdM グループ割り当てに基づいて、適切な SELinux ユーザーコンテキストが提供されます。これにより管理者は、ローカルアカウントを作成したり SELinux を再構築することなく一貫して同じポリシーを同じユーザーに適用することもできるようになります。
  • ホストが IT 環境に追加されたり、ユーザーが追加、削除、変更されたりすると、ローカルシステムを編集することなく、SELinux ユーザーは自動的に更新されます。
  • SELinux ポリシーは、IdM ホストベースのアクセス制御ルールのようなドメイン全体のセキュリティーポリシーと関連付けて計画することができます。
  • 管理者は環境全体にわたる可視性を持ち、SELinux でユーザーやシステムが割り当てられる方法を制御します。
SELinux ユーザーマップは、システムにおける SELinux ユーザー、IdM ユーザー、および IdM ホスト、という 3 つの部分で構成されています。これらは 2 つの別個の関係を定義します。1 つめは、特定ホスト (ローカルまたはターゲットシステム) 上の SELinux ユーザーのマップを定義します。2 つ目は、SELinux ユーザーと IdM ユーザーのマップを定義します。
この組み合わせにより、管理者はアクセスするホストによって、同一の IdM ユーザーに異なる SELinux ユーザーを設定することが可能になります。
SELinux ユーザーマップは、System Security Services Daemon (SSSD) および pam_selinux モジュールと機能します。リモートユーザーがマシンにログインを試みると、SSSD はその IdM ID プロバイダーをチェックして、SELinux マップを含むユーザー情報を収集します。すると PAM モジュールはこのユーザーを処理し、適切な SELinux ユーザーコンテキストを割り当てます。
SELinux マッピングルールの中心となるのは、SELinux システムユーザーです。各マップは、まず SELinux ユーザーに関連付けられます。マッピングに利用可能な SELinux ユーザーは IdM サーバーで設定されるので、集中化された共通のリストがあることになります。これらの SELinux ユーザーは、IdM ドメイン内のそれぞれのホストで設定されたものです。デフォルトでは、以下の 5 つの共通 SELinux ユーザーが定義されています。
  • unconfined_u (IdM ユーザーにデフォルトとして使用)
  • guest_u
  • xguest_u
  • user_u
  • staff_u
IdM サーバー設定では、各 SELinux ユーザーは ユーザー名と MLS/MCS の範囲で SELinux_username:MLS[:MCS] と設定され、マップ設定時にはこの形式を使用して SELinux ユーザーを識別します。
IdM ユーザーとホストの設定は、非常に柔軟性があります。ユーザーとホストは、明示的かつ個別に SELinux ユーザーマップに割り当てることができます。また、ユーザーグループもしくはホストグループを明示的にマップに割り当てることもできます。
ホストベースのアクセス制御ルールを使用することで、新たなセキュリティー層が追加されます。ホストベースのアクセス制御ルールでユーザーとホストが定義されていれば、これを SELinux ユーザーマップに使用することが可能です。(「30章ホストベースのアクセス制御の設定」で説明しているように) ホストベースのアクセス制御ルールは、SELinux ユーザーマップと IdM 内の他のアクセス制御の統合に役立ち、ローカルセキュリティーのコンテキストを定義するほか、リモートユーザーにおけるホストベースのユーザーアクセスの制限や許可にも役立ちます。

注記

ホストベースのアクセス制御ルールが SELinux ユーザーマップに関連付けられている場合、このルールが SELinux ユーザーマップ設定から除かれるまで削除することはできません。