この章では、 NIS+ の概要を述べます。
NIS+ および DNS 名前空間を設定する方法については、『Solaris ネーミングの設定と構成』を参照してください。用語や略語の定義については、用語集を参照してください。
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+ には次のようなメリットがあります。
安全性の高いデータアクセス
階層構造を使用した分散型のネットワーク管理
非常に大きな名前空間の管理
異なるドメインにあるリソースへのアクセス
増分 (incremental) 更新
「NIS+ のセキュリティ」で説明したセキュリティシステムを使用すれば、特定のテーブルの個々のエントリに対する特定のユーザーのアクセスを制御できます。このようなセキュリティ方式では、システムを安全に維持でき、しかも NIS+ 名前空間全体またはテーブル全体が損傷する危険性がなく、管理業務を広く分散させることができます。
NIS+ の階層構造により、1 つの名前空間に複数のドメインを置くことができます。ドメインに分割することにより、管理が容易になります。個々のドメインは完全に独立して管理できるため、システム管理者の負担が軽減され、非常に大きな名前空間の管理責任から解放されます。このように、セキュリティシステムを分散型のネットワーク管理と組み合わせることによって、管理作業の負担を分担することができます。
ドメインが個別に管理されているとしても、すべてのクライアントに名前空間内のすべてのドメインの情報を参照するアクセス権を与えることができます。クライアントは自分のドメイン内のテーブルしか見ることができないため、クライアントがほかのドメイン内のテーブルにアクセスするには、そのテーブルについて明示的にアドレスを指定しなければなりません。
増分更新とは、名前空間内での情報の高速の更新を意味します。ドメインは独立して管理されるため、マスターサーバーテーブルへの変更は、名前空間全体にではなく、その複製サーバーだけに伝達しますが、伝達が行われると、これらの変更はすぐに名前空間全体で有効になります。
「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-1 は doc という名前の親ドメインと、sales と manf という 2 つのサブドメインを持つ会社の例を示しています。
これによって 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 種類のあらかじめ定義したテーブル (つまり「システム」テーブル) を提供します。
各テーブルにはそれぞれ異なる情報が格納されています。たとえば、hosts テーブルにはワークステーションアドレスについての情報が、password テーブルにはネットワークのユーザーについての情報が格納されています。
NIS+ のテーブルは、NIS で使用されるマップと比較して 2 つの点で大きく改良されています。第 1 に、NIS+ のテーブルは、最初の列 (キーと呼ばれることもある) だけではなく、任意の列ごとにアクセスできます。これによって、NIS で使用される hosts.byname や hosts.byaddr マップなどの二重マップが必要なくなります。第 2 に、NIS+ のテーブル内の情報は、3 つの細分化されたレベルでアクセスし、操作できます。テーブルレベル、エントリレベル、および列レベルです。NIS+ のテーブルとそこに格納されている情報については、第 5 章「NIS+ のテーブルと情報」で説明します。
NIS 管理者は、以下に示す原則および条件下で NIS を NIS+ と共に使用できます。
同一ドメインに NIS サーバーと NIS+ サーバーの両方が存在する
NIS 管理者は同一ドメインで NIS サーバーと NIS+ サーバーの両方を動作させることは可能ですが、このような動作を長時間行わせることは望ましくありません。一般に、同一ドメイン内での NIS サーバーと NIS+ サーバーを両方使用するのは、NIS から NIS+ への短い移行期間だけに制限するべきです。
サブドメイン
NIS 管理者のルートドメインのマスターサーバーで NIS+ が動作している場合は、NIS 管理者は、すべてのサーバーで NIS が動作しているサブドメインを設定できます。NIS 管理者のルートドメインのマスターサーバーで NIS が動作している場合は、NIS 管理者はサブドメインの設定はできません。
同一ドメインに複数のワークステーションが存在する
同一ドメイン内のサーバーで NIS+ が動作している場合は、NIS+、NIS、または /etc ファイルを使ってネームサービス情報を取得できるように、ドメイン内の各マシンを設定できます。NIS+ サーバーが NIS クライアントのニーズを満たすには、この NIS+ サーバーが NIS 互換モードで動作している必要あります。
同一ドメイン内の異なる複数のサーバーで NIS が動作している場合は、NISまたは /etc ファイルを使ってネームサービス情報を取得できるように、このドメイン内の各マシンを設定することができます (各マシンは NIS+ の使用不可)。
さまざまなネームサービス情報を取得するためにワークステーションがどのサービスを使用するかは、そのマシンの nsswitch.conf ファイルで制御されます。このファイルは、「スイッチ」ファイルと呼ばれています。詳細は、第 2 章「ネームサービススイッチ」を参照してください。
NIS+ は、「承認と認証」という相補的なプロセスによって、名前空間の構造と格納する情報を保護します。
「承認」は、名前空間の構成要素に対して、「誰がどのような操作を行えるのか」ということを指定することです。すべての構成要素について行われます。
「認証」は、名前空間へのアクセス要求をしている NIS+「主体」 (プロセス、マシン、ルート、ユーザーなど) が「正当なものであるかどうかを確認」することです。「正当な NIS+ 主体」とは、NIS+「資格」を持っているものを指します。名前空間へのアクセスが行われると、必ずその要求者 (主体) の認証が行われます。
NIS+ が要求どおりの動作をするのは、「主体が認証されていて (正当な資格を持っていて)、要求された操作が、該当する構成要素において承認されている」という場合のみです。資格がない (または完全でない)、要求された操作が承認されていないという場合、NIS+ はアクセス要求を拒否します。NIS+ セキュリティシステムの詳細は、Part II の「セキュリティの概要」を参照してください。
NIS+ は、「ネームサービススイッチ」と呼ばれる別の機能と連係して動作します。ネームサービススイッチは、単に「スイッチ」と呼ばれることもあります。これを使用することにより、Solaris 2.6 リリースベースのワークステーションは、複数のネームサービスから情報を入手できます。具体的には、ローカルファイル、つまり /etc 内のファイル、NIS マップ、DNS ゾーンファイル、または NIS+ テーブルからです。このスイッチによって、ソースの選択が可能となるだけでなく、ワークステーションは情報の「種類」ごとに別のソースを指定できます。このスイッチの詳細は、「ネームサービススイッチ」を参照してください。
Solaris リリース 1.x または 2.x では、NIS+ を NIS が動作しているワークステーションで使用できます。つまり、NIS+ ドメイン内にあるマシンはそれぞれの nsswitch.conf ファイルを nisplus ではなく nis に設定できます。NIS を実行中のマシン上で NIS+ のサービスにアクセスする場合は、NIS+ のサーバーを「NIS 互換モード」で動作させる必要があります。
NIS+ は NIS 互換モードを提供します。NIS 互換モードを使用すれば、Solaris 2.6 リリースを実行している NIS+ サーバーは、NIS+ クライアントからの要求に応答しながら、NIS クライアントからの要求にも応答できます。NIS+ は 2 つのサービスインタフェースを提供することによってこれを実現します。1 つが NIS+ クライアントの要求に応答し、もう 1 つが NIS クライアントの要求に応答します。
このモードでは、NIS クライアントに対してさらに設定や変更を行う必要はありません。実際、NIS クライアントは、応答しているサーバーが NIS サーバーではないことを意識する必要はありません。ただし、NIS 互換モードで動作している NIS+ サーバーは ypupdate と ypxfr のプロトコルをサポートしないため、複製またはマスターの NIS サーバーとしては使用できません。NIS 互換モードの詳細は、『NIS+ への移行』を参照してください。
さらに 2 つの相違を指摘しておく必要があります。1 つは、NIS 互換モードでサーバーを設定する命令が標準の NIS+ サーバーの設定に使用される命令とは少し異なるということです。詳細は、『Solaris ネーミングの設定と構成』を参照してください。もう 1 つの相違としては、NIS 互換モードは、NIS+ の名前空間内のテーブルに対するセキュリティにも関係があります。NIS のクライアントソフトウェアは、NIS+ サーバーが NIS+ クライアントに与える資格 (credential) を提供する機能がないため、NIS クライアントからの要求はすべて「未認証」として分類されます。したがって、NIS クライアントが NIS+ テーブル内の情報にアクセスできるように、NIS+ の名前空間内のテーブルは未認証の要求に対してアクセス権を提供しなければなりません。これは Part II で説明するように、サーバーを NIS 互換モードで設定するために使用されるユーティリティによって自動的に処理されます。認証プロセスと NIS 互換モードについては、第 6 章「セキュリティの概要」を参照してください。
NIS+ は、名前空間を管理するためのコマンドをフルセットで提供します。表 3-2 は、これらのコマンドの概要をまとめたものです。
表 3-2 NIS+ の名前空間管理コマンド
コマンド |
説明 |
---|---|
nisaddcred |
NIS+ 主体用の資格を作成し、これらを cred テーブルに格納する |
nisaddent |
/etc 内のファイルまたは NIS マップからの情報を NIS+ のテーブルに追加する |
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+ のオブジェクトへのアクセスと修正を行うために呼び出す関数群です。NIS+ の API には、9 つのカテゴリに分類される 54 種類の関数があります。
オブジェクト操作関数 (nis_names())
テーブルアクセス関数 (nis_tables())
ローカル名関数 (nis_local_names())
グループ操作関数 (nis_groups())
アプリケーションサブルーチン関数 (nis_subr())
その他の関数 (nis_misc())
データベースアクセス関数 (nis_db())
エラーメッセージ表示関数 (nis_error())
トランザクションログ関数 (nis_admin())