このセクションでは、Kerberos 認証プロセスの概要について説明します。詳細は、Kerberos 資格によってサービスへのアクセスが提供されるしくみを参照してください。
Kerberos セッションが起動されたあとは、ユーザーから見ると Kerberos サービスが意識されることはほとんどありません。ssh や ftp などのコマンドは、ほぼ同様に動作します。Kerberos セッションの初期化には通常、ログインと Kerberos パスワードの入力しか必要ありません。
Kerberos システムは、チケットの概念を中心に動作します。チケットは、ユーザー、および NFS サービスなどのサービスを特定する一連の電子情報です。運転免許証が運転する人と免許の種類を表すのと同じように、チケットもユーザーとユーザーのネットワークアクセス権を表します。Kerberos に基づくトランザクションを実行すると (NFS マウントしたファイルをリクエストする場合など)、チケットに対するリクエストが鍵配布センター (KDC) に透過的に送信されます。KDC は、データベースにアクセスしてユーザーの識別情報を認証し、NFS サーバーにアクセスするためのアクセス権を許可するチケットを返します。「透過的に」とは、チケットを明示的にリクエストする必要がないことを示します。このリクエストは、サーバーにアクセスしようとしたときに発生します。特定のサービスのチケットを取得できるのは認証されたクライアントだけであるため、別のクライアントが、引き継がれた識別情報で NFS サーバーにアクセスすることはできません。
チケットには、特定の属性が関連付けられています。たとえば、チケットには、新しい認証処理を行わなくても別のシステムで使用できる転送可能の属性があります。また、指定の日付まで有効にならない「遅延」の属性もあります。チケットをどのように使用できるかは、ポリシーによって設定されます (どのユーザーが、どのタイプのチケットの取得を許可されるかを指定する場合など)。ポリシーは、Kerberos サービスのインストールや管理の際に決定します。
次のセクションでは、Kerberos 認証プロセスについて詳細に説明します。
Kerberos 認証には、すべての後続の認証を有効にする初期認証と、後続の認証自体の 2 つのフェーズがあります。
次の図では、初期認証の手順を示します。
図 4 Kerberos セッションの初期認証
クライアント (ユーザー、または NFS などのサービス) は、KDC に TGT を要求して Kerberos セッションを開始します。ほとんどの場合、この要求はログイン時に自動的に実行されます。
TGT は、ほかの特定のサービスのチケットを取得するために必要です。TGT は、パスポートに似ています。パスポートと同様に、チケット認可チケットはユーザーを識別し、ユーザーが多数の「ビザ」(チケット) を取得できるようにします。これらのチケットは、外国へのアクセスを許可する代わりに、ユーザーがリモートシステムやネットワークサービスにアクセスできるようにします。パスポートやビザと同様に、TGT などのチケットには有効期限があります。ただし、Kerberos コマンドは、ユーザーがパスポートを所有していることを通知し、ユーザーに代わってビザを取得します。ユーザー自身がトランザクションを実行する必要はありません。
チケット認可チケットに類似した例として、4 つのスキー場で使える 3 日間のスキーパスを挙げます。ユーザーは、そのパスの期限が切れていないかぎり、行くと決めたどのリゾート地でもこのパスを見せ、そのリゾート地のリフトチケットを受け取ります。リフトチケットを入手したら、そのスキー場で好きなだけスキーをすることができます。次の日に別のリゾート地に行った場合は、またこのパスを見せ、その新しいリゾート地のリフトチケットを追加で受け取ります。違いは、Kerberos に基づくコマンドの場合は週末のスキーパスがあることに気付き、ユーザーに代わってリフトチケットを入手するため、ユーザーがこれらのトランザクションを自分で実行する必要がない点です。
KDC は、チケット認可チケットを作成し、それを暗号化された形式でクライアントに戻します。クライアントは、自身のパスワードを使用して TGT を復号化します。
これで有効なチケット認可チケットを取得できたため、クライアントはそのチケット認可チケットが有効であるかぎり、すべての種類のネットワーク操作 (nfs や ssh など) のチケットをリクエストできます。この TGT の有効期限は通常、数時間です。クライアントは一意のネットワーク操作を実行するたびに、TGT は KDC にその操作のチケットを要求します。
クライアントが初期認証を受け取ると、後続の認証はそれぞれ次の図のように実行されます。
図 5 Kerberos 認証を使用してサービスへのアクセスを取得する
クライアントは、チケット認可チケットを識別情報の証拠として KDC に送信することによって、特定のサービスのチケットを KDC にリクエストします (別のシステムにリモートでログインする場合など)。
KDC は、そのサービスのチケットをクライアントに送信します。
ユーザー jdoe が、krb5 認証が必要な状態で共有されてきた NFS ファイルシステムにアクセスするとします。jdoe はすでに認証されている (つまり、jdoe はすでにチケット認可チケットを持っている) ため、jdoe がファイルにアクセスしようとすると、NFS クライアントシステムは自動的かつ透過的に NFS サービスの KDC からチケットを取得します。別の Kerberos サービスを使用するには、手順 1 の場合のように、jdoe は別のチケットを取得します。
クライアントはサーバーにチケットを送信します。
NFS サービスを使用している場合、NFS クライアントは自動的および透過的に NFS サービスのチケットを NFS サーバーに送信します。
サーバーはクライアントにアクセス権を許可します。
これらの手順ではサーバーが KDC とは通信しないように見えますが、最初のクライアントと同様に、サーバーも KDC に自身を登録します。簡単にするために、そのセクションは省略しています。
バッチジョブ (cron、at、batch など) は、遅延実行プロセスです。Kerberos 環境では、遅延実行プロセスを含むすべてのプロセスに資格が必要です。ただし、ユーザーの資格の有効期間は比較的短時間です。デフォルトでは、ユーザー資格は 8 時間だけ有効であり、1 週間まで更新できます。これらの時間は、機密の鍵が悪意のあるユーザーに公開される事態を制限するように設計されていますが、任意の時点でジョブを実行することができない場合があります。
Oracle Solaris では、Kerberos サービスにアクセスするバッチジョブは、ユーザーの有効期間の長い鍵を公開することなく実行できます。この解決方法では、Kerberos サービス、ユーザー名、およびクライアントホスト名を含む資格を、セッションごとのユーザー資格キャッシュ内に格納します。このバッチジョブを認証するために、PAM モジュールが使用されます。ホストがどのサービスに関してチケットを取得できるかについての情報は、LDAP ディレクトリサーバー内に集中して格納できます。
詳細は、pam_krb5_keytab(5) および pam_gss_s4u(5) のマニュアルページのほか、Kerberos サービスへのアクセスのための遅延実行の構成を参照してください。
Kerberos サービスは、ホスト名の解決に DNS を使用するようにコンパイルされています。ホスト名を解決するとき、nsswitch サービスはまったくチェックされません。