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

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

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 ロールにマッピングできます。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
ただし、このデフォルトリストは変更可能で、あらゆるnative 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キャッシングにより、マッピングがオフラインでも動作できるようになります。