PAM は、アプリケーションがさまざまな認証機能を実行するためのフレームワークを提供します。アプリケーション (システムプログラムを含む) のユーザーに対する集中管理認証、セッション管理、パスワード管理、およびアカウント制限を提供します。PAM を使用すると、これらのプログラム (login、su、ssh など) は、ユーザー管理の詳細が変更された場合でも変更する必要がありません。サイトアプリケーションは、PAM を使用して、独自のアカウント、資格、セッション、パスワードなどの要件を管理できます。PAM は、これらのアプリケーションに「プラグイン」されます。
PAM フレームワークは、次の 4 つの部分で構成されます。
PAM を使用するアプリケーション
PAM フレームワーク
PAM サービスモジュール
PAM 構成 (モジュールとユーザー割り当ての選択を含む)
このフレームワークは、認証関連のアクティビティーを実行するための統一された方法を提供します。このアプローチを使用すると、アプリケーション開発者は、認証ポリシーの意味を知らなくても PAM サービスを使用できます。PAM を使えば、管理者は、アプリケーションを変更しないで、特定システムのニーズに合わせて認証プロセスを調整できるようになります。代わりに、管理者は PAM 構成を調整します。
次の図は、PAM のアーキテクチャーを示したものです。
図 1 PAM のアーキテクチャー
このアーキテクチャーは、次のように機能します。
アプリケーションは、PAM アプリケーションプログラミングインタフェース (API) 経由で PAM フレームワークと通信します。
API の使用については、pam(3PAM) のマニュアルページおよびOracle Solaris 11 セキュリティーサービス開発ガイド の 第 3 章, PAM アプリケーションおよび PAM サービスの記述を参照してください。
PAM サービスモジュールは、PAM サービスプロバイダインタフェース (SPI) 経由で PAM フレームワークと通信します。詳細は、pam_sm(3PAM) のマニュアルページを参照してください。
選択されたサービスモジュールの簡単な説明については、PAM サービスモジュールのほか、pam.conf(4) および pam_user_policy(5) のマニュアルページを参照してください。
管理者は、サイト要件を管理するために 1 つ以上の一連のモジュールを構成できます。この一連のモジュールは、PAM スタックと呼ばれます。このスタックは、順番に評価されます。アプリケーションに複数の PAM スタックが必要な場合、アプリケーション開発者は、複数のサービス名を作成する必要があります。たとえば、sshd デーモンは、PAM 用の複数のサービス名を提供または要求します。sshd デーモンの PAM サービス名のリストについては、sshd(1M) のマニュアルページで PAM という単語を探してください。PAM スタックの詳細は、PAM スタックを参照してください。PAM スタックの例では、PAM 認証スタックを示しています。
PAM フレームワークを使用すると、ユーザーがアプリケーションを使用するために満たす必要のある要件を構成できます。PAM によって提供される利点のいくつかを次に示します。
柔軟な PAM 構成ポリシー
サービスごとの名前認証ポリシー
サイト全体にわたる PAM ポリシーとユーザーごとの PAM ポリシー
デフォルトの認証ポリシーの管理上の選択
セキュリティーの高いシステム上での複数のユーザー要件の適用
一般ユーザーにも使いやすい
認証サービスが異なっても同じパスワードの再入力は必要なし
ユーザーに複数のコマンドの入力を求めるのではなく、複数の認証サービスからユーザーに入力を要求
管理者にとっての構成のしやすさ
PAM サービスモジュールにオプションを渡すことが可能
アプリケーションを変更しなくても、サイト固有のセキュリティーポリシーを実装できる
配布時に、PAM 構成は、認証を必要とするシステムサービス (login や ssh など) を対象とする標準のセキュリティーポリシーを実装します。一部のシステムサービスのために異なるセキュリティーポリシーを実装するか、またはサードパーティーのアプリケーションのためのポリシーを作成する必要がある場合は、次の問題を考慮してください。
提供されている構成ファイルによって要件が満たされていないかどうかを判定します。
デフォルト構成をテストします。/etc/security/pam_policy ディレクトリ内のユーザーごとのファイルをテストします。デフォルトのサービス名 other によって要件が満たされているかどうかをテストします。PAM スタックの例では、other スタックを示しています。
スタックに変更が必要なサービス名があるかどうかを識別します。サービス名の PAM スタックの変更の例については、サイト固有の PAM 構成ファイルを作成する方法を参照してください。
PAM フレームワークを使用するようにコーディングされているサードパーティーのアプリケーションの場合は、そのアプリケーションが使用する PAM サービス名を判定します。
各サービス名について、どの PAM モジュールを使用するかを判定します。
各 PAM モジュールのマニュアルページのセクション 5 を確認します。これらのマニュアルページでは、各モジュールの機能、使用可能なオプション、およびスタック内のモジュール間の相互作用について説明しています。選択されたモジュールの簡単なサマリーについては、PAM サービスモジュールを参照してください。PAM モジュールはまた、外部のソースからも使用できます。
サービス名ごとに、各モジュールを実行する順序を決定します。
各モジュールに対する制御フラグを選択します。制御フラグの詳細は、PAM スタックを参照してください。制御フラグがセキュリティーに影響する場合があることに注意してください。
各モジュールに必要なオプションを選択します。各モジュールのマニュアルページには、そのモジュールで使用可能なオプションが記載されています。
PAM 構成でのアプリケーションの使用をテストします。root 役割、その他の役割、特権ユーザー、および通常のユーザーとしてテストします。一部のユーザーがそのアプリケーションの使用を許可されていない場合は、それらのユーザーをテストします。
pam_user_policy PAM モジュールを使用すると、システム管理者は、ユーザーごとに特定の PAM 構成を割り当てることができます。このモジュールが PAM スタック内の最初のモジュールであり、かつユーザーの pam_policy セキュリティー属性が PAM 構成ファイルを指定している場合は、そのファイルがユーザーの PAM ポリシーを指定します。
詳細については、次を参照してください。
pam_user_policy(5) man page