ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Solaris のシステム管理: セキュリティーサービス Oracle Solaris 10 1/13 Information Library (日本語) |
パート II システム、ファイル、およびデバイスのセキュリティー
13. Oracle Solaris の暗号化フレームワーク (概要)
14. Oracle Solaris の暗号化フレームワーク (タスク)
24. Kerberos エラーメッセージとトラブルシューティング
26. Kerberos アプリケーションの使用 (タスク)
Kerberos サービスによる DNS および nsswitch.conf ファイルとの対話処理方法
Oracle Solaris Kerberos と MIT Kerberos の大きな違い
このセクションでは、Kerberos の用語とその定義について説明します。これらの用語は、Kerberos のドキュメント全体で使用されます。Kerberos の概念を理解するには、これらの用語を理解する必要があります。
KDC を管理するには、このセクションで説明する用語を理解する必要があります。
鍵配布センターまたは KDC は、資格の発行を担当する Kerberos のコンポーネントです。資格は、KDC データベースに格納されている情報に基づいて作成されます。各レルムには 2 つ以上の KDC サーバー (マスターと 1 つ以上のスレーブ) が必要です。すべての KDC が資格を生成できますが、KDC データベースを変更できるのはマスター KDC だけです。
stash ファイルには、KDC のマスター鍵が含まれています。この鍵は、サーバーがリブートされたときに、kadmind および krb5kdc コマンドを起動する前に KDC を自動的に認証するために使用されます。このファイルにはマスター鍵が入っているため、このファイルやバックアップは安全な場所に保管する必要があります。ファイルは、root の読み取り専用のアクセス権で作成されます。ファイルをセキュリティー保護するには、アクセス権を変更しないでください。ファイルの保護が破られると、この鍵を使用して KDC データベースのアクセスや変更が可能になります。
認証処理を理解するには、このセクションで説明する用語を理解する必要があります。プログラマやシステム管理者はこれらの用語に精通している必要があります。
クライアントとは、ユーザーのワークステーション上で実行されるソフトウェアのことです。クライアントで動作する Kerberos ソフトウェアは、処理中に多数の要求を作成します。このため、Kerberos ソフトウェアとユーザーの動作を区別することが重要です。
サーバーとサービスという用語は多くの場合、同じ意味で使用されます。明確にするために、サーバーという用語は、Kerberos ソフトウェアが実行されている物理システムを定義するために使用されます。「サービス」とは、サーバー上でサポートされる特定の機能 (ftp や nfs) です。サーバーがサービスの一部として記述されることがよくありますが、これはこれらの用語の定義をあいまいにします。そのため、サーバーという用語は、物理システムを指します。サービスという用語は、ソフトウェアを指します。
Kerberos 製品は、2 種類の鍵を使用します。1 つはパスワード由来の鍵です。パスワード由来の鍵は、各ユーザー主体に与えられ、そのユーザーと KDC だけに知られています。Kerberos 製品が使用するもう 1 つの鍵は、パスワードとの関連性がないランダム鍵です。そのため、ユーザー主体による使用には適しません。通常、ランダム鍵は、キータブにエントリがあり、KDC によって作成されるセッション鍵を持つサービス主体で使用されます。サービスは非対話形式での実行を許可するキータブファイル内の鍵にアクセスできるため、サービス主体はランダム鍵を使用できます。セッション鍵は、クライアントとサービス間のトランザクションを保護するために KDC によって生成され、クライアントとサービス間で共有されます。
チケットとは、ユーザーの識別情報をサーバーまたはサービスにセキュアに渡すために使用される情報パケットのことです。チケットは、単一クライアントと特定サーバー上の特定サービスだけに有効です。チケットには、次のものが含まれます。
サービスの主体名
ユーザーの主体名
ユーザーのホストの IP アドレス
タイムスタンプ
チケットの有効期限を定義する値
セッション鍵のコピー
これらのすべてのデータは、サーバーのサービス鍵に暗号化されます。KDC は、次に説明する資格に組み込まれたチケットを発行します。チケットは、発行されてから有効期限まで再使用できます。
「 資格」は、チケットとそれに対応するセッション鍵を含む情報パケットです。資格は要求する主体の鍵で暗号化されます。一般的に、KDC はクライアントからのチケット要求に応じて資格を生成します。
「オーセンティケータ (authenticator)」は、クライアントのユーザー主体を認証するためにサーバーが使用する情報です。 オーセンティケータは、ユーザーの主体名、タイムスタンプ、およびその他のデータを含みます。チケットとは異なり、オーセンティケータは一度しか使用できません。通常、サービスへのアクセスが要求されたときに使用されます。オーセンティケータは、クライアントとサーバーが共有するセッション鍵を使用して暗号化されます。通常、クライアントが、オーセンティケータを作成し、サーバーまたはサービスに対して認証するためにサーバーまたはサービスのチケットとともに送信します。
チケットには、チケットがどのように使用されるかを決めるプロパティーがあります。これらのプロパティーは、チケットの作成時にチケットに割り当てられます。ただし、チケットのプロパティーはあとから変更できます。たとえば、チケットは、転送可能から転送済みに変更できます。チケットのプロパティーを表示するには、klist コマンドを使用します「Kerberos チケットの表示」を参照してください。
チケットは、次の 1 つまたは複数のプロパティーで表されます。
転送可能チケットは、あるホストから別のホストに送信できます。これにより、クライアントは自身を再認証する必要がなくなります。たとえば、ユーザー david がユーザー jennifer のマシン上にいる間に転送可能チケットを取得した場合は、新しいチケットを取得しなくても (それにより自分自身を再度認証しなくても)、自分が所有するマシンにログインできます。転送可能チケットの例については、例 26-1 を参照してください。
初期チケットは、チケット認可チケットに基づいてではなく、直接発行されるチケットです。パスワードを変更するアプリケーションなどの一部のサービスでは、クライアントが非公開鍵を知っていることを確認するために、初期と指定されたチケットを要求することができます。初期チケットは、チケット認可チケットを使用せずに、クライアントが最近認証されたことを証明します。チケット認可チケットの場合は、認証されてから時間が経っている可能性があります。
無効チケットは、まだ使用可能になっていない遅延チケットです。無効チケットは、有効になるまでアプリケーションサーバーから拒否されます。これを有効にするには、開始時期が過ぎたあと、チケット認可サービス要求で VALIDATE フラグをオンにしてクライアントがこのチケットを KDC に提示する必要があります。
遅延チケットは、作成されたあと、指定された一定の時間が経過するまで有効にならないチケットです。たとえばこのようなチケットは、夜遅く実行するバッチジョブに使用するのに便利です。チケットが盗まれてもバッチジョブが実行される予定の時刻まで使用できないためです。遅延チケットは、無効チケットとして発行され、開始時間を過ぎて、クライアントが KDC による検査を要求したときに有効になります。遅延チケットは通常、チケット認可チケットの有効期限まで有効です。ただし、チケットに更新可能が指定されている場合、その最長有効期限は通常、チケット認可チケットの最長有効期限と同じに設定されます。
場合によっては、サービスがそれ自身のために操作できることが主体にとって必要な場合があります。チケットを作成するときには、プロキシの主体名を指定する必要があります。Oracle Solaris リリースでは、プロキシ可能またはプロキシチケットをサポートしていません。
プロキシ可能チケットは転送可能チケットに似ていますが、プロキシ可能チケットが 1 つのサービスに対してのみ有効であるのに対して、転送可能チケットはサービスにクライアントの識別情報の完全な使用を許可する点が異なります。したがって、転送可能チケットは一種のスーパープロキシと考えられます。
チケットの有効期限が非常に長いとセキュリティーリスクが発生するため、チケットを更新可能として指定できます。更新可能チケットには 2 つの有効期限があります。 1 つはチケットの現在のインスタンスの有効期限で、もう 1 つは任意のチケットの最長有効期限 (1 週間) です。クライアントがチケットの使用を継続するときは、最初の有効期限が切れる前にチケットの有効期限を更新します。たとえば、すべてのチケットの最長有効期限が 10 時間のときに、あるチケットが 1 時間だけ有効だとします。このチケットを保持するクライアントが 1 時間を超えて使用する場合は、その時間内にチケットの有効期限を更新する必要があります。チケットが最長有効期限 (10 時間) に達すると、チケットの有効期限が自動的に切れ、それ以上更新できなくなります。
チケットの属性を表示する方法については、「Kerberos チケットの表示」を参照してください。
主体がチケットを取得すると、チケット認可チケット (TGT) であっても、チケットの有効期限は次の中で最も小さい値に設定されます。
kinit を使用してチケットを取得する場合、kinit の -l オプションに指定した有効期限値。デフォルトでは、kinit は有効期限の最大値を使用します。
チケットを提供するサービス主体に対し Kerberos データベースに指定されている最長有効期限値。kinit の場合、サービス主体は krbtgt/realm です。
チケットを要求するユーザー主体に対し Kerberos データベースに指定されている最長有効期限値。
図 27-1 は、TGT の有効期限の決定方法と 4 つの有効期限値の指定元を示しています。この図は TGT の有効期限がどのようにして決まるかを示しますが、基本的には、どの主体がチケットを取得する場合でも同じです。唯一の違いは、kinit が有効期限の値を提示せず、チケットを提供するサービス主体が (krbtgt/realm 主体の代わりに) 有効期限の最大値を提示することです。
図 27-1 TGT の有効期限の決定方法
更新可能チケットの有効期限も次の 4 つの最小値で決まります。ただし、この場合は更新可能有効期限が使用されます。
kinit がチケットを取得または更新するために使用される場合は、kinit の -r オプションで指定された更新可能な有効期限の値。
チケットを提供するサービス主体に対し Kerberos データベースに指定されている更新可能最長有効期限値。kinit の場合、サービス主体は krbtgt/realm です。
チケットを要求するユーザー主体に対し Kerberos データベースに指定されている更新可能最長有効期限値。
チケットは主体名で識別され、主体名はユーザーやサービスを識別します。次の表に主体名の例を示します。
表 27-4 Kerberos 主体名の例
|