ユーザー権管理は、通常はroot 役割に限定されるタスクへのユーザーアクセスを制御するためのセキュリティー機能です。セキュリティー属性、つまり権利をプロセスとユーザーに適用することによって、サイトは、スーパーユーザー特権を複数の管理者間で分割できます。プロセス権管理は、「特権」を介して実装されます。ユーザー権利管理は、あとでユーザーまたは役割に割り当てられる権利を集めた権利プロファイルによって実装されます。キオスクやゲストユーザーなどのユーザー権利も制限できます。
カーネルプロセスでの権利の説明については、プロセス権管理を参照してください。
権利を管理する手順については、 での権利の割り当て、アプリケーション、スクリプト、およびリソースへの権利の割り当て、および権利使用の管理を参照してください。
トラブルシューティング情報については、 での権利のトラブルシューティングを参照してください。
従来の UNIX システムでは、root ユーザー (スーパーユーザーとも呼ばれる) が全権を有します。多数の setuid プログラムと同様に、root として実行されるプログラムにも全権があります。root ユーザーは全ファイルの読み取り権とアクセス権、全プログラムの実行権を持ち、任意のプロセスに終了シグナルを送ることができます。実際、スーパーユーザーになるユーザーは、使用するサイトのファイアウォールの変更、監査トレールの変更、機密レコードの読み取り、ネットワーク全体の停止などを行えます。setuid root プログラムがハイジャック (強奪) されると、システム上で何が起きても不思議はありません。
ユーザー、リソース、およびプロセスへの権利の割り当てによって、オールオアナッシングのスーパーユーザーモデルのよりセキュアな代替機能が提供されます。権利により、セキュリティーポリシーをよりきめ細かいレベルで適用できます。権利では、最小特権というセキュリティー原則が使用されます。最小特権は、ジョブを行う上で必要な特権だけをユーザーに与えることを意味します。通常のユーザーには、アプリケーションの使用、実行中のジョブのステータスチェック、ファイルの印刷、新しいファイルの作成などを行うための十分な特権が与えられます。通常のユーザー権利以外の権利は、権利プロファイルにグループ化されます。スーパーユーザー権利の一部が必要なジョブを行うユーザーには、権利プロファイルを割り当てることができます。
プロファイルにグループ化された権利は、ユーザーに直接割り当てることができます。間接的に割り当てるには、役割と呼ばれる特殊アカウントを作成します。これにより、ユーザーは一部の管理特権を必要とするジョブを実行するときに役割を引き受けることができます。 には事前定義の権利プロファイルが多数用意されています。管理者は役割を作成し、プロファイルを割り当てます。
ARMOR パッケージには、一連の標準化された役割が含まれています。このパッケージを自動インストールし、役割をユーザーに割り当てることによって、ブート時に責務分離を提供するシステムを作成できます。詳細は、The Open Group Blog: UNIX® Special Edition (Dec 2015-Feb 2017) の ARMOR の記事を参照してください。このガイドの、選択した権利モデルへの準拠、および 使用例 2, ARMOR の役割の使用を参照してください。
権利プロファイルは、広範な管理権利を提供できます。たとえば System Administrator 権利プロファイルにより、アカウントはプリンタ管理や cron ジョブ管理などのセキュリティーに関連しないタスクを実行できます。権限を限定して権利プロファイルを定義することもできます。たとえば、Cron Management 権利プロファイルは at ジョブと cron ジョブを管理します。役割を作成すると、その役割に広範な管理権利または限定された権利を割り当てることができます。
次の図に、 が役割を作成して権利を信頼できるユーザーに割り振る方法を示します。スーパーユーザーは、信頼できるユーザーに権利プロファイルを直接割り当てることで、権利を割り振ることもできます。
図 1 権利の割り振り
図に示す権利モデルでは、スーパーユーザーが 3 つの役割を作成します。役割は、権利プロファイルに基づいて作成されます。続いてスーパーユーザーは、役割のタスクに適したユーザーにその役割を割り当てます。ユーザーは、各自のユーザー名でログインします。ユーザーはログイン後に、管理コマンドとグラフィカルユーザーインタフェース (GUI) ツールを実行できる役割を引き受けます。
役割は柔軟に設定できるため、さまざまなセキュリティーポリシーに対応できます。 には標準装備された役割がほとんどありませんが、役割は簡単に構成できます。使用例 2, ARMOR の役割の使用に、ARMOR 標準に基づく役割の使用方法を示します。ARMOR の役割に追加して使用する役割、または ARMOR の役割の代わりに使用する役割として、 に用意されている権利プロファイルに基づくユーザー独自の役割を作成できます。
root – root ユーザーと同等の強力な役割。ただし、ほかのすべての役割と同様に、root 役割はログインできません。通常のユーザーは、ログインしてから、割り当てられた root 役割を引き受ける必要があります。デフォルトでは、この役割は構成され初期ユーザーに割り当てられます。
System Administrator – セキュリティーに関係のない管理作業を行う役割で、権利が限定されています。この役割ではファイルシステム、メール、ソフトウェアのインストールなどを管理できます。ただし、パスワードの設定は行えません。
1 つ以上のセキュリティー役割を構成することもできます。セキュリティーは、Information Security、User Security、および Zone Security の 3 つの権利プロファイルと、それらの補助プロファイルによって処理されます。ネットワークセキュリティーは、Information Security 権利プロファイル内の補助プロファイルです。
役割は実装する必要はありません。役割は、組織のセキュリティー要件に応じて設定する機能です。1 つの方法として、セキュリティー、ネットワーク、ファイアウォール管理などの領域における専用の管理者のための役割を設定します。別の方法として、強力な管理者役割を 1 つと上級ユーザー役割を作成することもできます。この上級ユーザー役割は、自分のシステムの各部を修正することを認められたユーザーに割り当てます。また、権利プロファイルをユーザーに直接割り当てて、役割を作成しないでおくこともできます。
スーパーユーザーモデルと権利モデルは共存できます。次の表では、権利モデルで設定できる権利 (スーパーユーザーから制限された通常のユーザーまで) を順に挙げます。両モデルで監視できる管理アクションを示しています。プロセス権利、つまり特権の効果のサマリーについては、図 2, 表 2, 特権を持つシステムと特権を持たないシステムとの明白な違いを参照してください。
|
特権のないまたは権利のないという用語は には適用されません。通常のユーザープロセスを含む のすべてのプロセスには、少なくとも何らかの特権またはユーザー権利 (承認など) が設定されています。 がすべての UNIX プロセスに付与する特権の基本セットについては、プロセス権管理を参照してください。
では次の要素によってユーザー権利が適用されます。これらの権限は、許容セキュリティーポリシーまたは制限セキュリティーポリシーを適用するように構成できます。
承認 – 追加の権利を必要とするアクションのクラスをユーザーまたは役割が実行できるようにするアクセス権。たとえばデフォルトのセキュリティーポリシーでは、コンソールユーザーに対し solaris.device.cdrw 承認が付与されます。この承認によってユーザーは CD-ROM デバイスの読み取りと書き込みが行えます。承認のリストについては、auths list コマンドを使用してください。承認はカーネルではなく、ユーザーアプリケーションレベルで適用されます。ユーザー承認に関する詳細を参照してください。
特権 – コマンド、ユーザー、役割、または特定のリソース (ポートや SMF メソッドなど) に付与できる権利です。特権はカーネルで実装されます。たとえば、proc_exec 特権によってプロセスは execve() を呼び出すことができます。通常のユーザーには基本特権が与えられます。自分の基本特権を確認するには、ppriv -vl basic コマンドを実行します。詳細は、プロセス権管理を参照してください。
セキュリティー属性 – プロセスが操作を実行できるようにする属性 (権利の実装)。標準的な UNIX 環境では、セキュリティー属性によって、通常のユーザーには禁止されている操作をプロセスで実行できるようになります。たとえば、setuid プログラムと setgid プログラムはセキュリティー属性を持ちます。権利モデルでは、setuid および setgid プログラムに加えて、承認と特権がセキュリティー属性です。これらの属性、つまり権利は、ユーザーに割り当てることができます。たとえば、solaris.device.allocate 承認が与えられたユーザーは、デバイスを独占的に使用するためにそのデバイスの割り当てを行うことができます。特権をプロセスに割り当てることができます。たとえば、file_flag_set 特権を持つプロセスは、変更不可能な、リンク解除できない、または追加のみのファイル属性を設定できます。
セキュリティー属性によって権利を制限することもできます。たとえば access_times および access_tz セキュリティー属性は、特定のセキュリティー関連操作が許可される日時と、オプションで時間帯を設定します。ユーザーは直接、またはこれらのキーワードを含む認証権利プロファイルを割り当てることによって制限できます。詳細は、user_attr(5) のマニュアルページを参照してください。
特権付きアプリケーション – 権利を確認してシステム制御をオーバーライドできるアプリケーションまたはコマンド。詳細は、権利を確認するアプリケーションおよびOracle Solaris 12 セキュリティーサービス開発ガイドを参照してください。
権利プロファイル – 役割またはユーザーに割り当てることができる権利の集合です。権利プロファイルには、承認、直接割り当てられた特権、セキュリティー属性を持つコマンド、およびほかの権利プロファイルを含めることができます。別のプロファイル内に存在するプロファイルは、補助権利プロファイルと呼ばれます。権利プロファイルは、権利をグループ化する手段として便利です。ユーザーに直接割り当てるか、または役割と呼ばれる特殊アカウントに割り当てることができます。権利プロファイルのコマンドを使用できるのは、プロセスで権利が認識される場合に限ります。また、パスワードの入力が必要な場合があります。あるいは、パスワード認証がデフォルトで提供される場合があります。権利プロファイルの詳細を参照してください。
役割 – 特権付きアプリケーションを実行するための特殊な識別情報です。この特殊な識別情報を取得できるのは、あらかじめ割り当てられたユーザーだけです。役割により実行されるシステムでは、初期構成後にはスーパーユーザーが不要となることがあります。役割の詳細を参照してください。
修飾ユーザー属性 – LDAP 内のユーザーおよび役割アカウントに適用でき、したがって集中管理できるセキュリティー属性。たとえば、指定されたアクセス時間にユーザーを制限したり、指定されたシステム上の役割または権利プロファイルのみをユーザーに割り当てたりできます。修飾ユーザー属性についてを参照してください。
次の図に、ユーザー権利とプロセス権利がどのように連携するかを示します。
図 2 ユーザー権利とプロセス権利の連携
次の図は、Network Security 役割と Network Security 権利プロファイルを使用して、割り当てられた権利がどのように機能するかを示します。
図 3 ユーザー権利とプロセス権利の割り当ての例
Network Security 役割は、IPsec、wifi、およびネットワークリンクの管理に使用します。この役割は、ユーザー jdoe に割り当てられています。jdoe は、この役割に切り替えてから役割のパスワードを指定することによって、この役割になることができます。管理者は、この役割で役割のパスワードではなくユーザーパスワードでの認証を可能にするようにできます。
この図では、Network Security 権利プロファイルが Network Security 役割に割り当てられています。Network Security 権利プロファイルには、Network Wifi Security、Network Link Security、および Network IPsec Management という、順番に評価される補助プロファイルが含まれています。これらの補助プロファイルには、役割の主要なタスクを実行する権利が含まれています。
Network Security 権利プロファイルには、直接割り当てられた 3 つの承認と、セキュリティー属性を持つ 2 つのコマンドがありますが、直接割り当てられた特権はありません。補助権利プロファイルには、直接割り当てられた承認があり、それらの 2 つにはセキュリティー属性を持つコマンドがあります。
jdoe が Network Security 役割を引き受けると、シェルがプロファイルシェルに変化します。プロファイルシェルプロセスは権利の使用を評価できるため、jdoe はネットワークセキュリティーを管理できます。