Solaris のシステム管理 (第 2 巻)

第 21 章 SEAM の概要

この章では、Solaris 8 の SEAM 製品の概要を説明します。SEAM 1.0 には、Kerberos V5 ネットワーク認証プロトコルが実装されています。これは Sun Easy Access Server (SEAS) 3.0 リリースに含まれています。Solaris 8 リリースには、SEAM 製品のすべては含まれていません。このリリースには、クライアント側の製品だけが含まれています。この章では、SEAM 製品のクライアント側の製品とサーバー側の製品を両方とも説明しているため、製品全体の相互関係がわかります。この章の内容は次のとおりです。

SEAM とは

Sun Eneterprise Authentication Mechanism (SEAM) は、強力なユーザー認証およびデータの完全性とプライバシを提供することにより、ネットワークトランザクションのセキュリティを保護するクライアントサーバーアーキテクチャです。認証により、ネットワークトランザクションの送信者と受信者の識別情報が正しいことが保証されます。さらに SEAM を使用して、送受信するデータの完全性が検査され (「完全性」)、伝送時にデータが暗号化されます (「プライバシ」)。SEAM を使用して、他のマシンにログインしてコマンドを実行したり、データを交換したりファイルを安全に転送したりできます。SEAM は認証サービスも提供するため、管理者はサービスやマシンへのアクセスを制限でき、ユーザーは自分のアカウントに他人がアクセスするのを制限できます。

SEAM は「シングルサインオン」システムです。つまり、SEAM からセッションについて一度だけ認証を受ければ、そのセッションでは、それ以後のすべてのトランザクションが自動的に認証されます。いったん認証されたら、パスワードを再び入力する必要はありません。つまり、これらのサービスを使用するたびに、ネットワークを介してパスワードを送り、傍受される危険を冒す必要はありません。

SEAM は、マサチューセッツ工科大学 (MIT) で開発された Kerberos V5 ネットワーク認証プロトコルに基づいています。そのため、Kerberos V5 を使用したことがあれば、SEAM にはすぐ慣れるはずです。Kerberos V5 はネットワークセキュリティの業界標準 (RFC 1510 を参照) で、SEAM では他の製品との相互運用性が増します。つまり、SEAM は Kerberos V5 を使用するシステムと協調して動作するため、異機種構成のネットワークであってもトランザクションのセキュリティが保護されます。さらに SEAM では、ドメイン間でも単一のドメイン内でも認証やセキュリティの機能を使用できます。


注 -

SEAM は Kerberos V5 に基づいて動作し、Kerberos V5 と相互運用が可能なように設計されているため、このマニュアルでは「Kerberos」と「SEAM」を同じ意味で使用することがあります (「Kerberos レルム」や「SEAM ベースユーティリティ」など)。(Kerberos と Kerberos V5 も同じ意味で使用されています。) 必要な場合はこれらを区別します。


SEAM には、Solaris アプリケーションを実行するための柔軟性が備わっています。NFS サービスなどのネットワークサービスを、SEAM ベースでも非 SEAM ベースでも使用できるように SEAM を設定できます。そのため、SEAM がインストールされていないシステムで動作する現在の Solaris アプリケーションも正しく動作します。もちろん、SEAM ベースのネットワーク要求だけを許可するように SEAM を設定することもできます。

さらに、他のセキュリティ機構が開発された場合には、アプリケーションで使用するセキュリティ機構を SEAM に限定しておく必要はありません。SEAM は、Generic Security Service API の下のモジュール構造の下で使用するように設計されているため、GSS-API を使用するアプリケーションは、必要に応じたセキュリティ機構を使用できます。

SEAM 技術

この節では、この後の SEAM の説明で使用される用語とその定義について説明します。SEAM の説明を理解するには、これらの用語を理解しておく必要があります。

Kerberos 固有の用語

KDC 管理の節を理解するには、次の用語を理解してください。

「Key Distribution Center」または「KDC」は、資格の発行を担当する SEAM の一部分です。資格は、KDC データベースに格納されている情報に基づいて作成されます。各レルムには少なくとも 2 つの KDC が必要です (マスターと少なくとも 1 つのスレーブ)。資格はすべての KDC が生成できますが、KDC データベースを変更できるのはマスターだけです。

KDC のマスター鍵を暗号化したコピーは「stash ファイル」に入っています。サーバーがリブートされると、この鍵を使用して KDC が自動的に認証されてから kadmindkrb5kdc が起動されます。このファイルにはマスター鍵が入っているため、このファイルやそのバックアップは安全な場所に保管する必要があります。暗号が破られると、この鍵を使用して KDC データベースのアクセスや変更が可能になります。

認証固有の用語

認証プロセスを理解するには、次の用語の理解が必要です。プログラマやシステム管理者はこれらの用語に精通していなければなりません。

「クライアント」とは、ユーザーのワークステーションで動作しているソフトウェアです。クライアント上で動作する SEAM ソフトウェアは、このプロセスの間に多くの要求を行います。したがって、このソフトウェアの動作とユーザーの操作を区別することが大切です。

サーバーとサービスはしばしば同じ意味で使われます。正確にいえば、「サーバー」は SEAM ソフトウェアが動作している物理システムであり、「サービス」はサーバー上でサポートされている特定の機能 (ftpnfs など) です。サーバーがサービスの一部として使用されることがよくありますが、これはこれらの用語の意味をあいまいにします。したがって、サーバーは物理システムを、サービスはソフトウェアをそれぞれ指すことにします。

SEAM 製品には 3 種類の鍵があります。1 つは「非公開鍵」です。この鍵は各ユーザー (プリンシパル) に与えられ、プリンシパルのユーザーと KDC だけに知られています。ユーザープリンシパルに対しては、鍵はユーザーのパスワードに基づいています。サーバーとサービスに対する鍵は「サービス鍵」と呼ばれます。この鍵は非公開鍵と同じ目的で使われますが、これはサーバーとサービスによって使用されます。3 つめの鍵は「セッション鍵」です。この鍵は、認証サービスまたはチケット許可サービスによって生成されます。セッション鍵は、クライアントとサービス間のトランザクションのセキュリティを保護するために生成されます。

「チケット」は、ユーザーの識別情報をサーバーやサービスに安全に渡すために使用される情報パケットです。チケットは、単一のクライアントと特定のサーバーの特定のサービスだけに有効です。チケットには、サービスのプリンシパル名、ユーザーのプリンシパル名、ユーザーのホストの IP アドレス、タイムスタンプ、チケットの有効期限を定義する値などが入っています。チケットは、クライアントとサービスによって使用されるランダムセッション鍵を使用して作成されます。チケットは、作成されてから有効期限が過ぎるまで再使用できます。

「資格」は、対応するセッション鍵とチケットをもつ情報パケットです。一般に資格は、資格を暗号化するものに応じて、非公開鍵かサービス鍵を使用して暗号化されます。

「認証」はさらに別のタイプの情報です。これをチケットとともに使用すれば、ユーザープリンシパルを認証できます。認証には、ユーザーのプリンシパル名、ユーザーのホストの IP アドレス、タイムスタンプが含まれています。チケットとは異なり、認証は一度しか使用できません。認証を使用するのは、通常、サービスへのアクセスが要求されたときです。認証は、そのクライアントとそのサーバーのセッション鍵を使用して暗号化されます。

SEAM の構成要素

SEAS 3.0 の SEAM 1.0 の完全リリースには、次のものを含む多数の構成要素が含まれています。

SEAM 1.0 リリースに含まれる全構成要素は、『Sun Enterprise Authentication Mechanism ガイド』の「SEAM の概要」に記載されています。

Solaris 8 リリースに含まれているのは SEAM のクライアント側部分だけで、これらの構成要素の多くは含まれていません。そのため、Solaris 8 リリースが動作するシステムであれば、SEAM を別にインストールしなくても SEAM クライアントとして動作します。この機能を使用するには、SEAS 3.0、MIT 配布、Windows2000 のどれかを使用して KDC をインストールする必要があります。クライアント側の構成要素は、チケットを配布する構成済み KDC がないと使用できません。このリリースには、次の構成要素が含まれています。

SEAM の動作

この節の説明は SEAM 認証システムの一般的な概要です。詳細は、「認証システムの動作」を参照してください。

ユーザーの観点からいえば、SEAM は、SEAM セッションが起動された後はほとんど目につきません。SEAM セッションの初期化には通常、ログインと Kerberos パスワードの入力しか必要ありません。

SEAM システムは「チケット」の概念を中心に動作します。チケットは、ユーザーや NFS などのサービスの識別情報となる一連の電子情報です。運転免許証が運転する人と免許の種類を表すのと同じように、チケットもユーザーとユーザーのネットワークアクセス権を表します。SEAM ベースのトランザクションを行うと (たとえば、新しいプリンシパルに対し kinit を行う場合)、チケットの要求が Key Distribution Center (KDC) に透過的に送信されます。KDC はデータベースにアクセスしてこの識別情報を認証して、その他のマシンへのアクセスを許可するチケットをユーザーに戻します。「透過的」とは、チケットを明示的に要求する必要がないという意味です。この要求は kinit コマンドの中で行われます。特定のサービスのチケットを取得できるのは認証されたクライアントだけで、別のクライアントが識別情報を仮定して kinit を行うことはできません。

チケットには一定の属性が与えられています。たとえば、チケットは「転送可能」(新しい認証プロセスを経なくても別のマシンで使用できる) や「遅延」(指定の日付にならないと有効でない) の属性をもつことができます。どのユーザーがどのタイプのチケットを取得できるかなど、チケットをどのように使用するかは、SEAM のインストールや管理の際に決める「方針」によって設定されます。


注 -

「資格」と「チケット」という用語がよく出てきます。広い意味の Kerberos では、これらの用語は同じ意味で使われることがあります。しかし、技術的には資格はチケットとそのセッションに対するセッション鍵からなります。この違いについては、「SEAM によるサービスへのアクセス」 の「SEAM によるサービスのアクセス」で詳しく説明します。


プリンシパル

SEAM 内のクライアントはその「プリンシパル」で識別されます。プリンシパルとは、KDC がチケットを割り当てることができる固有の識別情報です。プリンシパルは、joe などのユーザーや nfs などのサービスです。

プリンシパル名は慣習で「一次」、「インスタンス」、「レルム」という 3 つの部分からなります。joe/admin@ENG.ACME.COM は一般的な SEAM プリンシパルの例です。各文字列は次の意味を持ちます。

次に示すのはすべて、有効なプリンシパル名です。

レルム

レルムとはドメインのようなもので、同じ「master KDC」の下にあるシステムをグループとして定義する論理ネットワークです (下記を参照)。図 21-1 はレルムの相互関係を表したものです。階層的なレルムでは、1 つのレルムが他のレルムのスーパーセットになります。非階層的なレルムでは、2 つのレルム間のマッピングを定義する必要があります。SEAM では、レルム間で共通の認証が可能です。その場合、各レルムの KDC に、他のレルムのプリンシパルエントリが必要になるだけです。

図 21-1 レルム

Graphic

レルムとサーバー

それぞれのレルムには、プリンシパルデータベースのマスターコピーを保守するサーバーが含まれていなければなりません。これを「マスター KDC サーバー」と呼びます。さらにレルムには、プリンシパルデータベースの重複データベースを保持する「スレーブ KDC サーバー」が少なくとも 1 つ必要です。マスターおよびスレーブ KDC サーバーは共に認証を確立するために使用するチケットを作成します。

レルムにはさらに SEAM サーバーを 2 種類持つことができます。1 つはSEAM ネットワーク「アプリケーションサーバー」で、Kerberos 対応のアプリケーション (ftptelnetrsh など) へのアクセスを提供するサーバーです。もう 1 つは、Kerberos 認証を使用する「NFS サーバー」です。NFS サーバーは NFS サービスを提供します。

図 21-2 は、レルムの構成例を示したものです。

図 21-2 一般的なレルム

Graphic

セキュリティサービス

SEAM は、ユーザーの認証を行う他に、次の 2 つのセキュリティサービスを提供します。

開発者は、RPCSEC_GSS プログラミングインタフェースを使用することにより、セキュリティサービスを選択可能な RPC ベースのアプリケーションを設計できます。