Red Hat Training

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

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

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

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

Identity Management は、システムで SELinux コンテキストを作成または変更しません。むしろ、システムの SELinux ユーザーに、ドメインの IdM ユーザーをマッピングする基準として、ターゲットホストの既存のコンテキストに一致する可能性がある文字列を使用します。
セキュリティーが強化した Linux は、システム上のその他のリソースとプロセスが対話する仕組みに必須のアクセスコントロールであるカーネルレベルを定義します。システムで想定されるプロセスの挙動と、そのセキュリティーへの影響を基に、ポリシーと呼ばれる特定のルールが設定されます。これは、主にファイルの所有権およびユーザー ID を対象とする、高レベルの任意アクセス制御とは対照的です。システムのすべてのリソースには、コンテキストが割り当てられます。リソースには、ユーザー、アプリケーション、ファイル、およびプロセスが含まれます。
システムユーザーが、SELinux ロール に関連付けられます。このロールには、マルチレイヤ―セキュリティーコンテキスト (MLS) とマルチレイヤ―カテゴリーセキュリティーコンテキスト (MCS) の両方が割り当てられます。MLS コンテキストおよび MCS コンテキストでは、ユーザーがシステム上の特定のプロセス、ファイル、および操作にのみアクセスできるように、ユーザーを制限しています。
利用可能な SELinux ユーザーのリストを表示するには、以下のコマンドを実行します。
[root@server1 ~]# semanage user -l

                Labelling  MLS/       MLS/
SELinux User    Prefix     MCS Level  MCS Range                      SELinux Roles

guest_u         user       s0         s0                             guest_r
root            user       s0         s0-s0:c0.c1023                 staff_r sysadm_r system_r unconfined_r
staff_u         user       s0         s0-s0:c0.c1023                 staff_r sysadm_r system_r unconfined_r
sysadm_u        user       s0         s0-s0:c0.c1023                 sysadm_r
system_u        user       s0         s0-s0:c0.c1023                 system_r unconfined_r
unconfined_u    user       s0         s0-s0:c0.c1023                 system_r unconfined_r
user_u          user       s0         s0                             user_r
xguest_u        user       s0         s0                             xguest_r
Red Hat Enterprise Linux の SELinux の詳細は、Red Hat Enterprise Linux 7 SELinux ユーザーおよび管理者のガイド を参照してください。
SELinux のユーザーとポリシーは、ネットワークレベルではなく、システムレベルで機能します。つまり、SELinux ユーザーは、各システムで個別に設定されます。これは多くの状況で許容されますが、SELinux には共通の定義済みシステムユーザーと SELinux 対応サービスが独自のポリシーを定義しているため、リモートユーザーとシステムがローカルリソースにアクセスする際に問題が発生します。リモートのユーザーとサービスには、実際の SELinux ユーザーとロールの内容を知らなくても、デフォルトのゲストコンテキストを割り当てることができます。
Identity Management は、ID ドメインをローカルの SELinux サービスと統合できます。Identity Management では、IdM ユーザーを、設定した SELinux ロールホストごと、ホストグループごと にマッピングするか、HBAC ルール に基づいてマッピングできます。SELinux および IdM ユーザーのマッピングにより、ユーザー管理が改善されます。
  • リモートユーザーは、自身の IdM グループ割り当てに基づいて、適切な SELinux ユーザーコンテキストが付与されます。これにより管理者は、ローカルアカウントを作成したり SELinux を再構築することなく一貫して同じポリシーを同じユーザーに適用することもできるようになります。
  • ユーザーに関連付けられた SELinux コンテキストは集中管理されます。
  • SELinux ポリシーは、IdM ホストベースのアクセス制御ルールのようなドメイン全体のセキュリティーポリシーと関連付けて計画することができます。
  • 管理者は環境全体にわたる可視性を持ち、SELinux でユーザーやシステムが割り当てられる方法を制御します。
SELinux ユーザーマップでは、システムの SELinux ユーザー、IdM ユーザー、および IdM ホストの 3 つの間に存在する 2 つの関係が定義されます。まず、SELinux ユーザーマップでは、SELinux ユーザーと IdM ホスト (ローカルまたはターゲットシステム) の間の関係を定義します。次に、SELinux ユーザーと IdM ユーザーの関係を定義します。
この組み合わせにより、管理者はアクセスするホストによって、同一の IdM ユーザーに異なる SELinux ユーザーを設定することが可能になります。
SELinux のマッピングルールの中核となるのは、SELinux システムユーザーです。各マップは、最初に SELinux ユーザーに関連付けられます。マッピングに利用できる SELinux ユーザーは、IdM ユーザーで設定されます。そのため、中央のユニバーサルなリストがあります。この方法で、IdM は、認識している SELinux ユーザーのセットを定義し、ログイン時に IdM ユーザーと関連付けることができます。デフォルトでは、次のようになります。
  • unconfined_u (IdM ユーザーのデフォルトとしても使用されます)
  • guest_u
  • xguest_u
  • user_u
  • staff_u
ただし、このデフォルトリストは変更でき、ネイティブの SELinux ユーザー (「Identity Management、SELinux、およびユーザーのマッピング」 を参照) は、集約 IdM SELinux ユーザーリストに追加または削除できます。
IdM サーバー設定では、各 SELinux ユーザーは、ユーザー名だけでなく、その MLS および MCS の範囲である SELinux_user:MLS[:MCS] で設定されます。IPA サーバーは、マップの設定時にこの形式を使用して SELinux ユーザーを特定します。
IdM のユーザーおよびグループの設定は柔軟性が非常に高くなります。ユーザーとホストは、明示的かつ個別に SELinux ユーザーマップに割り当てることができます。また、ユーザーグループもしくはホストグループを明示的にマップに割り当てることもできます。
また、SELinux マッピングルールをホストベースのアクセス制御ルールに関連付けて、管理を容易にし、2 つの場所で同じルールを重複しないようにしてルールの同期を維持することもできます。ホストベースのアクセス制御ルールがユーザーとホストを定義する限り、SELinux ユーザーマップに使用することができます。(31章ホストベースのアクセス制御の設定で説明しているように) ホストベースのアクセス制御ルールは、SELinux ユーザーマップと IdM 内の他のアクセス制御の統合に役立ち、ローカルセキュリティーのコンテキストを定義するほか、リモートユーザーにおけるホストベースのユーザーアクセスの制限や許可にも役立ちます。
注記
ホストベースのアクセス制御ルールが SELinux ユーザーマップに関連付けられている場合、このルールが SELinux ユーザーマップ設定から除かれるまで削除することはできません。
SELinux ユーザーマップは、System Security Services Daemon (SSSD) および pam_selinux モジュールと機能します。リモートユーザーがマシンにログインを試みると、SSSD はその IdM ID プロバイダーをチェックして、SELinux マップを含むユーザー情報を収集します。すると PAM モジュールはこのユーザーを処理し、適切な SELinux ユーザーコンテキストを割り当てます。SSSD キャッシュを使用すると、マッピングがオフラインで機能できます。