JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris の管理: セキュリティーサービス     Oracle Solaris 11 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

パート I セキュリティーの概要

1.  セキュリティーサービス (概要)

パート II システム、ファイル、およびデバイスのセキュリティー

2.  マシンセキュリティーの管理 (概要)

3.  システムアクセスの制御 (タスク)

4.  ウイルススキャンサービス (タスク)

5.  デバイスアクセスの制御 (タスク)

6.  基本監査報告機能の使用方法 (タスク)

7.  ファイルアクセスの制御 (タスク)

パート III 役割、権利プロファイル、特権

8.  役割と特権の使用 (概要)

役割に基づくアクセス制御 (概要)

RBAC: スーパーユーザーモデルの代替機能

RBAC の要素と基本概念

特権エスカレーション

RBAC の承認

承認と特権

特権付きアプリケーションと RBAC

UID と GID を確認するアプリケーション

特権を確認するアプリケーション

承認を確認するアプリケーション

RBAC の権利プロファイル

RBAC の役割

プロファイルシェルと RBAC

ネームサービススコープと RBAC

セキュリティー属性を直接割り当てる場合に考慮すべきセキュリティー事項

セキュリティー属性を直接割り当てる場合の操作性に関する注意事項

特権 (概要)

カーネルプロセスを保護する特権

特権の種類

特権を使用したシステムにおける管理上の相違点

特権とシステム資源

特権の実装方法

プロセスが特権を取得する方法

特権の割り当て

ユーザーまたは役割の特権の拡張

ユーザーまたは役割の特権の制限

スクリプトへの特権の割り当て

特権とデバイス

特権とデバッグ

9.  役割に基づくアクセス制御の使用 (タスク)

10.  Oracle Solaris のセキュリティー属性 (参照)

パート IV 暗号化サービス

11.  暗号化フレームワーク (概要)

12.  暗号化フレームワーク (タスク)

13.  鍵管理フレームワーク

パート V 認証サービスと安全な通信

14.  ネットワークサービスの認証 (タスク)

15.  PAM の使用

16.  SASL の使用

17.  Secure Shell の使用 (タスク)

18.  Secure Shell (参照)

パート VI Kerberos サービス

19.  Kerberos サービスについて

20.  Kerberos サービスの計画

21.  Kerberos サービスの構成 (タスク)

22.  Kerberos エラーメッセージとトラブルシューティング

23.  Kerberos 主体とポリシーの管理 (タスク)

24.  Kerberos アプリケーションの使用 (タスク)

25.  Kerberos サービス (参照)

パート VII Oracle Solaris での監査

26.  監査 (概要)

27.  監査の計画

28.  監査の管理 (タスク)

29.  監査 (参照)

用語集

索引

役割に基づくアクセス制御 (概要)

役割に基づくアクセス制御 (RBAC) は、通常は root 役割に限定されているタスクへのユーザーアクセスを制御するためのセキュリティー機能です。RBAC では、プロセスやユーザーにセキュリティー属性を適用することで、スーパーユーザーの権限を複数の管理者に分けることができます。プロセス権管理は、「特権」を介して実装されます。ユーザー権管理は RBAC によって行われます。

RBAC: スーパーユーザーモデルの代替機能

従来の UNIX システムでは、root ユーザー (スーパーユーザーとも呼ばれる) が全権を有します。root として実行されるプログラム、または setuid プログラムにも全権があります。root ユーザーは全ファイルの読み取り権とアクセス権、全プログラムの実行権を持ち、任意のプロセスに終了シグナルを送ることができます。実際、スーパーユーザーになるユーザーは、使用するサイトのファイアウォールの変更、監査トレールの変更、機密レコードの読み取り、ネットワーク全体の停止などを行えます。setuid プログラムがハイジャック (強奪) されると、システム上で何が起きても不思議はありません。

役割に基づくアクセス制御 (RBAC) は、絶対的なスーパーユーザーモデルに代わるより厳密な機密保護機能です。RBAC を使用することで、セキュリティーポリシーをきめ細かく適用できます。RBAC では、「最小特権」というセキュリティー原則が使用されます。最小特権は、ジョブを行う上で必要な特権だけをユーザーに与えることを意味します。通常のユーザーには、アプリケーションの使用、実行中のジョブのステータスチェック、ファイルの印刷、新しいファイルの作成などを行うための十分な特権が与えられます。通常のユーザー権限を越える権限は、権利プロファイルにグループ化されます。スーパーユーザー権限の一部が必要なジョブを行うユーザーは、適切な権利プロファイルを含む役割になります。

RBAC では、スーパーユーザー権限を「権利プロファイル」としてまとめます。これらの権利プロファイルは、「役割」と呼ばれる特殊なユーザーアカウントに割り当てられます。ユーザーは、スーパーユーザー権限の一部を必要とするジョブを行う場合に役割になることができます。Oracle Solaris ソフトウェアには、あらかじめ定義された権利プロファイルが用意されています。管理者は役割を作成し、プロファイルを割り当てます。

権利プロファイルを使用することで、さまざまな権限を提供できます。たとえば、System Administrator 権利プロファイルを使用すると、アカウントはプリンタ管理や cron ジョブなどのセキュリティーに関連しないタスクを実行できます。権限を限定して権利プロファイルを定義することもできます。たとえば、Cron Management 権利プロファイルは at ジョブと cron ジョブを管理します。役割を作成するときは、その役割に広い権限または狭い権限、あるいはその両方を割り当てることができます。

次の図は、RBAC により、信頼できる相手に権限をどのように分散できるかを示しています。

図 8-1 RBAC による権限の分散

image:図は権限を表す鍵を示しています。別の機能を実行する役割になっているユーザーには、異なる鍵が割り当てられます。

RBAC モデルでは、スーパーユーザーが 1 つ以上の役割を作成します。役割は、権利プロファイルに基づいて作成されます。続いてスーパーユーザーは、役割のタスクに適したユーザーにその役割を割り当てます。ユーザーは、各自のユーザー名でログインします。ログイン後ユーザーは、限定された管理コマンドとグラフィカルユーザーインタフェース (GUI) ツールを実行できる役割を引き受けます。

役割は柔軟に設定できるため、さまざまなセキュリティーポリシーに対応できます。Oracle Solaris には標準装備された役割がほとんどありませんが、さまざまな役割を容易に構成できます。ほとんどの役割は、同じ名前の権利プロファイルに基づいて構成できます。

1 つ以上のセキュリティー役割を構成することもできます。セキュリティーは、Information Security、User Security、および Zone Security の 3 つの権利プロファイルと、それらの補助プロファイルによって処理されます。ネットワークセキュリティーは、Information Security 権利プロファイル内の補助プロファイルです。

これらの役割を実装する必要はありません。役割は、組織のセキュリティー要件に応じて設定する機能です。1 つの方法として、セキュリティー、ネットワーク、ファイアウォール管理などの領域における専用の管理者のための役割を設定します。別の方法として、強力な管理者役割を 1 つと上級ユーザー役割を作成することもできます。この上級ユーザー役割は、自分のシステムの各部を修正することを認められたユーザーに割り当てます。

スーパーユーザーモデルと RBAC モデルは共存できます。次の表では、RBAC モデルで設定できる権限 (スーパーユーザーから制限された通常のユーザーまで) を順に挙げ、両モデルで監視できる管理アクションを示しています。システム上での特権の効果だけをまとめた情報としては、表 8-2 を参照してください。

表 8-1 スーパーユーザーモデルと特権を使用した RBAC モデルとの対比

システムにおけるユーザー権限
スーパーユーザーモデル
RBAC モデル
すべてのスーパーユーザー権限を持つスーパーユーザーになる
可能
可能
すべてのユーザー権限を持つユーザーとしてログインする
可能
可能
権限が限定されたスーパーユーザーになる
不可能
可能
ユーザーとしてログインし、散発的にスーパーユーザー権限を持つ
可能 (setuid プログラムのみ)
可能 (setuid プログラム、および RBAC を使用)
すべてのスーパーユーザー権限ではなく、一部の管理権限だけを持つユーザーとしてログインする
不可能
可能 (RBAC を使用、および直接割り当てられた特権と承認を使用)
通常のユーザーよりも少ない権限を持つユーザーとしてログインする
不可能
可能 (RBAC を使用、および削除された特権を使用)
スーパーユーザーの処理を監視する
可能 (su コマンドを監査することによって)
可能 (pfexec() への呼び出しを監査することによって)

また、root 役割を引き受けたユーザーの名前も監査トレールに含まれる

RBAC の要素と基本概念

Oracle Solaris の RBAC モデルでは、次の要素が導入されました。

次の図では、各 RBAC 要素の動作を示します。

図 8-2 RBAC 要素の関係

image:この図は、セキュリティー属性を含む権利プロファイルが、ある役割になっている (最終的に権限を取得する) ユーザーにどのように割り当てられるかを示しています。

次の図は、Network Security 役割と Network Security 権利プロファイルを使用して、RBAC 関係を示したものです。

図 8-3 RBAC 要素の関係の例

image:次の段落で、この図について説明します。

Network Security 役割は、IPsec、wifi、およびネットワークリンクを管理するために使用されます。この役割は、ユーザー jdoe に割り当てられています。jdoe は、この役割に切り替えて役割のパスワードを入力することにより、この役割を引き受けることができます。管理者は、役割のパスワードではなくユーザーパスワードを受け入れるようにこの役割をカスタマイズできます。

図 8-3 では、Network Security 権利プロファイルは Network Security 役割に割り当てられています。Network Security 権利プロファイルには、Network Wifi Security、Network Link Security、および Network IPsec Management という、順番に評価される補助プロファイルが含まれています。これらの補助プロファイルが役割のプライマリタスクに追加されます。

Network Security 権利プロファイルには、直接割り当てられた 3 つの承認と、セキュリティー属性を持つ 2 つのコマンドがありますが、直接割り当てられた特権はありません。補助権利プロファイルには、直接割り当てられた承認があり、それらの 2 つにはセキュリティー属性を持つコマンドがあります。Network Security 役割では、jdoe はこれらのプロファイル内で割り当てられたすべての承認を持ち、これらのプロファイル内のセキュリティー属性を持つすべてのコマンドを実行できます。jdoe はネットワークセキュリティーを管理できます

特権エスカレーション

Oracle Solaris では、管理者がセキュリティーを構成するとき、高い柔軟性が提供されます。 ソフトウェアがインストールされた状態では、特権エスカレーションは許可されません。 特権エスカレーションは、意図していたよりも多くの管理権限がユーザーまたはプロセスに与えられたときに発生します。このため、特権は単なる特権ではなく、あらゆるセキュリティー属性を意味します。

Oracle Solaris ソフトウェアには、root 役割にのみ割り当てられるセキュリティー属性が含まれています。ほかのセキュリティー保護が存在する状態で、root 役割用に設計された属性を管理者がほかのアカウントに割り当てる可能性がありますが、このような割り当ては慎重に行う必要があります。

次の権利プロファイルと一連の承認は、root 以外のアカウントの特権をエスカレートできます。

特権セキュリティー属性に影響するエスカレーションについては、「特権エスカレーションの防止」を参照してください。

RBAC の承認

「承認」は、役割またはユーザーに許可できる個別の権限です。承認は、ユーザーアプリケーションレベルでポリシーを適用します。

承認は役割またはユーザーに直接割り当てることができますが、承認を権利プロファイルに入れておくことが最善の方法です。権利プロファイルは役割に追加され、役割がユーザーに割り当てられます。例については、図 8-3を参照してください。

delegate または assign という単語を含む承認を使用すると、ユーザーまたは役割は、セキュリティー属性をほかのユーザーに割り当てることができます。

特権のエスカレーションを回避するために、アカウントに assign 承認を割り当てないでください。

solaris.*.assign 承認は提供されていますが、どのプロファイルにも含まれていません。デフォルトでは、solaris.*.assign 承認を持つのは root 役割だけです。

RBAC に準拠したアプリケーションは、ユーザーの承認を確認してから、アプリケーションまたはアプリケーション内の特定の操作に対するアクセス権を許可します。この承認の確認は、従来の UNIX アプリケーションが行なっていた UID=0 の確認に代わるものです。承認についての詳細は、次のセクションを参照してください。

承認と特権

特権は、カーネル内でセキュリティーポリシーを適用します。承認と特権の違いは、セキュリティーポリシーが適用されるレベルにあります。プロセスに適切な特権がないと、特権化された処理の実行がカーネルによって防止される可能性があります。適切な承認が与えられていないユーザーは、特権付きアプリケーションを使用できなかったり、特権付きアプリケーションに含まれるセキュリティーの厳しい処理を実行できなかったりする可能性があります。特権についての詳細は、「特権 (概要)」を参照してください。

特権付きアプリケーションと RBAC

システム制御に優先するアプリケーションとコマンドは、特権付きアプリケーションとみなされます。アプリケーションは、UID=0 のようなセキュリティー属性、特権、および承認によって特権化されます。

UID と GID を確認するアプリケーション

root (UID=0) やその他の特殊な UID または GID を確認する特権付きアプリケーションは、UNIX 環境に古くから存在します。権利プロファイルのメカニズムによって、特定の ID を必要とするコマンドを分離できます。任意のユーザーがアクセスできるコマンドの ID を変更する代わりに、セキュリティー属性が割り当てられたコマンドを権利プロファイル内に配置できます。その権利プロファイルを持つユーザーまたは役割であれば、スーパーユーザー以外でもプログラムを実行できます。

ID として、実 ID または実効 ID を指定できます。実効 ID を割り当てた場合は、実 ID より優先されます。実効 ID は、ファイルアクセス権ビットの setuid 機能に相当します。実行 ID は、監査のために UID の識別も行います。ただし、root の実 UID を要求するシェルスクリプトやプログラムのために、実 ID も設定できます。たとえば、reboot コマンドには実効 UID ではなく、実 UID が必要です。あるコマンドを実行するために実効 ID では十分でない場合は、そのコマンドに実 ID を割り当てる必要があります。

特権を確認するアプリケーション

特権付きアプリケーションでは、特権の使用を確認できます。RBAC 権利プロファイルメカニズムを使用すると、セキュリティー属性が必要な特定のコマンドの特権を指定できます。次に、セキュリティー属性が割り当てられたコマンドを権利プロファイル内に分離できます。この権利プロファイルを持つユーザーまたは役割は、そのコマンドの実行に必要な特権だけを使用してコマンドを実行できます。

特権を確認するコマンドとして次のようなものがあります。

特権を持つコマンドを権利プロファイルに追加するには、「権利プロファイルを作成または変更する方法」および profiles(1) のマニュアルページを参照してください。特定のプロファイル内の特権がどのコマンドで確認されるかを判定するには、「定義済みのすべてのセキュリティー属性を表示する方法」を参照してください。

承認を確認するアプリケーション

Oracle Solaris には、承認を確認するコマンドも用意されています。当然ながら、root ユーザーにはあらゆる承認が与えられます。このため、root ユーザーは任意のアプリケーションを実行できます。承認があるかどうかを確認するアプリケーションには次のようなものがあります。

承認の確認のためにスクリプトまたはプログラムをテストする場合は、例 9-16 を参照してください。承認が必要なプログラムを作成するには、『Oracle Solaris 11 セキュリティーサービス開発ガイド』の「承認について」を参照してください。

RBAC の権利プロファイル

権利プロファイルは、管理権限が必要なタスクを実行するために役割またはユーザーに割り当てることができるセキュリティー属性の集合です。権利プロファイルには、承認、特権、セキュリティー属性が割り当てられたコマンド、およびほかの権利プロファイルを含めることができます。権利プロファイル内で割り当てられた特権は、すべてのコマンドで有効です。権利プロファイルにはまた、初期の継承可能セットを削減または拡張したり、特権の制限セットを削減したりするためのエントリも含まれています。

権利プロファイルについての詳細は、次のセクションを参照してください。

RBAC の役割

「役割」は、特権付きアプリケーションを実行できる特別な種類のユーザーアカウントです。役割は、ユーザーアカウントと同じ方法で作成され、ホームディレクトリ、グループ割り当て、パスワードなどを持ちます。権利プロファイルと承認は、役割に管理権限を与えます。役割は、ほかの役割やユーザーから権限を継承することはできません。個々の役割によってスーパーユーザー権限が分配されるため、安全な管理が行えるようになります。

ユーザーが役割を引き受けると、その役割の属性がすべてのユーザー属性を置き換えます。役割情報は、passwdshadow、および user_attr データベースに保存されます。役割のアクションを監査できます。役割の設定についての詳細は、次のセクションを参照してください。

各役割は、複数のユーザーに割り当てることができます。同じ役割になるすべてのユーザーは、同じ役割のホームディレクトリを持ち、同じ環境で動作し、同じファイルへのアクセス権を持ちます。ユーザーは、su コマンドを実行し、役割名とパスワードを指定することによって、コマンド行から役割を引き受けることができます。デフォルトでは、ユーザーが役割に対して認証されるには、その役割のパスワードを指定します。管理者は、ユーザーが、そのユーザーのパスワードを指定することによって認証できるようにシステムを構成できます。手順については、「ユーザーが自分のパスワードを使用して役割になれるようにする方法」を参照してください。

役割自体が直接ログインすることはできません。ユーザーがまずログインし、続いて役割を引き受けます。役割を引き受けたあとは、その役割を終了するまでほかの役割を引き受けることはできません。つまり、その役割を終了すれば、ほかの役割を引き受けることができます。

Oracle Solaris では root は役割であるため、匿名の root ログインが回避されます。プロファイルシェルコマンド pfexec が監査の対象となっている場合、監査トレールにはログインユーザーの実 UID、そのユーザーが引き受けた役割、およびその役割が行ったアクションが記録されます。役割による処理を行うシステムまたは特定のユーザーを監査する方法については、「役割を監査する方法」を参照してください。

ソフトウェアに付属する権利プロファイルは、役割に対応するように設計されています。たとえば、System Administrator 権利プロファイルを使用すると、System Administrator 役割を作成できます。役割を構成するには、「役割を作成する方法」を参照してください。

プロファイルシェルと RBAC

ユーザーや役割は、プロファイルシェルから特権付きアプリケーションを実行できます。プロファイルシェルは、権利プロファイルに含まれるセキュリティー属性を認識する特殊なシェルです。管理者は、プロファイルシェルをログインシェルとして特定のユーザーに割り当てることができます。そうでない場合は、そのユーザーが役割になるために su コマンドを実行したときに、プロファイルシェルが起動されます。Oracle Solaris では、どのシェルにも、対応するプロファイルシェルがあります。たとえば、Bourne シェル (sh)、bash シェル (csh)、および Korn シェル (ksh) に対応するプロファイルシェルは、それぞれ pfshpfbash、および pfksh シェルです。プロファイルシェルのリストについては、pfexec(1) のマニュアルページを参照してください。

権利プロファイルが直接割り当てられていて、ログインシェルがプロファイルシェルではないユーザーが、セキュリティー属性が割り当てられたコマンドを実行するには、プロファイルシェルを呼び出す必要があります。操作性やセキュリティーに関する考慮事項については、「セキュリティー属性を直接割り当てる場合に考慮すべきセキュリティー事項」を参照してください。

プロファイルシェルで実行されるコマンドはすべて、監査の対象に含めることができます。詳細は、「役割を監査する方法」を参照してください。

ネームサービススコープと RBAC

ネームサービススコープは、RBAC を理解する上で重要な概念です。役割の適用範囲は、個々のホストに限定されることがあります。また、LDAP などのネームサービスからサービスを受けるすべてのホストが適用範囲に含まれることもあります。あるシステムのネームサービスの適用範囲は、ネームスイッチサービス svc:/system/name-service/switch で指定されます。検索は、最初に一致した時点で停止します。たとえば、権利プロファイルが 2 つのネームサービススコープに存在する場合、最初のネームサービススコープに含まれるエントリだけが使用されます。最初に一致したものが files の場合、役割の適用範囲はローカルホストに限定されます。

セキュリティー属性を直接割り当てる場合に考慮すべきセキュリティー事項

一般にユーザーは、役割を通して管理権限を取得します。承認、特権、および特権付きコマンドは、権利プロファイルにグループ化されます。権利プロファイルは役割に含められ、役割がユーザーに割り当てられます。

権利プロファイルとセキュリティー属性を直接割り当てることも可能です。

しかし、特権の割り当てを直接行うことは安全とは言えません。特権が直接割り当てられたユーザーと役割は、カーネルがその特権を要求するどの場合でもセキュリティーポリシーに優先します。安全なやり方は、特権をコマンドのセキュリティー属性として権利プロファイル内で割り当てる方法です。そうすると、その特権は、その権利プロファイルを持つユーザーが、そのコマンドでのみ使用できます。

承認はユーザーレベルで作用するため、承認の直接割り当ては特権の直接割り当てよりリスクが小さいと言えます。しかし、承認が与えられることで、ユーザーは監査フラグの割り当てなどの高いセキュリティーが求められるタスクも実施できるようになります。

セキュリティー属性を直接割り当てる場合の操作性に関する注意事項

権利プロファイルやセキュリティー属性を直接割り当てると、操作性に影響を与えることがあります。