この章では、Sun Enterprise Authentication Mechanism (SEAM) について説明します。
SEAM は、ネットワークを介してセキュリティ保護されたトランザクションを提供するクライアントおよびサーバーのアーキテクチャです。SEAM では、強力なユーザー認証とともに、データの完全性とデータのプライバシを提供します。認証により、ネットワークトランザクションの送信者と受信者の識別情報が正しいことが保証されます。さらに SEAM を使用して、送受信するデータの完全性が検査され (「完全性」)、伝送時にデータが暗号化されます (「プライバシ」) 。SEAM を使用して、他のマシンにログインしてコマンドを実行したり、データを交換したりファイルを安全に転送したりできます。SEAM は承認サービスも提供するため、システム管理者はサービスやマシンへのアクセスを制限できます。また、SEAM ユーザーは、自分のアカウントに他人がアクセスするのを制限できます。
SEAM は「シングルサインオン」システムです。つまり、SEAM からセッションについて一度だけ認証を受ければ、そのセッションでは、それ以後のすべてのトランザクションが自動的に認証されます。SEAM から認証されたユーザーは、kinit、klist または NFS ファイルシステム上のデータにアクセスする場合などの SEAM ベースのコマンドを使用するたびに認証が要求されることはありません。つまり、これらのサービスを使用するたびに、ネットワークを介してパスワードを送り、傍受される危険を冒す必要がありません。
SEAM は、マサチューセッツ工科大学 (MIT) で開発された Kerberos V5 ネットワーク認証プロトコルに基づいています。 そのため、Kerberos V5 を使用したことがあるユーザーは、SEAM にはすぐ慣れるはずです。Kerberos V5 はネットワークセキュリティの事実上の業界標準であるため、SEAM はほかのシステムとの相互運用性に優れています。つまり、SEAM は Kerberos V5 を使用するシステムと協調して動作するため、異機種システム混在のネットワークであってもトランザクションのセキュリティが保護されます。さらに SEAM では、複数のドメイン間でも単一のドメイン内でも認証やセキュリティの機能を使用できます。
SEAM は、Kerberos V5 に準拠しており、Kerberos V5 との相互運用を実現するために設計されています。このマニュアルでは、「Kerberos」と「SEAM」という用語は、「Kerberos のレルム」や「SEAM ベースのユーティリティ」など、区別しないで使用されることがあります。また、「Kerberos」と「Kerberos V5」も区別しないで使用されています。 必要に応じて「Kerberos」と「Kerberos V5」を区別しています。
SEAM には、Solaris アプリケーションを実行するための柔軟性が備わっています。SEAM は、NFS サービスなどのネットワークサービスが SEAM ベースでない方式で要求された場合でも対応できるように構成することができます。このため、SEAM がインストールされていないシステムで動作する現在の Solaris アプリケーションも正しく動作します。もちろん、SEAM ベースのネットワーク要求だけを許可するように SEAM を設定することもできます。
さらに、他のセキュリティメカニズムが開発された場合には、アプリケーションで使用するセキュリティメカニズムを SEAM に限定しておく必要はありません。SEAM は、Generic Security Service (GSS) API にモジュールとして統合できるように設計されているため、GSS-API を使用するアプリケーションは、必要に応じたセキュリティメカニズムを使用できます。
この節では SEAM 認証システムの概要について説明します。詳細は、認証システムの動作方法を参照してください。.
ユーザーの観点からいえば、SEAM は、SEAM セッションが起動されたあとはほとんど意識しません。SEAM セッションの初期化には通常、ログインと Kerberos パスワードの入力しか必要ありません。
SEAM システムは、チケットの概念を中心に動作します。チケットは、ユーザー ID や NFS などのサービス ID となる一連の電子情報です。運転免許証が運転する人と免許の種類を表すのと同じように、チケットもユーザーとユーザーのネットワークアクセス権を表します。SEAM ベースのトランザクションを実行する (ほかのマシンへの rlogin など) と、鍵配布センター (KDC) に対してチケットの要求が透過的に送信されます。KDC はデータベースにアクセスしてそのユーザーを認証し、そのマシンへのアクセス権を許可するチケットを返します。「透過的」とは、明示的にチケットを要求する必要がないことを意味します。
チケットには一定の属性が与えられています。たとえば、チケットには「転送可能」(新しい認証処理を行わなくても別のマシンで使用できる) や「遅延」(指定の日付まで有効にならない) の属性があります。どのユーザーがどの種類のチケットを取得できるかなど、チケットをどのように使用するかは、SEAM のインストールや管理の際に決める「方針」によって設定されます。
「資格」と「チケット」という用語は、頻繁に使用されます。広い意味の Kerberos では、これらの用語は同じ意味で使われることがありますが、技術的には資格はチケットとそのセッションに対する「セッション鍵」からなります。この違いについては、SEAM によるサービスへのアクセスで詳しく説明します。
次の節では、SEAM 認証プロセスについて詳細に説明します。
Kerberos 認証には、後続の認証を準備する初期認証と、後続の認証との、2 つのフェーズがあります。
次の図では、初期認証の手順を示します。
クライアント (ユーザー、または NFS などのサービス) は、KDC に TGT を要求して SEAM セッションを開始します。ほとんどの場合、この要求はログイン時に自動的に実行されます。
TGT は、ほかの特定のサービスのチケットを取得するために必要です。TGT は、パスポートに似ています。パスポートと同様に、TGT はユーザーを識別して、さまざまなビザの取得をユーザーに許可します。ここでいうビザ (チケット) は、外国に入国するためのものではなく、リモートマシンやネットワークサービスにアクセスするためのものです。パスポートやビザと同様に、TGT などのチケットには有効期限があります。ただし、Kerberos コマンドは、ユーザーがパスポートを所有していることを通知し、ユーザーに代わってビザを取得します。ユーザー自身がトランザクションを実行する必要はありません。
KDC は TGT を作成し、それを暗号化してクライアントに送信します。クライアントは、自身のパスワードを使用して TGT を復号化します。
クライアントは、有効な TGT を入手したので、TGT が期限切れになるまで、あらゆる種類のネットワーク操作チケットを要求できます。この TGT の有効期限は通常、数時間です。クライアントは一意のネットワーク操作を実行するたびに、TGT は KDC にその操作のチケットを要求します。
クライアントが初期認証を受け取ると、各認証は次の図のように実行されます。
クライアントは、特定のサービスのチケットを KDC に要求するために、識別情報の証拠として自身の TGT を KDC に送信します。
KDC は、そのサービスのチケットをクライアントに送信します。
たとえば、ユーザー joe が、必要とする krb5 認証と共有関係にある NFS ファイルシステムにアクセスするとします。このユーザーはすでに認証されている (すでに TGT を持っている) ため、そのファイルにアクセスを試みると、NFS クライアントシステムは NFS サービスのチケットを KDC から自動的および透過的に取得します。
クライアントはサーバーにチケットを送信します。
NFS サービスを使用している場合、NFS クライアントは自動的および透過的に NFS サービスのチケットを NFS サーバーに送信します。
サーバーはクライアントにアクセス権を許可します。
これらの手順では、サーバーと KDC 間の通信は発生していないように見えます。しかし、サーバーは KDC と通信していて、最初のクライアントと同様に、KDC に自身を登録しています。わかりやすくするために、その部分は省略しています。
SEAM 内のクライアントはその「主体 (プリンシパル)」で識別されます。主体とは、KDC がチケットを割り当てることができる一意の識別情報です。主体には、joe などのユーザー、または nfs などのサービスがあります。
主体名は慣習により「一次」、「インスタンス」、「レルム」という 3 つの部分からなります。joe/admin@ENG.EXAMPLE.COM は一般的な SEAM 主体の例です。各文字列は次の意味を持ちます。
joe が一次です。一次には、この例のようなユーザー名や nfs などのサービスを指定します。また、host を指定することもできます。host を指定すると、さまざまなネットワークサービスを提供するサービス主体として設定されます。
admin はインスタンスです。インスタンスは、ユーザー主体の場合はオプションですが、サービス主体では必須です。たとえば、ユーザー joe が必要に応じてシステム管理者の権限を使用する場合は、joe/admin と通常のユーザー ID を使い分けることができます。同じように、joe が 2 つのホストにアカウントを持っている場合、異なるインスタンスで 2 つの主体名を使用することができます (たとえば、joe/denver.example.com と joe/boston.example.com)。SEAM では、joe と joe/admin は全く別のプリンシパルとして扱われます。
サービス主体では、インスタンスは完全修飾されたホスト名です。bigmachine.eng.example.com はこのようなインスタンスの例です。したがって、一次とインスタンスは、たとえば、host/bigmachine.eng.example.com と表します。
ENG.EXAMPLE.COM は SEAM レルムです。レルムについては、レルム を参照してください。
次に有効な主体名を示します。
joe
joe/admin
joe/admin@ENG.EXAMPLE.COM
nfs/host.eng.example.com@ENG.EXAMPLE.COM
host/eng.example.com@ENG.EXAMPLE.COM
レルムとはドメインのようなもので、同じ「マスター KDC」の下にあるシステムをグループとして定義する論理ネットワークです。図 7–3 では、レルム間の関係を示します。階層構造のレルムでは、1 つのレルムがほかのレルムの上位集合になります。階層ではない (直接接続の) レルムでは、2 つのレルム間の割り当てを定義する必要があります。SEAM では、レルム間で共通の認証が可能です。その場合、各レルムの KDC に、他のレルムの主体エントリだけが必要になります。この機能は、レルム間認証と呼ばれます。
各レルムには、主体データベースのマスターコピーを保守するサーバーが含まれる必要があります。このサーバーを「マスター KDC サーバー」と呼びます。また各レルムには、主体データベースの重複コピーを保持する「スレーブ KDC サーバー」が少なくとも 1 つ必要です。マスター KDC サーバーおよびスレーブ KDC サーバーは、認証の確立に使用されるチケットを作成します。
レルムには、「NFS サーバー」も含まれます。NFS サーバーは Kerberos 認証を使用する NFS サービスを提供します。SEAM 1.0 または SEAM 1.0.1 をインストールすると、レルムには、Kerberos アプリケーション (ftp、telnet、rsh など) からアクセスされる SEAM ネットワークのアプリケーションサーバーもインストールされます。
次の図では、レルムの構成例を示します。
SEAM は、ユーザーの認証を行うほかに、次の 2 つのセキュリティサービスを提供します。
完全性 – 認証が、あるネットワーク上のクライアントが本人であるかどうかを確認するのと同様に、完全性は、クライアントの送信データが有効で、伝送の間に改ざんされていないことを確認します。完全性の確認は、データの暗号チェックサムによって行われます。完全性にはユーザー認証も含まれます。
プライバシ – プライバシによって、セキュリティがさらに向上します。プライバシは、伝送データの完全性を検証するだけでなく、伝送前にデータを暗号化して盗聴を防ぎます。プライバシにも認証が含まれます。
SEAM 製品の構成要素は、4 つのリリースに組み込まれています。次の表は、各リリースに組み込まれている構成要素の一覧です。次の節では、すべての構成要素について説明します。
表 7–1 SEAM リリースの内容
リリース名 |
内容 |
---|---|
Solaris Easy Access Server (SEAS) 3.0 の SEAM 1.0 |
Solaris 2.6 および Solaris 7 用の SEAM の完全リリース |
Solaris 8 の SEAM |
SEAM クライアントソフトウェアのみ |
Solaris 8 Admin Pack の SEAM 1.0.1 |
Solaris 8 用の SEAM KDC とリモートアプリケーション |
Solaris 9 の SEAM |
SEAM KDC とクライアントソフトウェアのみ |
SEAM 1.0.2 |
Solaris 9 用の SEAM リモートアプリケーション |
MIT から提供される Kerberos V5 と同様に、SEAM には次の構成要素が含まれます。
鍵配布センター (KDC) (マスター)
Kerberos データベース管理デーモン – kadmind
Kerberos チケット処理デーモン – krb5kdc
スレーブ KDC
データベース管理プログラム – kadmin、kadmin.local
データベース伝播ソフトウェア – kprop
チケットの取得、表示、破棄を行うユーザープログラム – kinit、klist、kdestroy と SEAM パスワードを変更するユーザープログラム – kpasswd
アプリケーション – ftp、rcp、rlogin、rsh、telnet およびこれらのアプリケーションのデーモン – ftpd、rlogind、rshd、telnetd
管理ユーティリティ – ktutil、kdb5_util
いくつかのライブラリ
さらに、SEAM には次の構成要素が含まれています。
SEAM 管理ツール (gkadmin) – KDC を管理する。システム管理者は、この JavaTM テクノロジベースの GUI を使用して、通常は kadmin コマンドで実行する作業を実行できる
Pluggable Authentication Module (PAM) – PAM により、アプリケーションはさまざまな認証メカニズムを使用できる。PAM を使用すると、ログインとログアウトをユーザーが意識する必要がなくなる
ユーティリティ (gsscred) とデーモン (gssd) – これらのプログラムは、UNIX ユーザー ID (UID) と主体名の割り当てに使用する。これらのプログラムが必要なのは、SEAM NFS サーバーがユーザーを識別するときに、主体名ではなく UNIX UID を使用しており、主体名と UNIX UID は形式が異なっているためである
Generic Security Service Application Programming Interface (GSS-API) – アプリケーションは、この API を利用して、複数のセキュリティメカニズムを使用できる。新しいメカニズムを追加するたびに、アプリケーションをコンパイルし直す必要がない。GSS-API はマシンに依存しないため、インターネット上のアプリケーションに適している。GSS-API を使用すると、認証サービスだけでなく、完全性およびプライバシセキュリティサービスをアプリケーションに組み込むことができる
RPCSEC_GSS Application Programming Interface (API) – NFS サービスが Kerberos 認証を使用することができる。RPCSEC_GSS は、使用しているメカニズムに依存しないセキュリティサービスを提供する新しいセキュリティフレーバである。RPCSEC_GSS は、GSS-API 層の「最上位」に位置している。GSS_API ベースのセキュリティメカニズムは、プラグイン可能なので、RPCSEC_GSS を使用するアプリケーションで使用できる
事前構成手順 – SEAM のインストールおよび構成パラメータを設定し、SEAM インストールを自動化できる。この手順は、特に複数のインストールを行うときに適している
カーネルの変更 – パフォーマンスを向上させることができる
Solaris 8 に含まれている SEAM はクライアント側の部分だけで、SEAM の構成要素の多くは含まれていません。Solaris 8 が動作するシステムであれば、SEAM を別にインストールしなくても SEAM クライアントとしては動作します。これらの SEAM クライアント機能を使用するには、SEAS 3.0 または Solaris 8 Admin Pack、MIT ディストリビューション、あるいは Windows 2000 の KDC をインストールする必要があります。クライアント側の構成要素は、構成済み KDC がないとチケットを配布できません。Solaris 8 には、次の構成要素が含まれます。
チケットを取得、表示、破棄するユーザープログラム – kinit、klist、kdestroy
SEAM パスワードを変更するユーザープログラム – kpasswd
鍵テーブル管理ユーティリティ – ktutil
PAM の拡張 – アプリケーションはさまざまな認証メカニズムを使用できる。PAM を使用すると、ログインとログアウトをユーザーが意識する必要がなくなる
GSS_API プラグイン – Kerberos プロトコルおよび暗号サポートを提供する
NFS クライアントおよびサーバーのサポート
SEAM 1.0.1 には、Solaris 8 に含まれていない SEAM 1.0 の構成要素がすべて含まれています。次の構成要素が含まれています。
鍵配布センター (KDC) (マスター)
Kerberos データベース管理デーモン – kadmind
Kerberos チケット処理デーモン – krb5kdc
スレーブ KDC
データベース管理プログラム – kadmin、kadmin.local
データベース伝播ソフトウェア – kprop
アプリケーション – ftp、rcp、rlogin、rsh、telnet および これらのアプリケーションのデーモン – ftpd、rlogind、rshd、telnetd
管理ユーティリティ – kdb5_util
SEAM 管理ツール (gkadmin) – KDC を管理する。システム管理者は、この Java テクノロジベースの GUI を使用して、通常は kadmin コマンドで実行する操作を実行できる
事前構成手順 – SEAM のインストールおよび構成パラメータを設定し、SEAM インストールを自動化できる。この手順は、特に複数のインストールを行うときに適している
いくつかのライブラリ
Solaris 9 には、リモートアプリケーションと事前構成手順を除いて、SEAM 1.0 の構成要素がすべて含まれています。
SEAM 1.0.2 には、リモートアプリケーションが含まれています。SEAM 1.0 の構成要素のうちで、Solaris 9 リリースに組み込まれていないのはこれらのアプリケーションだけです。リモートアプリケーションの構成要素は次のとおりです。
クライアントアプリケーション – ftp、rcp、 rlogin、rsh、および telnet
サーバーデーモン – ftpd、 rlogind、rshd、および telnetd