この章では、NIS+ のセキュリティシステムと、システムが NIS+ 名前空間全体に与える影響について説明します。
Solaris のセキュリティは、ユーザーが Solaris 環境に入るために通過しなければならないゲートと、内部でそのユーザーが何をできるのかを判定するアクセス権マトリックスの 2 つによって確保されています。(図 6-1 参照)
図 6-1 に示すように、4 つのゲートと 2 つのアクセス権マトリックスによってシステム全体が構成されています。
「ダイアルアップゲート」
モデムや電話回線により Solaris 環境にアクセスするには、正しいログイン ID とダイアルアップパスワードが必要です。
「ログインゲート」
Solaris 環境に入るには、正しいログイン ID とユーザーパスワードが必要です。
「ファイルおよびディレクトリマトリックス」
Solaris 環境に入ってから、ファイルやディレクトリに関して、読み取り、実行、変更、作成、削除等の各種操作を行う権限はアクセス権マトリックスによってコントロールされます。
「root ゲート」
root 権限にアクセスするには、正しいスーパユーザー (root) パスワードが必要です。
「RPC ゲートによる保護」
セキュリティレベル 2 (デフォルト値) の NIS+ 環境においては、NIS+ サービスを使って NIS+ オブジェクト (サーバー、ディレクトリ、テーブル、テーブルエントリなど) にアクセスしようとする場合、ユーザー ID は SECURE RPC プロセスを使った NIS+ によって確認されます。
ダイヤルアップ、ログイン、ルートゲート、およびファイルとディレクトリのアクセス権マトリクスの詳細は、 Solaris の各マニュアル及び資料を参照してください。
SECURE RPC ゲートをパスするには、SECURE RPC パスワードが必要です。「SECURE RPC パスワード」は、「ネットワークパスワード」と呼ばれる場合もあります。SECURE RPC パスワードとログインパスワードは通常同一なので、ゲートをパスした場合はパスワードを再入力する必要がありません。 2 つのパスワードが異なった場合についての説明は、「Secure RPC パスワードとログインパスワードの問題」 を参照してください。
ユーザー要求が SECURE RPC ゲートをパスするには、1 組の「資格」セットが使われます。ユーザーの資格を、作成、提示、判定するプロセスを、そのプロセスがユーザーが誰であり、正しい RPC パスワードを所持しているか否かを確認することから、「認証 (authentication)」と呼びます。この認証プロセスは、ユーザーが NIS+ サービスを要求するごとに自動的に実行されます。
NIS 互換モード (YP 互換モードでもある) の NIS+ 環境では、ユーザーが正しい資格を所持しているか否かにかかわらず (認証プロセスによって、ID が確認され、SECURE RPC パスワードがチェックされたか否かにかかわらず) 、誰でもすべての NIS+ オブジェクトを読み取ることができ、またそれらエントリを変更できるので、SECURE RPC ゲートによるガードは極めて弱くなります。誰もがすべての NIS+ オブジェクトを読み取りかつそれらエントリを変更できるので、互換モードの NIS+ ネットワークは通常モードのよりも安全性が低くなります。
NIS+ の認証と資格の作成および管理については、第 7 章「NIS+ 資格の管理」を参照してください。
「NIS+ オブジェクトマトリックス」
一度正しく認証されると、ユーザーが NIS+ オブジェクトを読み取り、変更、作成、削除する権限はアクセス権マトリックスに管理されます。このプロセスをNIS+ の「承認 (authorization)」と呼びます。
NIS+ のアクセス権および承認の詳細は、第 9 章「NIS+ のアクセス権の管理」を参照してください。
NIS+ のセキュリティは NIS+ の名前空間全体にかかわっています。セキュリティと名前空間を別に設定することはできません。このため、セキュリティの設定方法は名前空間の各構成要素を設定する手順と密接に関係することになります。一度 NIS+ のセキュリティ環境を設定すると、その後はユーザーの追加および削除、アクセス権の変更、グループメンバーの再割当やネットワーク展開を管理するために必要なその他すべての管理ルーチンタスクを実行できます。
NIS+ のセキュリティ機能は名前空間内の情報と、名前空間そのものの構造を不正アクセスから保護するものです。このセキュリティ機能がなければ、どんな NIS+ クライアントであっても名前空間に保存された情報を獲得することも変更することもできないだけでなく、ダメージを与える可能性があります。
NIS+ セキュリティには次の 2 つの機能があります。
「認証 (authentication)」
認証は NIS+ 主体を識別するのに使われます。主体 (ユーザーまたはマシン) が NIS+ オブジェクトにアクセスしようとするときはいつも、ユーザー ID と SECURE RPC パスワードが確認されチェックされます。
「承認 (authorization)」
承認はアクセス権を識別するのに使われます。NIS+ 主体が NIS+ オブジェクトにアクセスしようとするときはいつも、所有者、グループ、その他、未認証の 4 つのクラスの 1 つに位置付けられています。NIS+ セキュリティシステムは NIS+ 管理機能により、各クラスに NIS+ オブジェクトに対する読み取り、変更、作成、削除の各権限を指定します。たとえば、あるクラスは passwd テーブルの特定列を変更できるが、その列を読み取ることはできないとか、別のクラスはいくつかのエントリを読み取ることはできるが、それ以外はできないというように設定できます。
NIS+ のセキュリティ機能は 2 段階のプロセスを用意しています。
「認証 (authentication)」
「承認 (authorization)」
承認プロセスがユーザー ID を確認すると、NIS+ はクラスを判定します。NIS+ オブジェクトまたはサービスに対して何が行えるのかは、ユーザーがどのクラスに属しているかに依存します。これは UNIX の標準的なファイルおよびディレクトリのアクセス権システムと同様の考え方に基づいています (クラスの詳細は、「承認クラス」を参照)。
このプロセスは、マシン A のルート権限により su コマンドを使って、第 2 の NIS+ アクセス権で NIS+ オブジェクトにアクセスすることを防ぐものです。
しかしながら NIS+ は、他人のユーザーログインパスワードを知っている者が、そのユーザーになりすましてユーザー ID と NIS+ アクセス権を使用することを妨げることはできません。またルート権限を持つユーザーが同一マシンからログインしている別のユーザーになりすますのを防ぐこともできません。
図 6-2 に、このプロセスの詳細を示します。
NIS+ の主体とは、NIS+ サービス要求を依頼するエンティティ (クライアント) です。NIS 主体には、クライアントマシンに一般ユーザーとしてログインしたユーザー、スーパーユーザーとしてログインしたユーザー、NIS+ クライアントマシンにおいてスーパーユーザー特権で動作しているプロセスを含みます。つまり NIS+ の主体はクライアントユーザーの場合もクライアントワークステーションの場合もあります。
NIS+ の主体は、NIS+ サーバーから NIS+ サービスを提供する主体を指すこともあります。すべての NIS+ サーバーは NIS+ クライアントにもなるので、サーバーが NIS+ の主体となる場合もあります。
NIS+ サーバーは 2 つのセキュリティレベルの 1 つで動作できます。これらのレベルが、主体がその要求の認証を受ける際に提示しなければならない資格種類を判定します。NIS+ は最も高度のセキュリティレベル (レベル 2) で動作するように設計されています。レベル 0 はテスト、設定、デバッグ用です。セキュリティレベルについては表 6-1 にまとめてあります。
表 6-1 NIS+ セキュリティレベル
セキュリティレベル |
説明 |
---|---|
0 |
セキュリティレベル 0 は、NIS+ 名前空間の初期テストと初期設定を行うレベル。セキュリティレベル 0 で動作している NIS+ サーバーは、ドメイン内の全 NIS+ オブジェクトに対する完全なアクセス権をどの NIS+ 主体にも与える。レベル 0 はシステム管理者だけが設定管理のためにだけ使用する。レギュラーユーザーはネットワークにおける通常のオペレーションに使用できない |
1 |
セキュリティレベル 1 は AUTH_SYS セキュリティを利用する。このレベルは NIS+ のサポートを受けられないため、利用すべきではない |
2 |
セキュリティレベル 2 はデフォルトで、NIS+ が現在提供している最高レベルのセキュリティ。これは DES 資格を持たない要求には未認証クラスが与えられ、未認証クラスに割り当てられたアクセス権が与えられる。無効な DES 資格を使用する要求だけを認証する。資格を使用する要求は再試行される。有効な DES 資格獲得に繰り返し失敗すると、無効資格を持った要求として承認エラーになる。 (主体が原因となって資格が無効になる場合、その原因として要求をした主体に対してそのマシンで keylogin が実行されていなかったり、クロックの同期がとれていなかったり、鍵が不一致であるなどの様々な原因が考えられる) |
Solaris リリース 2.0 から 2.4 の環境では、 nispasswd を使用してパスワードを変更します。ただし、資格がなければ、nispasswd は機能しません 。より上位のレベルでの資格があった場合を除き、セキュリティレベル 0 以下では機能しません。 Solaris リリース 2.5 以降の場合は、セキュリティレベルや資格ステータスにかかわらず、passwd コマンドを使ってパスワードを変更できます。
NIS+ 資格の目的は、NIS+ サービスや NIS+ オブジェクトへのアクセスを要求する各主体の ID を「認証」 (確認) することにあります。つまり、NIS+ 資格および承認プロセスは SECURE RPC システムを実装することです。
資格および認証システムは他人になりすますのを防ぐシステムです。あるマシンのルート権限を持つユーザーが su コマンドを使って、ログインしていないもしくは別のマシンにログインしている第 2 のユーザーになりすまし、NIS+ アクセス権を使用して NIS+ オブジェクトにアクセスすることを妨げます。
サーバーが主体を認証すると、主体は 4 つの認証クラスのどれかに置かれ、次にサーバーは承認されている動作を知るためにアクセスしようとする NIS+ オブジェクトをチェックします。承認の詳細は、「NIS+ の承認とアクセス - 紹介」を参照してください。
主体には、「ユーザー」と「マシン」の 2 つの基本的な種類があります。
「ユーザー (user) 資格」。レギュラーユーザーとして NIS+ クライアントにログインした場合、NIS+ サービス要求には当人の「ユーザー」資格を含みます。
「マシン (machine) 資格」。スーパーユーザーとして NIS+ クライアントにログインした場合、サービス要求は「クライアントワークステーション」資格を使います。
NIS+ 主体には DES と LOCAL の 2 つの資格が用意されています。
認証を行う仕組みとしては DES 資格が唯一のものです。将来は他の仕組みも利用できるようになるかもしれません。 DES 資格と NIS+ 資格は同等のものではありません。
DES (データ暗号化規格) 資格は資格の 1 種であり、保護認証を提供するものです。このマニュアルで NIS+ 主体を認証するために資格をチェックすると記述している場合は、NIS+ がチェックしている DES 資格のことを意味します。
主体が NIS+ サービスを要求したり、NIS+ オブジェクトにアクセスするごとに、ソフトウエアは格納してある資格情報を使って主体の資格を作成します。DES 資格は NIS+ 管理機能によって各主体に作られた情報から作成されます。第 7 章「NIS+ 資格の管理」を参照してください。
主体の DES 資格の正当性を NIS+ が確認すると、その主体は「認証」されます。
主体は所有者、グループ、その他のいずれかの承認クラスを得るために認証されなければなりません。つまり、これらクラスの1つを得るために、有効な DES 資格を持つ必要があるのです 。有効な DES 資格を持たない主体は自動的に未認証クラスに割り当てられます。
当該主体がクライアントユーザーであるかクライアントワークステーションであるかにかかわらず、DES 資格情報は常に主体のホームドメインの cred テーブルに格納されます。
LOCAL 資格は、ユーザー ID 番号とホームドメイン名を含む NIS+ 主体名とのマップです。ユーザーがログインすると、システムは DES 資格が格納されているホームドメインを特定する LOCAL 資格をチェックします。システムはその情報を使ってユーザーの DES 資格情報を獲得します。
ユーザーがリモートドメインにログインした場合、その要求はユーザーのホームドメインを示す LOCAL 資格を使います。NIS+ は次にユーザーの DES 資格情報を知るためにユーザーのホームドメインを問い合わせます。こうして、たとえユーザーの DES 資格情報がリモートドメインに格納されていなくても、リモートドメインで認証されます。
LOCAL 資格情報はどのドメインにも格納できます。実際、リモートドメインにログインし認証されるためには、クライアントユーザーはリモートドメインの cred テーブルに LOCAL 資格を持っている必要があります。ユーザーが、アクセスしようとするリモートドメインに LOCAL 資格を持っていなかった場合、NIS+ はユーザーの DES 資格を獲得するためにユーザーのホームドメインに入ることができなくなります。そのような場合、ユーザーは認証されず未認証クラスを与えられることになります。
ユーザーは両方の資格を持つことができますが、マシンは DES 資格しか持てません。
すべてのマシンのルート UID は常に 0 であるため、ルートは他のマシンに対して NIS+ アクセスできません。もしマシン A のルート (UID=0) がマシン B にアクセスしようとすると、すでに存在しているマシン B のルート (UID=0) と衝突します。これでは、クライアント「ワークステーション」の LOCAL 資格が意味をなさないのでクライアント「ユーザー」にだけ認められています。
表 6-2 資格のタイプ
資格のタイプ |
クライアントユーザー |
クライアントワークステーション |
---|---|---|
DES |
Yes |
Yes |
LOCAL |
Yes |
No |
NIS+ の承認の基本的目的は、各 NIS+ 主体が各 NIS+ オブジェクトとサービスに対して持っているアクセス権を特定することにあります。
一度主体の NIS+ 要求が認証されると、NIS+ は承認クラスを与えます。NIS+ オブジェクトに対して行うことのできる動作を指定するアクセス権は各クラスに与えられます。クラスごとに別のアクセス権が与えられる場合、各承認クラスはそれぞれアクセス権を持つということです。
「承認クラス」には次の 4 つがあります。所有者、グループ、その他、未認証 (詳細は、次の「承認クラス」を参照)。
「アクセス権」には次の 4 つがあります。作成 (CREATE)、削除 (DESTROY)、変更 (MODIFY)、読み取り (READ) (詳細は、「NIS+ のアクセス権について」を参照)。
NIS+ オブジェクトは NIS+ 主体に直接アクセス権を与えずに、主体の 4 つの「クラス」にアクセス権を与えます。
「所有者」
「グループ」
各 NIS+ オブジェクトグループは関連した 1 つのグループを持ちます。オブジェクトグループのメンバーは NIS+ 管理機能が指定します。オブジェクトグループクラスに属している主体がグループクラスの権限を与えられます。この場合の「グループ」とは NIS+ グルーブを表します。UNIX のグループやネットグループのことではありません。
「その他」
その他クラスは、サーバーが認証できるすべての NIS+ 主体を包含するクラスです。所有者とグループクラスを除く、すべての認証されたものを意味します。
「未認証」
NIS+ 要求のすべてについて、システムは要求主体が属しているクラスと、そのクラスが所持しているアクセス権を判定します。
オブジェクトに対するアクセス権は、各クラスで任意の組み合わせが可能です。しかしながら、通常は上位クラスが下位クラスのすべての権限に追加権限を持つように割り当てられます。
たとえば、未認証クラスとその他クラスに読み取り権が与えられていれば、読み取り権と変更権の両方をグループクラスに、そして読み取り権、変更権、作成権、および削除権を所有者クラスに与えます。
4 つのクラスについては、以下に詳述します。
所有者は 1 つの NIS+ 主体です。
NIS+ オブジェクトへのアクセスを要求する主体は、所有者アクセス権を得る前に認証され (有効な DES 資格を提示し) なければなりません。
デフォルトでは、オブジェクト所有者はオブジェクトを作成できる主体です。しかしながら、オブジェクト所有者は 2 つの方法で別の主体に所有権を譲ることができます。
オブジェクトが作成されたときに、主体が別の所有者を指定する方法 ( 「コマンドによるアクセス権の指定」を参照)
オブジェクトの作成後に、主体がオブジェクトの所有権を変更する方法 ( 「オブジェクトとエントリの所有権の変更」を参照)
一度主体が所有権を放棄すると、その主体はオブジェクトに対する所有者のアクセス権すべてを放棄することになり、グループ、その他、未認証のいずれかの所有権を持つことになります。
オブジェクトグループは 1 つの NIS+ グループです。この場合の「グループ」とは、UNIX のグループやネットグループのことではありません。
NIS+ オブジェクトにアクセスを要求する主体は、認証され (有効な DES 資格を提示し) かつグループアクセス権を与えられる前にそのグループに属していなければなりません。
1 つの NIS+ グループは NIS+ 主体の集合であり、名前空間へのアクセス権を与えるのに都合の良いようにまとめられたものです。NIS+ グループに与えられるアクセス権はそのグループのメンバーである主体すべてに適用されます。オブジェクトの所有者が、そのオブジェクトのグループに属している必要はありません。
オブジェクトが作成された時、そのオブジェクトはデフォルトグループに割り当てられます。オブジェクトが作成された時でもその後でも、そのオブジェクトをデフォルト以外のグループに割り当てることができます。オブジェクトグループはいつでも変更できます。
NIS+ グループに関する情報は NIS+ group テーブルに格納されるのではないことに注意してください。NIS+ group テーブルには UNIX グループに関する情報が格納されます。NIS+ グループに関する情報は、適切な groups_dir ディレクトリのオブジェクトに格納されます。
NIS+ グループの情報は、各 NIS+ ドメインの groups_dir サブディレクトリにある、NIS+ グループ「オブジェクト」に格納されます。
NIS+ グループの管理については、第 11 章「NIS+ グループの管理」を参照してください。
その他クラスは、NIS+ によって認証されたすべての NIS+ 主体のクラスです。すなわち、所有者およびグループクラスのすべてと有効な DES 資格を提示したものを加えたものです。
その他に与えられたアクセス権は、認証されたすべての主体に適用されます。
未認証クラスは、正しく認証されなかったものすべてで構成されます。すなわち、有効な DES 資格を提示しなかったものです。
NIS+ オブジェクトと承認クラスには各レベルに適用される階層があります。標準的な NIS+ ディレクトリ階層のデフォルトは次のようになります。
「ディレクトリレベル」
各 NIS+ ドメインには groups_dir と org_dir という 2 つの NIS+ ディレクトリオブジェクトがあります。groups_dir ディレクトリオブジェクトはさまざまなグループで構成されます。各 org_dir ディレクトリオブジェクトには種々のテーブルが含まれます。
「グループレベルまたはテーブルレベル」
グループは個々のエントリやグループで構成されます。テーブルには列 と個々のエントリが含まれます。
「列レベル」
テーブルは 1 つ以上の列で構成されます。
「エントリ (行) レベル」
グループもしくはテーブルは 1 つ以上のエントリを持ちます。
各レベルには 4 つの承認クラスが適用されます。ディレクトリオブジェクトはそれ自身の所有者とグループを持ちます。ディレクトリ内の個々のテーブルは、ディレクトリの所有者およびグループと異なる所有者およびグループを持ちます。テーブル内では、1 エントリ (行) が個々の所有者もしくはグループを持ちます。この所有者もしくはグループは、テーブル全体の所有者やグループとは異なり、またオブジェクト全体の所有者やグループとも異なります。テーブル内の個々の列は、テーブル全体と同じ所有者やグループを持ちます。
NIS+ オブジェクトはオブジェクト定義の一部としてそのアクセス権を指定します。「NIS+ オブジェクトのアクセス権の読み取り」に niscat -o コマンドを使用した場合の説明があります。
NIS+ オブジェクトは、UNIX ファイルが UNIX ユーザーに対するアクセス権を指定するのと同じ方法で、NIS+ 主体に対するアクセス権を指定します。アクセス権は、NIS+ 主体が NIS+ オブジェクトについて実行することが許されている動作の種類を表します。
NIS+ の動作はオブジェクトの種類によって異なりますが、読み取り、変更、作成、および削除の 4 つのクラスに分類されます。
「読み取り」
オブジェクトの読み取り権を持った主体はオブジェクトの内容を読み取ることができます。
「変更」
オブジェクトの変更権を持った主体はオブジェクトの内容を変更することができます
「削除」
オブジェクトの削除権を持った主体はオブジェクトの内容を削除することができます。
「作成」
上位レベルのオブジェクトの作成権を持った主体はそのレベル内で新しいオブジェクトを作成できます。すなわち、NIS+ ディレクトリオブジェクトの作成権を持っていれば、そのディレクトリ内に新しいテーブルを作成できます。NIS+ テーブルの作成権を持っていれば、そのテーブル内に新しい列とエントリを作成できます。
NIS+ クライアントから NIS+ サーバーへのすべての通信は、実際には特定の NIS+ オブジェクトに対してこれらの動作のうちの 1 つを実行してほしいという要求です。たとえば、NIS+ 主体が他のワークステーションの IP アドレスを要求した場合、これは実際には、この種の情報を格納している「hosts」テーブルオブジェクトへの読み取り権を要求しています。主体が NIS+ 名前空間にディレクトリを追加するようサーバーに要求した場合、これは実際には、そのディレクトリの親オブジェクトに対して「変更」権を要求しています。
これらの権限は、ディレクトリからテーブルへ、さらにテーブルの列およびエントリへと展開することを覚えておいてください。たとえば、新しいテーブルを作成するには、テーブルを格納するディレクトリオブジェクトに対して作成権を持っていなければなりません。テーブルを作成する場合は、ユーザーはそのテーブルのデフォルト所有者になります。所有者として、テーブルに新しいエントリを作成できる作成権を自分自身に割り当てることができます。テーブルに新しいエントリを作成する場合は、ユーザーはそのエントリのデフォルト所有者になります。所有者として、他のユーザーにテーブルレベルの作成権を与えることもできます。たとえば、テーブルのグループクラスにテーブルレベルの作成権を与えることができます。その場合、そのテーブルグループのすべてのメンバーがテーブルに新しいエントリを作成できます。新規のテーブルエントリを作成する個々のグループメンバーはそのエントリのデフォルト所有者になります。
NIS+ オブジェクトの「管理権限」を持つものは誰でも NIS+ の管理者になります。説明を分かりやすくするために、管理権限が作成権、削除権、そしていくつかのオブジェクトに対しては変更権を持つと定義します。NIS+ のアクセス権については、「NIS+ のアクセス権について」を参照してください。
NIS+ オブジェクトを作成するものは誰でもそのオブジェクトに対する初期アクセス権を持つと設定します。もし作成者が管理権限をオブジェクトの所有者に限った場合 (初期状態では作成者) は、所有者だけがそのオブジェクトに対する管理権限を持ちます。一方、作成者が管理権限をオブジェクトのグループに与えた場合は、グループの全員がそのオブジェクトに対して管理権限を持つことになります。
あるオブジェクトに対して管理権限を持つものは誰でもそのオブジェクトの NIS+ 管理者とみなされます。
すなわち、NIS+ ソフトウエアは NIS+ 管理者を 1 人にしようとするものではないということです。
理論的には、管理権限をその他クラスに与えることも、未認証クラスに与えることもでき、ソフトウエア上では可能です。しかし、管理権限をグループクラス以上に広げて与えてしまうと、NIS+ のセキュリティを実質的に無効にしてしまいます。もし管理権限をその他クラスや未認証クラスに与えた場合、NIS+ のセキュリティは保証されません。
管理者のパスワード、資格、および鍵には次のコマンドを使用します。各コマンドの説明についてはマニュアルを参照してください。
chkey - 主体の Secure RPC 鍵の組み合わせを変更します。必要のない場合は chkey を使わずに、passwd を使ってください。詳細は、「NIS+ 主体の鍵の変更」 を参照してください。
keyserv - サーバーに非公開暗号鍵を格納させます。詳細は、「キーログイン」を参照してください。
nisaddcred - NIS+ 主体に資格 (credential) を作成します。詳細は、「資格情報の作成」および、「NIS+ 資格情報の管理」を参照してください。
nisupdkeys - ディレクトリオブジェクト内の公開鍵を更新します。詳細は、「公開鍵の更新」を参照してください。
passwd - 主体のパスワードを変更し管理します。詳細は、第 10 章「パスワードの管理」を参照してください。