Solaris ネーミングの管理

第 3 章 NIS+ の紹介

この章では、NIS+ の概要を述べます。

NIS+ および DNS 名前空間を設定する方法については、『Solaris ネーミングの設定と構成』を参照してください。用語や略語の定義については、用語集を参照してください。

NIS+ について

NIS+ は NIS によく似たネットワークネームサービスですが、より多くの機能を備えています。NIS+ は NIS を機能拡張したものではなく、新しいソフトウェアプログラムとなっています。

NIS+ ネームサービスは、ネットワークがどのような構造であっても、その周囲を取り巻くことにより、サービスを設置した組織の形態に適合するように設計されています。

NIS+ はワークステーションのアドレス、セキュリティ情報、メール情報、Ethernet インタフェース、ネットワークサービスなどの情報を 1 カ所に格納して、ネットワーク上のすべてのワークステーションからアクセスできるようにします。このように構成されたネットワーク情報を、NIS+「名前空間」と呼びます。

NIS+ 名前空間は階層構造となっていて、UNIX のディレクトリファイルシステムによく似ています。階層構造になっていることから、NIS+ 名前空間を企業組織の階層に合わせて構成できます。名前空間の情報のレイアウトは、その「物理的」構成とは無関係です。したがって、NIS+ 名前空間は、独立して管理できる複数のドメインに分割できます。クライアントは、適切なアクセス権があれば、自分のドメインだけではなく、ほかのドメインの情報にもアクセスできます。

NIS+ はクライアントサーバーモデルを使用して、NIS+ 名前空間に情報を格納し、またその情報にアクセスできます。各ドメインは複数のサーバーによってサポートされます。最も重要なサーバーは「マスター」サーバーと呼ばれ、バックアップサーバーは「複製」サーバーと呼ばれます。ネットワーク情報は、内部 NIS+ データベース内にある 16 個の標準 NIS+ テーブルに格納されています。マスターサーバーと複製サーバーは、共に NIS+ サーバーソフトウェアを実行し、NIS+ テーブルのコピーを管理します。マスターサーバー上の NIS+ データの変更は、複製サーバーにも自動的に伝達されます。

NIS+ には、名前空間の構造とその情報を保護するために、高度なセキュリティシステムが組み込まれています。NIS+ は認証 (authentication) と承認 (authorization) を使用して、クライアントの情報要求に応えるべきかどうかを検証します。「認証」とは、情報の要求者がネットワークの正当なユーザーであるかどうかを判定することです。「承認」とは、要求された情報に関して特定のユーザーが入手または変更を許可されているかどうかを判定することです。

Solaris のクライアントは、ネームサービススイッチ (/etc/nsswitch.conf ファイル) を使用して、ワークステーションがどこからネットワーク情報を取り出すかを決定します。この種の情報はローカル側の /etc ファイルや、NIS、DNS、NIS+ に格納されます。ネームサービススイッチでは、情報の種類ごとに異なるソースを指定できます。

NIS+ のメリット

NIS と比較すると、NIS+ には次のようなメリットがあります。

「NIS+ のセキュリティ」で説明したセキュリティシステムを使用すれば、特定のテーブルの個々のエントリに対する特定のユーザーのアクセスを制御できます。このようなセキュリティ方式では、システムを安全に維持でき、しかも NIS+ 名前空間全体またはテーブル全体が損傷する危険性がなく、管理業務を広く分散させることができます。

NIS+ の階層構造により、1 つの名前空間に複数のドメインを置くことができます。ドメインに分割することにより、管理が容易になります。個々のドメインは完全に独立して管理できるため、システム管理者の負担が軽減され、非常に大きな名前空間の管理責任から解放されます。このように、セキュリティシステムを分散型のネットワーク管理と組み合わせることによって、管理作業の負担を分担することができます。

ドメインが個別に管理されているとしても、すべてのクライアントに名前空間内のすべてのドメインの情報を参照するアクセス権を与えることができます。クライアントは自分のドメイン内のテーブルしか見ることができないため、クライアントがほかのドメイン内のテーブルにアクセスするには、そのテーブルについて明示的にアドレスを指定しなければなりません。

増分更新とは、名前空間内での情報の高速の更新を意味します。ドメインは独立して管理されるため、マスターサーバーテーブルへの変更は、名前空間全体にではなく、その複製サーバーだけに伝達しますが、伝達が行われると、これらの変更はすぐに名前空間全体で有効になります。

NIS+ と NIS の違い

「NIS+」と「NIS」はいくつかの点で違いがあります。NIS+ は多くの新機能を備え、同じような概念でも用語が異なっています。わからない用語があれば用語集を参照してください。NIS と NIS+ の主な相違点を表 3-1 にまとめます。

表 3-1 NIS と NIS+ の違い

NIS 

NIS+ 

フラットなドメイン - 階層なし 

階層構造 - データを名前空間内の異なるレベルに格納 

データを 2 列のマップに格納 

データを複数の列のテーブルに格納 

認証を使用しない 

DES 認証を使用 

ネットワーク情報源は 1 つ 

ネームサービススイッチ - クライアントは NIS、NIS+、DNS、またはローカル側の /etc ファイルから情報源を選択できる

バッチ伝達のため更新は遅い 

すぐに伝達される増分更新 

NIS+ は NIS に代わるものとして設計されました。NIS は、1980 年代に普及していたクライアントサーバーコンピューティングネットワークの管理要件に応えるものです。その当時のクライアントサーバーネットワークは、通常、クライアント数が数百を超えることはなく、多目的サーバーの数もわずかでした。これらのネットワークは数カ所のリモートサイトを結んでいるだけであり、しかもユーザーに専門知識があり信頼できたため、セキュリティを必要としませんでした。

しかしクライアントサーバーネットワークは 1980 年代半ば頃から急速な成長を遂げました。現在では、世界中のサイトに配置された 10〜100 台の専用サーバーにサポートされた 100〜10,000 台のマルチベンダークライアントが存在し、複数の公衆網に接続されています。さらに、ネットワークが格納する情報は、NIS の時代よりもはるかに急速に変化しています。このようなネットワークの規模と複雑性に対処するため、新しい管理方式が必要になりました。NIS+ はこれらの必要性に焦点をあてて設計されました。

NIS の名前空間は、フラットな状態で管理機能を集中管理しています。1990 年代に入りネットワークはスケーラビリティと管理の分散化を求めるようになったため、NIS+ の名前空間は DNS の場合のように階層ドメインをベースに設計されました。

たとえば、図 3-1doc という名前の親ドメインと、salesmanf という 2 つのサブドメインを持つ会社の例を示しています。

図 3-1 階層型ドメインの例

Graphic

これによって NIS+ は、小規模から大規模まで、広い範囲のネットワークで使用できます。また、NIS+ のサービスを組織の成長に適合させることもできます。たとえば、ある会社が 2 つの部門に分かれた場合、それに対する NIS+ の名前空間を 2 つのドメインに分割し、これらを自律的に管理できます。インターネットがドメインの管理を下のレベルに委譲するように、NIS+ のドメインも程度の差はあっても互いに独立して管理できます。

NIS+ は DNS と似たドメイン階層を使用しますが、NIS+ のドメインは DNS のドメインよりずっと多くの情報を持っています。DNS のドメインは、そのクライアントの名前とアドレスの情報を格納するだけです。一方 NIS+ のドメインには、組織の一部の中でのワークステーション、ユーザー、およびネットワークサービスについての「情報」が集められています。

ドメインをこのように分割することで、管理はより自律的になり、規模が拡大した場合にもうまく対処できますが、情報へのアクセスが以前より困難になることもありません。クライアントは他のドメインの情報にも、同じドメインと同じようにアクセスできます。あるドメインを別のドメインの内部から管理することもできます。

NIS+ のクライアントサーバーの配置は、各ドメインが一組のサーバーによってサポートされるという点では、NIS や DNS の配置と似ています。 主サーバーは「マスター」サーバーと呼ばれ、バックアップサーバーは「複製」サーバーと呼ばれます。マスターサーバーと複製サーバーは、両方とも NIS+ のサーバーソフトウェアを実行し、NIS+ テーブルのコピーを保持します。主サーバーはオリジナルのテーブルを、バックアップサーバーはコピーを、それぞれ格納します。

しかし NIS+ は、NIS とはまったく異なる更新方式を使用します。NIS が開発された当時は、格納される情報の型はめったに変化しなかったため、NIS は安定性に重点を置いた更新方式によって開発されました。NIS テーブルの更新は手作業で処理され、大規模な組織では、すべての複製サーバーへの伝達に 1 日以上かかることもあります。この原因の一つは、マップ内の情報が変化するたびにマップ全体を再作成して伝達しなければならなかったからです。

しかし NIS+ は、複製サーバーに対する「増分 (incremental)」更新が可能です。マスターサーバー上での変更は依然として必要ですが、いったん変更すれば、複製サーバーに自動的に伝達され、すぐに名前空間全体から使用できるようになります。マップを「作成」したり、伝達を待つ必要はありません。

NIS+ のドメイン構造、サーバー、およびクライアントの詳細は、第 4 章「NIS+ の名前空間」を参照してください。

NIS+ のドメインは、次に示すようなネームサービススイッチを使用して、その NIS+ クライアントを経由してインターネットに接続できます (「NIS+ とネームサービススイッチ」を参照)。このクライアントが DNS のクライアントでもある場合、自分のスイッチ構成ファイルを設定して、NIS+ テーブルだけでなく、DNS ゾーンファイルまたは NIS マップ内の情報を検索できます。

NIS+ は、マップやゾーンファイルではなく、「テーブル」に情報を格納します。NIS+ は 16 種類のあらかじめ定義したテーブル (つまり「システム」テーブル) を提供します。

Graphic

各テーブルにはそれぞれ異なる情報が格納されています。たとえば、hosts テーブルにはワークステーションアドレスについての情報が、password テーブルにはネットワークのユーザーについての情報が格納されています。

NIS+ のテーブルは、NIS で使用されるマップと比較して 2 つの点で大きく改良されています。第 1 に、NIS+ のテーブルは、最初の列 (キーと呼ばれることもある) だけではなく、任意の列ごとにアクセスできます。これによって、NIS で使用される hosts.bynamehosts.byaddr マップなどの二重マップが必要なくなります。第 2 に、NIS+ のテーブル内の情報は、3 つの細分化されたレベルでアクセスし、操作できます。テーブルレベル、エントリレベル、および列レベルです。NIS+ のテーブルとそこに格納されている情報については、第 5 章「NIS+ のテーブルと情報」で説明します。

NIS 管理者は、以下に示す原則および条件下で NIS を NIS+ と共に使用できます。

NIS+ のセキュリティ

NIS+ は、「承認と認証」という相補的なプロセスによって、名前空間の構造と格納する情報を保護します。

NIS+ が要求どおりの動作をするのは、「主体が認証されていて (正当な資格を持っていて)、要求された操作が、該当する構成要素において承認されている」という場合のみです。資格がない (または完全でない)、要求された操作が承認されていないという場合、NIS+ はアクセス要求を拒否します。NIS+ セキュリティシステムの詳細は、第 6 章「セキュリティの概要」パート II「NIS+ の紹介と概要」を参照してください。

NIS+ とネームサービススイッチ

NIS+ は、「ネームサービススイッチ」と呼ばれる別の機能と連係して動作します。ネームサービススイッチは、単に「スイッチ」と呼ばれることもあります。これを使用することにより、Solaris 7 リリースベースのワークステーションは、複数のネームサービスから情報を入手できます。具体的には、ローカルファイル、つまり /etc 内のファイル、NIS マップ、DNS ゾーンファイル、または NIS+ テーブルからです。このスイッチによって、ソースの選択が可能となるだけでなく、ワークステーションは情報の「種類」ごとに別のソースを指定できます。このスイッチの詳細は、第 2 章「ネームサービススイッチ」を参照してください。

Solaris 1.x と NIS 互換モード

Solaris リリース 1.x または 2.x では、NIS+ を NIS が動作しているワークステーションで使用できます。つまり、NIS+ ドメイン内にあるマシンはそれぞれの nsswitch.conf ファイルを nisplus ではなく nis に設定できます。NIS を実行中のマシン上で NIS+ のサービスにアクセスする場合は、NIS+ のサーバーを「NIS 互換モード」で動作させる必要があります。

NIS+ は NIS 互換モードを提供します。NIS 互換モードを使用すれば、Solaris 7 リリースを実行している NIS+ サーバーは、NIS+ クライアントからの要求に応答しながら、NIS クライアントからの要求にも応答できます。NIS+ は 2 つのサービスインタフェースを提供することによってこれを実現します。1 つが NIS+ クライアントの要求に応答し、もう 1 つが NIS クライアントの要求に応答します。

このモードでは、NIS クライアントに対してさらに設定や変更を行う必要はありません。実際、NIS クライアントは、応答しているサーバーが NIS サーバーではないことを意識する必要はありません。ただし、NIS 互換モードで動作している NIS+ サーバーは ypupdateypxfr のプロトコルをサポートしないため、複製またはマスターの NIS サーバーとしては使用できません。NIS 互換モードの詳細は、『NIS+ への移行』を参照してください。

さらに 2 つの相違を指摘しておく必要があります。1 つは、NIS 互換モードでサーバーを設定する命令が標準の NIS+ サーバーの設定に使用される命令とは少し異なるということです。詳細は、『Solaris ネーミングの設定と構成』を参照してください。もう 1 つの相違としては、NIS 互換モードは、NIS+ の名前空間内のテーブルに対するセキュリティにも関係があります。NIS のクライアントソフトウェアは、NIS+ サーバーが NIS+ クライアントに与える資格 (credential) を提供する機能がないため、NIS クライアントからの要求はすべて「未認証」として分類されます。したがって、NIS クライアントが NIS+ テーブル内の情報にアクセスできるように、NIS+ の名前空間内のテーブルは未認証の要求に対してアクセス権を提供しなければなりません。これはパート II で説明するように、サーバーを NIS 互換モードで設定するために使用されるユーティリティによって自動的に処理されます。認証プロセスと NIS 互換モードについては、第 6 章「セキュリティの概要」を参照してください。

NIS+ の管理コマンド

NIS+ は、名前空間を管理するためのコマンドをフルセットで提供します。表 3-2 は、これらのコマンドの概要をまとめたものです。

表 3-2 NIS+ の名前空間管理コマンド

コマンド 

説明 

nisaddcred

NIS+ 主体用の資格を作成し、これらを cred テーブルに格納する

nisaddent

/etc 内のファイルまたは NIS マップからの情報を NIS+ のテーブルに追加する

nisauthconf

オプションで Diffie - Hellman 鍵の長さを設定する 

nisbackup

NIS ディレクトリのバックアップコピーを取る 

nis_cachemgr

NIS+ クライアント上で NIS+ キャッシュマネージャを起動する 

niscat

NIS+ テーブルの内容を表示する 

nis_checkpoint

ログには入力されたが、ディスクにチェックポイントが実行されていないデータについて強制的にチェックポイントを実行する 

nischgrp

NIS+ オブジェクトのグループ所有者を変更する 

nischmod

オブジェクトのアクセス権を変更する 

nischown

NIS+ オブジェクトの所有者を変更する 

nischttl

NIS+ オブジェクトの生存期間の値を変更する 

nisclient

NIS+ 主体を初期化する 

nisdefaults

NIS+ オブジェクトのデフォルト値 (ドメイン名、グループ名、ワークステーション名、NIS+ 主体名、アクセス権、ディレクトリ検索パス、および生存期間) を表示する 

nisgrep

NIS+ テーブル内のエントリを検索する 

nisgrpadm

NIS+ グループの作成または削除、あるいはそのメンバーリストを表示する。また、グループへのメンバー追加、メンバー削除、またはグループメンバーかどうかのテストを行う 

nisinit

NIS+ のクライアントまたはサーバーを初期設定する 

nisln

2 つの NIS+ オブジェクト間でシンボリックリンクを作成する 

nislog

NIS+ 処理用ログの内容を表示する 

nisls

NIS+ ディレクトリの内容を表示する 

nismatch

NIS+ テーブル内のエントリを検索する 

nismkdir

NIS+ のディレクトリを作成し、そのマスターサーバーと複製サーバーを指定する 

nispasswd

NIS+ の passwd テーブルに格納されているパスワード情報を変更する (nispasswd よりは、passwd または passwd -r nisplus を使用する)

nis_ping

複製サーバーのデータをマスターサーバーのデータに強制更新する 

nispopulate

新しい NIS+ ドメインに NIS+ テーブルを生成する 

nisprefadm

クライアントが NIS+ サーバーから NIS+ 情報を検索する順序を指定する 

nisrestore

以前にバックアップを取った NIS+ ディレクトリを復元する。新しい NIS+ 複製サーバーを急速にオンラインにするときにも使用する 

nisrm

名前空間から NIS+ のオブジェクト (ディレクトリを除く) を削除する 

nisrmdir

名前空間から NIS+ のディレクトリと複製を削除する 

nisserver

新しい NIS+ サーバーを設定するときに使うシェルスクリプト 

nissetup

org_dir ディレクトリと groups_dir ディレクトリ、および NIS+ ドメイン用の完全セットの (未生成) NIS+ テーブルを作成する

nisshowcache

NIS+ キャッシュマネージャによって管理される NIS+ 共有キャッシュの内容を表示する 

nisstat

NIS+ サーバーに関する統計やその他の情報を報告する 

nistbladm

NIS+ テーブルの作成または削除と、NIS+ テーブル内のエントリの追加、修正、または削除を行う 

nistest

NIS+ 名前空間の現在の状態を報告する 

nisupdkeys

NIS+ オブジェクトに格納されている公開鍵を更新する 

passwd

NIS+ パスワードテーブルに保管されているパスワード情報を変更する。またパスワードの経過時間やその他のパスワード関連のパラメタを管理する 

NIS+ の API

NIS+ の API (アプリケーションプログラミングインタフェース) とは、アプリケーションが NIS+ のオブジェクトへのアクセスと修正を行うために呼び出す関数群です。NIS+ の API には、9 つのカテゴリに分類される 54 種類の関数があります。