Solaris WBEM Services ソフトウェアは、Solaris オペレーティング環境での Sun が固有に WBEM を実装したものです。このソフトウェアは、次のサービスを提供します。
アプリケーション、CIM Repository、およびプロバイダ間で CIM データを転送する管理サービス
CIM オブジェクトへのユーザーアクセスを制御するセキュリティサービス
ログファイルへのログ記録の書き込みと読み出しを行うロギングサービス
この章では、Solaris WBEM Services の内容について述べるとともに、このソフトウェアのインストール方法とシステムから削除する方法について説明します。取り上げる内容は次のとおりです。
Solaris WBEM Services には、次のコンポーネントが含まれます。
CIM Object Manager
Sun WBEM User Manager
Solaris プロバイダ
Common Information Model (CIM) Object Manager は、CIM オブジェクトの管理とオブジェクトデータの送信を行います。 CIM Object Manager は、実行可能な標準 Java クラスファイルで、インストール後の処理の一環として自動的に起動されます。CIM オブジェクトは、内部的には Java クラスとして表されます。アプリケーションがクライアント API を使用して管理対象オブジェクトについての情報を要求または更新する場合、CIM Object Manager はそのオブジェクトに適したプロバイダ、または CIM Repository (永続的な記憶領域) と通信します。
プロバイダによって処理されるクラス、プロパティ、およびメソッドは、そのクラスのために CIM Object Manager と通信するプロバイダを識別するための Provider 修飾子を持ちます。Provider 修飾子を持つクラスについての要求を受け取る場合、CIM Object Manager はその要求を指定されたプロバイダに送ります。プロバイダが指定されない場合は、Java Naming and Directory Interface (JNDI) を使用して要求をデータ記憶領域に送ります。
CIM Object Manager は、1 つ以上の Solaris ホストにインストールして実行できます。WBEM 対応のクライアントは、CIM Object Manager に接続する場合、CIM Object Manager に対する参照を取得し、続いてこの参照を使用して WBEM オペレーションを実行します。
CIM Object Manager は、構文上の検査と意味上の検査を行います。構文上の検査は、コード行におけるセミコロンの位置の間違いや括弧の不足のようなエラーを検出する機能です。意味上の検査は、プログラムの規則 (ロジック) 上のエラーを検出する機能です。CIM Object Manager は、Common Information Model の規則に従って、WBEM アプリケーション内でこの規則に反するものを検出します。
たとえば、CIM 規則では、キープロパティをオーバーライドできるのは別のキープロパティだけであると定めています。キーが割り当てられているクラス A を、キーが割り当てられていないクラス B によってオーバーライドすることはできません。このようなオーバーライドが試みられると、CIM Object Manager は意味上のエラーを返します。
Class A ¥¥ クラス A を定義 { [Key] int a; } Class B:A ¥¥ クラス B は A のサブクラス { [overrides ("a", key (false)] int b; } |
Sun WBEM User Manager は、クラスが格納されるネームスペースと呼ばれる特定の領域に対するユーザー特権を設定できるソフトウェアアプリケーションです。このソフトウェアでは、ネームスペースの削除や新しいネームスペースの作成も行えます。Sun WBEM User Manager の使用方法については、第 12 章「セキュリティの管理」を参照してください。
Solaris WBEM Services には、CIM Object Manager が Solaris オペレーティング環境と通信を行うためのプログラム、Solaris プロバイダが含まれます。Solaris プロバイダは、Managed Object Format (MOF) で作成される一連のファイル内で定義されます。これらのファイルは、集合的に Solaris スキーマと呼ばれます。Solaris スキーマは、CIM Object Manager と Solaris 環境が通信に使用するクラスの定義を提供することにより、Solaris 環境の CIM クラスを拡張します。
Solaris スキーマを構成する MOF ファイルは、/opt/SUNWconn/wbem/schema に入っています。これらのファイルは、任意のテキストエディタで表示できます。Solaris_Schema1.0.mof は、中心となるスキーマファイルです。このファイルには、Solaris スキーマを構成するほかのファイルを指すポインタが、インストール時にそれらのファイルがコンパイルされる順番で入っています。
Solaris スキーマは、Solaris パッチやインストール済みのソフトウェアパッケージなど、Solaris 固有のリソースについて詳しく説明した MOF コンパイラファイルです。Solaris スキーマは、標準の CIM スキーマクラスを拡張したものです。
Solaris WBEM Services のインストール時に、MOF コンパイラは標準の CIM 2.1 MOF ファイルを CIM Object Manager 内にコンパイルします。インストールが終わると、コンパイルされたこれらのクラスは、システム上のリソース (プロセス、アプリケーションソフトウェア、CPU リソース、メモリーなど) を表します。アプリケーションは、API を使用して任意の WBEM 対応システム上の管理対象リソースの取得、設定、および操作が行えるようになります。
ほかのベンダーも、基底クラスにもとづいて標準の CIM スキーマを拡張します。この情報モデルを使用してシステムを管理する利点は、アプリケーションが任意の CIM システム上の任意のシステムリソース (プロセスなど) のプロパティを取得、設定できることです。Microsoft Windows 32 システム、Solaris システム、UNIX プラットフォームなどの CIM 互換プラットフォーム上のプロセスまたはデバイスについてのプロパティは、同じ API を使用して取得、設定できます。
Solaris WBEM Services をインストールする前に、Sun Directory Services (SDS) のバージョン 3.1 または 3.1 と互換性のあるバージョンと Java Development Kit (JDK) バージョン 1.1.7_05 または互換バージョンがインストールされていることを確認してください。SDS は、CIM Repository のために使用されます。
Solaris WBEM Services を単独で動作する製品としてインストールすることも、あるいは Solaris WBEM Services と Sun WBEM SDK の両方を対話形式で使用できるようにインストールすることもできます。どちらの製品をインストールする場合も、製品パッケージをインストールする必要があります。パッケージは、各製品のファイル、インタフェース、およびコンポーネントから構成されています。
Solaris WBEM Services と Sun WBEM SDK は、パッケージの一部を共有します。たとえば、これらのアプリケーションは両方ともクライアント API が入った SUNWwbapiというパッケージを必要とします。
Solaris WBEM Services パッケージとインストール操作の詳細は、次の節 (「Solaris WBEM Services のインストール」) を参照してください。Sun WBEM SDK パッケージとインストール操作の詳細は、第 2 章「Sun WBEM SDK のインストール」を参照してください。
次の表は、Solaris WBEM Services のインストールに必要なパッケージについて説明しています。
表 10-1 Solaris WBEM Services のパッケージ
必須パッケージ |
||
パッケージ名 |
名称 |
説明 |
SUNWwbapi |
Sun WBEM SDK - API |
Solaris WBEM Services と Sun WBEM SDK の実行に必要なクライアント API、プロバイダ API、その他の機能が含まれる。このパッケージは、Sun WBEM SDK に付属している。このパッケージは、両方の製品に必要 |
SUNWwbcor |
Solaris WBEM Services |
Solaris WBEM Services コンポーネント (MOF コンパイラ、CIM Object Manager など) が含まれる |
オプションパッケージ |
||
パッケージ名 |
名称 |
説明 |
SUNWwbdoc |
Solaris WBEM Services - ドキュメント |
Solaris WBEM Services と Sun WBEM SDK の両方をサポートする『Sun WBEM 開発ガイド』が含まれる。このパッケージは Solaris WBEM Services に付属しているが、必要に応じてどちらの製品をサポートするようにもインストールできる |
日本語化されたパッケージ |
||
パッケージ名 |
名称 |
説明 |
SUNWxxwbs |
Solaris WBEM Services -地域対応版 |
Solaris WBEM Services 地域対応バージョンを含む。xx には、アプリケーションがローカライズされた特定の言語を示す文字コードが入る。たとえば、Solaris WBEM Services の日本語バージョンのパッケージは SUNWjewbs である |
SUNWxxwbi |
Solaris WBEM Services - ドキュメント地域対応版 |
Solaris WBEM Services と Sun WBEM SDK の両方をサポートする「WBEM 開発ガイド」の地域対応バージョンが含まれる |
次のコマンドを入力して、システム上でスーパーユーザーになります。
% su |
メッセージに従い、スーパーユーザーのパスワードを入力します。
作業環境内で、パッケージが入っている位置にディレクトリを変更します。
システムプロンプトで、パッケージリストを表示するために次のコマンドを入力します。
# pkgadd -d . |
パッケージリストが表示され、1 つまたはすべてのパッケージを選択するようにメッセージが表示されます。
ほかのパッケージは Sun WBEM API に依存するため、最初に SUNWbapi パッケージの番号を入力してインストールしてください。
次に、SUNWwbcor および SUNWxxwbs (xx には言語を表す文字コードが入ります) を表す番号を入力し、インストールしてください。
SUNWwbcor パッケージのインストールでは、Sun Directory Services (SDS) の管理パスワードを入力するように求められます。Solaris WBEM Services をインストールする前にすでに SDS をインストールしてある場合は、メッセージに従って SDS パスワードを入力してください。SDS をまだインストールしてない場合は、SDS パスワードを設定するためにプロンプトで任意のパスワードを入力します。パスワードの再入力を求められたら、プロンプトで同じパスワードをもう一度入力します。
このマニュアルをインストールする場合は、SUWwbdoc および SUNWxxwbi (xx には言語を表す文字コードが入ります) を表す番号を入力し、インストールしてください。
各パッケージのインストールが進行している間、その内容が表示されます。各パッケージのインストールが完了すると、次のメッセージが表示されます。
Installation of package_name was successful
パッケージのインストールが終了した時点で、q と入力してパッケージのインストールルーチンを閉じます。
システムプロンプトで exit と入力して、スーパーユーザーとしてのログインを終了します。
Solaris 7 で Solaris Easy Access Server 3.0 のインストールの一環として Solaris WBEM Services をインストールする場合、Sun Directory Services (SDS) の管理アカウントのパスワードの入力を求めるメッセージが表示されない場合があります。インストール時にこのパスワードを入力しなかった場合は、SDS の起動と Solaris WBEM Services の設定を行うために、以下の手順に従って wbemconfig スクリプトを実行してください。wbemconfig スクリプトは、次の作業を行います。
SDS の設定と起動を行う
Java 環境変数を設定する
CIM Object Manager を起動する
MOF コンパイラを起動し、次の 2 つの MOF ファイルをコンパイルする
CIM_Schema21.mof - CIM スキーマを構成するクラスを提供する
Solaris_Schema1.0.mof - Solaris スキーマを構成するクラスを提供する
次のコマンドを入力して、システム上でスーパーユーザーになります。
% su |
メッセージに従い、スーパーユーザーのパスワードを入力します。
次のコマンドを使用して wbemconfig スクリプトを実行します。
# /opt/SUNWconn/wbem/bin/wbemconfig |
メッセージに従い、SDS の管理アカウントパスワードとして設定する任意のパスワードを入力します。
wbemconfig スクリプトの実行が始まります。SDS が起動し、続いて CIM Object Manager が起動します。MOF コンパイラが起動し、CIM スキーマファイルと Solaris スキーマファイルがコンパイルされます。
コンピュータから Solaris WBEM Services をアンインストールしたい場合には、パッケージの削除を行います。 Solaris WBEM Services パッケージを削除しても、インストールされている WBEM のすべてのファイルが削除されるわけではありません。たとえば、Sun WBEM SDK がインストールされている場合、この製品の関連パッケージは削除されません。Sun WBEM SDK の削除については、第 2 章「Sun WBEM SDK のインストール」、「Sun WBEM SDK のアンインストール」を参照してください。
Sun WBEM SDK と Solaris WBEM Services の両方を削除しても、LDAP スキーマとデータのファイルはインストールされたまま残ります。これらのファイルとファイルを含んでいるサブディレクトリは、パス /opt/SUNWconn/ldap から削除できます。しかし、LDAP データを削除すると、LDAP データを必要とするほかのアプリケーションでエラーが発生する可能性があります。LDAP データを削除したあとで Sun WBEM SDK または Solaris WBEM Services の再インストールを決定した場合は、このデータを再インストールする必要があります。
次のコマンドを入力して、システム上でスーパーユーザーになります。
% su |
Password プロンプトで、スーパーユーザーのパスワードを入力します。
システムプロンプトで、パッケージを削除するために次のコマンドを入力します。
# pkgrm package_name |
package_name の位置には、削除したいパッケージの名前を入力してください。
次に示す確認メッセージが表示されたら、y と入力します。
"Do you want to remove this package?"
SUNWwbcor
SUNWwbdoc
SUNWxxwbi
SUNWxxwbs
SUNWwbapiパッケージは必ず最後に削除してください。これは、ほかのパッケージが SUNWwbapi パッケージに依存しているためです。
パッケージの削除が正常に行われると、次のメッセージが表示されます。
Removal of package_name was successful |
削除するパッケージごとに、システムプロンプトで pkgrm コマンドを入力します。
パッケージの削除が終わったら、exit と入力します。スーパーユーザー権限が終了し、システムプロンプトに戻ります。
Solaris WBEM Services がインストールされると、CIM Object Manager が自動的に起動し、継続して動作します。CIM Object Manager は、システムセッション間でも停電のあとでも自動的に再起動します。プロバイダプログラムを変更した場合などは、CIM Object Manager を手動で再起動する必要があります。
プロバイダプログラムを変更した場合に更新されたプロバイダを使用するためには、CIM Object Manager を停止して再起動する必要があります。
この章では、CIM Object Manager の停止と起動を行うタイミングと方法について説明します。取り上げる内容は次のとおりです。
CIM Object Manager は、Solaris WBEM Services のインストール時に自動的に起動します。CIM Object Manager は、通常は停止する必要がありません。しかし、プロバイダプログラムを変更した場合に更新されたプロバイダを使用するためには、CIM Object Manager を停止して再起動する必要があります。
CIM Object Manager を停止する方法は 1 つ、再起動する方法は 2 つあります。CIM Object Manager を停止するには、init.wbem コマンドを使用します。CIM Object Manager をセッション間で再起動するには、init.wbem コマンドを使用します。特定のホスト上で CIM Object Manager を起動したり、このソフトウェアのバージョンを表示するためには、cimom コマンドを使用します。
動作中の CIM Object Manager を停止する場合と、停止している CIM Object Manager を再起動する場合は、スーパーユーザーとしてログインする必要があります。CIM Object Manager の停止については、「CIM Object Manager の停止」を参照してください。停止したあとで CIM Object Manager を再起動する方法については、「CIM Object Manager の再起動」を参照してください。
init.wbem コマンドを使用すると、システムセッション間で CIM Object Manager が再起動します。init.wbem コマンドは、CIM Object Manager の停止にも使用できます。
init.wbem コマンドは、次のパスに入っています。
/etc/init.d/init.wbem
init.wbem コマンドは、次の 2 つのパラメータを使用します。
パラメータ |
説明 |
stop |
CIM Object Manager を停止する |
start |
CIM Object Manager を再起動する |
init.wbem stop
init.wbem start
cimom コマンドは、CIM Object Manager を起動して追加情報 (オブジェクトを格納したい CIM Repository が入ったホストなど) を取得または指定する場合に使用します。cimom コマンドは、CIM Object Manager の特性を指定できるパラメータを使用します。
デフォルトでは、cimom コマンドは次のパスに入っています。
/opt/SUNWconn/wbem/bin/
cimom コマンドは、次の 3 つのパラメータを使用します。
パラメータ |
説明 |
-help |
マニュアルページを開き、cimom コマンドとパラメータの情報を表示する |
-sdatabase_server |
CIM Repository と共にインストールされるサーバーを指定する。このパラメータは、CIM オブジェクトが格納されている位置を制御する |
-version |
CIM Object Manager のビルドバージョンを表示する |
cimom コマンドの構文は次のとおりです。cimom [parameter] [modifier]
[parameter] は、上記の表に示されたパラメータの 1 つです。[modifier] は、パラメータに必要な追加情報です。たとえば、コマンド cimom -s hopskotch では、-s は [parameter] で、hopskotch は CIM Repository が入っているサーバー名を示す [modifier] です。
CIM Object Manager を停止するには、次の手順で行います。
システムプロンプトで次のコマンドを入力して、システム上でスーパーユーザーになります。
% su |
メッセージに従い、スーパーユーザーのパスワードを入力します。
次のコマンドを入力し、init.wbem コマンドが入っている位置にディレクトリを変更します。
# cd /etc/init.d/ |
次のコマンドを入力して、CIM Object Manager を停止します。
# ./init.wbem stop |
CIM Object Manager が停止します。
CIM Object Manager は、init.wbem コマンドまたは cimom コマンドを使用して再起動できます。どちらのコマンドを使用するかは、どのように起動したいかによります。CIM Object Manager をデフォルトホストで再起動する場合は、init.wbem コマンドを使用します。CIM Object Manager を別のホストで再起動する場合は、cimom コマンドを使用します。cimom コマンドを使用すると、CIM Object Manager のバージョンも表示できます。
システムプロンプトで次のコマンドを入力して、システム上でスーパーユーザーになります。
% su |
メッセージに従い、スーパーユーザーのパスワードを入力します。
次のコマンドを入力し、init.wbem コマンドが入っている位置にディレクトリを変更します。
# cd /etc/init.d/ |
次のコマンドを入力して、CIM Object Manager を再起動します。
# ./init.wbem start |
CIM Object Manager が起動します。
システムプロンプトで次のコマンドを入力して、システム上でスーパーユーザーになります。
% su |
メッセージに従い、スーパーユーザーのパスワードを入力します。
次のコマンドを入力し、cimom コマンドが入っている位置にディレクトリを変更します。
# cd /opt/SUNWconn/wbem/bin |
次のコマンドを入力し、CIM Object Manager の再起動とホストの指定を行います。
# cimom -s server_name |
server_name は、CIM Object Manager Repository が動作している特定のホストの名前です。
CIM Object Manager が再起動します。
CIM Object Manager は、不正な MOF 構文と意味的な間違いを示すためのエラーメッセージを生成します。MOF コンパイラと CIM Workshop は、同じエラーメッセージを生成します。エラーメッセージとそれらの意味の表示については、第 9 章「エラーメッセージ」を参照してください。
この章では、CIM Object Manager が提供するセキュリティ機能について説明します。取り上げる内容は次のとおりです。
CIM Object Manager は、CIM Object Manager が動作しているマシンでのユーザーのログイン情報を検証します。検証されたユーザーには、Common Information Model (CIM) スキーマ全体に対する制御アクセス権が与えられます。CIM Object Manager は、個々のクラスやインスタンスのようなシステムリソースに対するセキュリティは提供しません。しかし、CIM Object Manager を使用すると、ネームスペースへのアクセス権を全体的に制御でき、個々のユーザーベースでもアクセス権を制御できます。
セキュリティ関連の情報はすべて、root¥Security ネームスペースに入った、セキュリティクラスのインスタンスによって表されます。これらの情報は、永続的にこのネームスペースに置く必要があります。
次のセキュリティ機能は、WBEM 対応のシステム上の CIM オブジェクトへのアクセス権を制限します。
認証 - コンピュータシステム内のエンティティ (ユーザー、デバイスなど) の識別情報を検証するプロセス。認証は、システム内のリソースへのアクセスを許可する場合の必須条件となることが多い
承認 - ユーザー、プログラム、またはプロセスにアクセス権を与えること
再実行保護 - クライアントは、CIM Object Manager に送られた別のクライアントの最後のメッセージをコピーできない。CIM Object Manager は、クライアント鍵を使用し、後続のクライアントサーバーセッションすべての通信を同じクライアントと行うことを保証します。
CIM Object Manager は、ディジタル形式で署名された秘密セッション鍵を検証することにより、サーバーに対するクライアントのメッセージを別のクライアントが取得、送信することを防ぐ。CIM Object Manager は、有効な秘密セッション鍵のないクライアントからは同一のバイトストリームでも受け付けない
ディジタル署名 - CIM Object Manager は、Java ディジタル署名クラスを使用してサーバーに対するクライアントの応答にディジタル形式で署名を行うが、クライアントに対するサーバーの応答にはディジタル署名を行わない
ユーザーがログインしユーザー名とパスワードを入力する場合、クライアントはそのパスワードを暗号化し、暗号化されたパスワードを CIM Object Manager に送ります。ユーザーが認証されると、CIM Object Manager はクライアントセッションを設定します。その後のオペレーションはすべて、セキュリティが保護されたそのクライアントセッションで行われます。
CIM Object Manager は、次の 2 つのユーザーアカウントを作成します。
admin - CIM Object Manager Repository 内の LDAP スキーマにアクセスするために使用される管理アカウント。admin アカウントの作成とそのパスワードの設定は、インストール時に行われる
guest - ログイン時にユーザー名が指定されない場合に使用されるデフォルトのアカウント
ユーザーの識別情報が CIM Object Manager によって認証されると、その識別情報を使用して、アプリケーションまたはそのタスクの実行をそのユーザーに許可すべきかどうかを検証できます。CIM Object Manager は資格ベースの承認をサポートしているため、管理者は読み取り権と書き込み権を特定のユーザーに割り当てることができます。これらの承認は、既存の Solaris ユーザーアカウントに追加されます。
root アカウントに正常にログインできるかどうかは、ネームサービス (DNS、NIS、NIS+ など) がシステムでどのように設定されているかによって決まるため、スーパーユーザーとしてログインすることはお勧めできません。
Sun WBEM User Manager では、承認されたユーザーの追加と削除、およびアクセス権の設定などが行えます。このアプリケーションは、ユーザー認証の管理、および WBEM 対応のシステム上の CIM オブジェクトへのアクセスに使用してください。ユーザーには、Solaris ユーザーアカウントが必要です。
アクセス権は、個々のユーザー、ネームスペース、またはこの両方に設定できます。ユーザーを追加する場合、ネームスペースを選択します。この選択をすると、デフォルトでは選択されたネームスペース内の CIM オブジェクトに対する読み取り権がそのユーザーに与えられます。
管理者とは、WBEM 管理アカウント admin にログインするユーザーを指します。管理者は、CIM オブジェクトに対して次のアクセス権を設定できます。
読み取り権のみ - CIM スキーマオブジェクトへの読み取り権だけを許可する。このアクセス権を持つユーザーは、インスタンスとクラスの検索は行えるが、CIM オブジェクトの作成、削除、および変更は行えない
読み取り権と書き込み権 - すべての CIM クラスおよびインスタンスへの読み取り権、書き込み権、および削除権を与える
書き込み権 - すべての CIM クラスとインスタンスに対する書き込み権と削除権は許可するが、読み取り権は許可しない
アクセス権なし - CIM クラスとインスタンスへのアクセス権がない
コマンドウィンドウで、次のコマンドを入力します。
% /opt/SUNWconn/wbem/bin/cimadmin |
Sun WBEM User Manager が起動し、「ユーザーマネージャ (User Manager)」ダイアログボックスと「ログイン (Login)」ダイアログボックスが表示されます。「ログイン (Login)」ダイアログボックスは、現在のホスト名を表示します。このダイアログボックスでは、フィールドごとにコンテキストヘルプ情報が利用できます。
「ログイン (Login)」ダイアログボックスで、次の操作を行います。
「ホスト名 (Host Name)」フィールドで、CIM Object Manager を実行しているホスト名を入力します。
「ユーザー名 (User Name)」フィールドで、admin と入力します。WBEM ユーザーアカウントを管理するには、管理アカウントにログインする必要があります。
「パスワード (Password)」フィールドで、admin アカウントのパスワードを入力します。
「了解 (OK)」をクリックします。
「ユーザーマネージャ (User Manager)」ダイアログボックスが開かれ、ユーザー名と、現在のホスト上のネームスペース内の WBEM オブジェクトへのアクセス権の一覧が表示されます。
Sun WBEM User Manager を起動します。
ダイアログボックスの「ユーザーのアクセス権 (Users Access)」で、「追加 (Add)」をクリックします。
使用できるネームスペースを示したダイアログボックスが開かれます。
テキスト入力フィールド「ユーザー名 (User Name)」に、Solaris ユーザーアカウント名を入力します。
表示されたネームスペースの中からネームスペースを 1 つ選択します。
「了解 (OK)」をクリックします。
選択されたネームスペース内の CIM オブジェクトへの読み取り権がこのユーザーに与えられ、このユーザーが「ユーザーマネージャ (User Manager)」ダイアログボックスに追加されます。
「了解 (OK)」を再度クリックし、「ユーザーマネージャ (User Manager)」ダイアログボックスを閉じます。
Sun WBEM User Manager を起動します。
アクセス権を変更したいユーザーを選択します。
ユーザーに読み取り権だけを与えるには、「読み取り権 (Read)」チェックボックスをクリックします。ユーザーに書き込み権を与えるには、「書き込み権 (Write)」チェックボックスをクリックします。
「了解 (OK)」をクリックします。
Sun WBEM User Manager を起動します。
ダイアログボックスの「ユーザーのアクセス権 (Users Access)」で、アクセス権を削除したいユーザー名を選択します。
ネームスペースに対するこのユーザーのアクセス権を削除するには「削除 (Delete)」をクリックします。
ユーザーのアクセス権を削除してもよいか確認を求めるダイアログボックスが表示されます。「了解 (OK)」をクリックします。
「了解 (OK)」を再度クリックし、「ユーザーマネージャ (User Manager)」ダイアログボックスを閉じます。
Sun WBEM User Manager を起動します。
ダイアログボックスの「ネームスペースのアクセス権 (Namespace Access)」で「追加 (Add)」をクリックします。
使用できるネームスペースを示したダイアログボックスが開かれます。
アクセス権を設定したいネームスペースを選択します。
デフォルトでは、ネームスペースに対する読み取り権だけがユーザーに与えられます。
ネームスペースに対してアクセスをまったく許可しない場合は、「読み取り権 (Read)」と「書き込み権 (Write)」チェックボックスを選択しないでください。書き込み権を与えるには、「書き込み権 (Write)」チェックボックスをクリックします。読み取り権を与えるには、「読み取り権 (Read)」チェックボックスをクリックします。
「了解 (OK)」をクリックして、「ユーザーマネージャ (User Manager)」ダイアログボックスを閉じます。
Sun WBEM User Manager を起動します。
ダイアログボックスの「ネームスペースのアクセス権 (Namespace Access)」で、アクセス権を削除したいネームスペースを選択し、「削除 (Delete)」をクリックします。
ネームスペースからアクセス制御が削除され、「ユーザーマネージャ (User Manager)」ダイアログボックスのネームスペースリストからそのネームスペースが削除されます。
「了解 (OK)」をクリックして、「ユーザーマネージャ (User Manager)」ダイアログボックスを閉じます。
Sun WBEM SDK API を使用して、ネームスペースのアクセス制御または個々のユーザーのアクセス制御を設定できます。MOF コンパイラは、インストール時に Solaris_Acl1.0.mof ファイル内に定義されたセキュリティクラスを /root/Security ネームスペースにコンパイルします。Solaris_Acl1.0.mof ファイルは、次のクラスを定義します。
Solaris_Acl - Solaris Access Control Lists (ACL) の基底クラス。このクラスは、文字列プロパティ capability を定義し、そのデフォルト値を r (読み取り権) に設定する
Solaris_UserAcl - 指定されたネームスペース内の CIM オブジェクトに対してユーザーが持つアクセス制御を表す
Solaris_NamespaceAcl - ネームスペースに対するアクセス制御を表す
Solaris_UserACL クラスのインスタンスを作成し、続いて API を使用してそのインスタンスに対するアクセス権を変更することにより、ネームスペース内の CIM オブジェクトに対して個々のユーザーのアクセス制御を設定できます。同様に、Solaris_NameSpaceACL クラスのインスタンスを作成し、続いて setInstance メソッドのような API を使用してそのインスタンスへのアクセス権を設定することにより、ネームスペースのアクセス制御を設定できます。
これらの 2 つのクラスを効率よく使用するには、まず Solaris_NameSpaceACL クラスを使用してネームスペース内のオブジェクトに対し全ユーザーのアクセス権を制限します。続いて、Solaris_UserACL クラスを使用して、選択したユーザーにそのネームスペースに対するアクセス権を与えます。
Access Control Lists (ACL) には、DMTF によって開発された標準が適用されます。Solaris ACL スキーマは現在 CIM に準拠していますが、DMTF が ACL 標準を最終的に決定する時点で変更の必要があります。このため Solaris ACL スキーマを使用して作成したプログラムでは、あとで変更の必要が生じる可能性があります。
Solaris_UserAcl クラスは、Solaris_Acl 基底クラスのサブクラスです。Solaris_UserAcl クラスは、この基底クラスからデフォルト値 r (読み取り権) を持つ文字列プロパティ capability を継承します。
capability プロパティには、次に示すアクセス権を設定できます。
アクセス権 | 説明 |
---|---|
r |
読み取り権 |
rw |
読み取り権と書き込み権 |
w |
書き込み権 |
none |
アクセス不可 |
Solaris_UserAcl クラスは、次の 2 つキープロパティを定義します。ネームスペースに存在できるのは、ネームスペースとユーザー名の ACL ペアのインスタンス 1 つだけです。
プロパティ | データ型 | 目的 |
---|---|---|
nspace |
文字列 |
この ACL が適用されるネームスペースを識別する |
username |
文字列 |
この ACL が適用されるユーザーを識別する |
Solaris_UserAcl クラスのインスタンスを作成します。次に例を示します。
// Solaris_UserAcl クラスを取得 cimclass = cc.getClass(newCIMObjectPath("Solaris_UserAcl"); // Solaris_UserAcl クラスの新しいインスタンスを作成 ci = cimclass.newInstance();
capability プロパティに目的のアクセス権を設定します。次に例を示します。
/* root¥molly ネームスペースのオブジェクトに対するユーザー Guest の アクセス権 (capability) を rw (読み取り権と書き込み権) に変更 */ ci.updatePropertyValue("capability",new CIMValue("rw")); ci.updatePropertyValue("nspace",new CIMValue("root¥molly")); ci.updatePropertyValue("username",new CIMValue("guest"));
インスタンスを更新します。次に例を示します。
// 更新されたインスタンスを CIM Object Manager に渡す。 cc.setInstance(new CIMObjectPath(), ci);
Solaris_NamespaceAcl は、Solaris_Acl 基底クラスを拡張したサブクラスです。Solaris_NamespaceAcl は、この基底クラスからデフォルト値 r (GUEST およびすべてのユーザーの読み取り権) を持つ文字列プロパティ capability を継承します。Solaris_NamespaceAcl クラスは、次の重要なプロパティを定義します。
プロパティ | データ型 | 目的 |
---|---|---|
nspace |
文字列 |
このアクセス制御リストが適用されるネームスペースを識別する。ネームスペースに存在できるのは、ネームスペース ACL のインスタンス 1 つだけである |
Solaris_namespaceAcl クラスのインスタンスを作成します。次に例を示します。
// Solaris_namespaceAcl クラスを取得 cimclass = cc.getClass(newCIMObjectPath("Solaris_namespaceAcl"); // Solaris_namespaceAcl クラスの新しいインスタンスを作成 ci = cimclass.newInstance();
capability プロパティに目的のアクセス権を設定します。次に例を示します。
/* root¥molly ネームスペースに対するアクセス権 (capability) を rw (読み取り権と書き込み権) に変更 */ ci.updatePropertyValue("capability",new CIMValue("rw")); ci.updatePropertyValue("nspace",new CIMValue("root¥molly"));
インスタンスを更新します。次に例を示します。
// 更新されたインスタンスを CIM Object Manager に渡す。 cc.setInstance(new CIMObjectPath(),ci);
エラーメッセージの説明については、第 9 章「エラーメッセージ」を参照してください。
ロギングは、WBEM 管理者が異常なイベントを追跡して発生原因を調べることができるようにするためのサービスです。この章で取り上げる内容は次のとおりです。
ロギングサービスは、Solaris WBEM Services または Sun WBEM SDK のコンポーネントによるすべてのアクションを記録します。このサービスでは、通知用のメッセージとエラーメッセージがログに記録されます。たとえば、ユーザーがシリアルポートを無効にすると、シリアルポートプロバイダによってこの情報が自動的に記録されます。システムエラーなどの障害が発生すると、WBEM 管理者はログ記録を検査して発生原因を調べることができます。
Sun WBEM SDK と Solaris WBEM Services のコンポーネント、アプリケーション、およびプロバイダはすべて、イベントに応答してロギングを自動的に開始します。たとえば、CIM Object Manager は、インストールと起動が終わると自動的にイベントを記録します。
WBEM 環境向けに開発されるアプリケーションとプロバイダには、ロギングを設定できます。詳細は、「API によるロギングの有効化」を参照してください。ログデータは、通常の管理や、アプリケーション用に開発するロギング機能のデバッグのために、CIM WorkShop で表示することもできます。
アプリケーションまたはプロバイダがイベントを記録するように設定すると、イベントはログファイルに書き込まれます。ログ記録はすべて、パス /var/opt/SUNWconn/wbem/log/ に格納されます。ログファイルは、次の命名規則を使用します。
wbem_log.#
# は、ログファイルのバージョンを示すために付加される番号です。.1 が付いたログファイル (例: wbem_log.1) は、最も新しいバージョンです。.2 が付いたログファイルは、その次に新しいバージョンです。拡張子が大きいファイル (例: wbem_log.16) は、バージョンが古いことを示します。最も新しいバージョンのファイル、それ以前のバージョンのファイルとも、/var/opt/SUNWconn/wbem/log 内に 1 つのアーカイブとして共存します。
次の状況の 1 つが発生する場合、ファイル拡張子 .1 によるログファイルの名前変更、保存、およびアーカイブが行われます。
現在のファイルが、Solaris_LogServiceProperties クラスによって指定されたファイルサイズ限度に達した
Solaris_LogServiceProperties クラスのプロパティによるログファイルの使用方法の制御については、「ログファイルの規則」を参照してください。
Solaris_LogService クラスの clearLog() メソッドが、現在のログファイルに対して呼び出された
Solaris_LogService クラスとそのメソッドの詳細は、「Solaris_LogService」を参照してください。
Solaris_LogServiceProperties クラスは、Solaris_Core1.0.mof で定義されています。Solaris_LogServiceProperties クラスには、次のログファイル属性を制御する各プロパティがあります。
ログファイルが記録されるディレクトリ
ログファイル名
ログファイルの作成日付
ログファイルに許可されるサイズ。このサイズに達すると、/var/opt/SUNWconn/wbem/log でファイル拡張子 .1 によるログファイルの名前変更、保存、およびアーカイブが行われる
アーカイブ内に格納できるログファイルの数
SysLog (Solaris オペレーティング環境のデフォルトのロギングシステム) にログデータを書き込む機能
データをログファイルに書き込むアプリケーションにこれらの属性のどれかを指定するには、Solaris_LogServiceProperties の新しいインスタンスを作成し、その関連プロパティの値を設定します。
ロギングサービスは、一般的なログファイルとして、アプリケーションログ、システムログ、およびセキュリティログの 3 種類を提供しています。ログ記録は、通知用のメッセージであることも、エラーまたは警告を記述したデータであることもあります。ログに表示できる標準のフィールドがデータに定義されていますが、ログはすべてのフィールドを使用するとは限りません。たとえば、通知用のログではイベントについて説明した簡単なメッセージが示され、エラーログでは詳細なメッセージが示される場合があります。
ログデータフィールドの中には、CIM Repository 内のデータを識別するものがあります。これらのフィールドは、Solaris_LogRecord クラス内の読み取り専用のキー修飾子が付けられたプロパティです。これらのフィールドの値は設定できません。ログファイル内の次のフィールドの値は設定できます。
Category - ログファイルの種類
Severity - ログファイルへのデータ記録の原因となった状況の重大度
AppName - データを出したアプリケーションの名前
UserName - ログデータが生成された時にそのアプリケーションを使用していたユーザーの名前
ClientMachineName - ログデータを生成した状況が起きたコンピュータの名前
ServerMachineName - ログデータを生成した状況が起きたサーバーの名前
SummaryMessage - 状況を説明する簡単なメッセージ
DetailedMessage - 状況を説明する詳しいメッセージ
Data - ログメッセージの解釈のためにアプリケーションとプロバイダが提示できる背景情報
ロギングには、2 つの Solaris スキーマクラス、Solaris_LogRecord と Solaris_LogService が使用されます。
Solaris_LogRecord は、Solaris_Core1.0.mof でログファイル内のエントリをモデル化するように定義されています。イベントに応答してアプリケーションまたはプロバイダが Solaris_LogRecord クラスを呼び出す場合、Solaris_LogRecord クラスはそのイベントによって生成されるデータをすべてログファイルに書き込みます。Solaris_LogRecord クラスの定義を Solaris プロバイダの一部として見るには、任意のテキストエディタで Solaris_Core1.0.mof ファイルを表示してください。Solaris_Core1.0.mof ファイルは、/opt/SUNWconn/wbem/schema に入っています。
Solaris_LogRecord は、プロパティのベクトルとキー修飾子を使用して、データを生成したイベント、システム、ユーザー、およびアプリケーションまたはプロバイダの属性を指定します。アプリケーションと CIM Repository 間で使用されるように、読み取り専用修飾子の値が透過的に生成されます。たとえば、値 RecordID はログエントリを個別に識別しますが、生成されたデータが表示される場合にログ書式の一部としては示されません。
書き込み可能修飾子の値は設定できます。たとえば、イベントが発生したシステムを識別する ClientMachineName と ServerMachineName のようなプロパティの修飾子の値を設定できます。
Solaris_LogService クラスは、ロギングサービスのオペレーションの制御と、ログデータの処理方法の定義を行います。このクラスには、アプリケーションが特定のイベントについてのデータを発行元アプリケーションから CIM Object Manager へ配付するために使用できる一連のメソッドが含まれます。データは、CIM Object Manager からの応答 (CIM Repository からのデータ検出など) を生成するトリガーとなります。
Solaris_LogService クラスは、次のメソッドを使用します。
clearLog - 現在のログファイルの名前変更、保存、アーカイブ、またはアーカイブされたログファイルの削除を行う
getNumRecords - 特定のログファイルに記録されているデータの行数を返す
listLogFiles - /var/opt/SUNWconn/wbem/log に格納されているすべてのログファイルの一覧を返す
getCurrentLogFileName - 最新のログファイルの名前を返す
getNumLogFiles - /var/opt/SUNWconn/wbem/log に格納されているログファイルの数を返す
getLogFileSize - 特定のログファイルのサイズをメガバイト単位で返す
getSyslogSwitch - ログデータを SysLog (Solaris オペレーティング環境のロギングサービス) に送る
getLogStorageName - ログファイルが格納されるホストコンピュータまたはデバイスの名前を返す
getLogFileDir - ログファイルが格納されるディレクトリのパスと名前を返す
setProperties - ロギングプロパティを設定する
Solaris_Core1.0.mof ファイル内の Solaris_LogService の定義は、任意のテキストエディタでこのファイルを開いて表示できます。Solaris_Core1.0.mof ファイルは、/opt/SUNWconn/wbem/schema に入っています。
イベントに対する応答としてデータを記録するようにアプリケーションが設定されている場合、生成されたデータを CIM Workshop で表示できます。
CIM Workshop で、クラス継承ツリー内の solaris_logrecord を選択します。
「アクション (Action)」、「インスタンス (Instances)」の順に選択します。
「Solaris LogRecord のインスタンス (Instances for Solaris_LogRecord)」ウィンドウの左側で、アプリケーションが生成したインスタンスをクリックします。
「Solaris LogRecord のインスタンス (Instances for Solaris_LogRecord)」の右側に、ログファイルのフィールドがプロパティとして表示されます。各プロパティの値は「値 (Values)」列に示されます。
ログファイルの内容は現在 CIM Workshop で表示できますが、独自の方法でログファイルを表示したい場合はロギング API を使用してログビューアを開発できます。この API を使用すると、アプリケーションからログファイルへのデータの書き込み、またはログファイルからログビューアへのデータの読み込みが行えます。
アプリケーションでデータをログファイルに書き込むには、次の作業を行います。
Solaris_LogRecord クラスの新しいインスタンスを作成する
ログファイルに書き込まれるプロパティを設定し、プロパティの修飾子の値を設定する
出力する新しいインスタンスとプロパティを設定する
必要なすべての java.rmi クラスをインポートします。
import java.rmi.*; import com.sun.wbem.client.CIMClient; import com.sun.wbem.cim.CIMInstance; import com.sun.wbem.cim.CIMValue; import com.sun.wbem.cim.CIMProperty; import com.sun.wbem.cim.CIMNameSpace; import com.sun.wbem.cim.CIMObjectPath; import com.sun.wbem.cim.CIMClass; import com.sun.wbem.cim.CIMException; import com.sun.wbem.solarisprovider.*; import java.util.*; import java.util.Enumeration; |
CIMClient の値
CIMObjectPath の値
CIMNameSpace の値
public class CreateLog { public static void main(String args[ ]) throws CIMException { if ( args.length != 3) { System.out.println("Usage: CreateLog host username password"); System.exit(1); } CIMClient cc = null; CIMObjectPath cop = null; try { CIMNameSpace cns = new CIMNameSpace(args[0]); cc = new CIMClient(cns, args[1], args[2]); |
プロパティのベクトルが返されるように指定します。修飾子のプロパティに値を設定します。
Vector keys = new Vector(); CIMProperty logsvcKey = new CIMProperty("RecordID"); logsvcKey.setValue(new CIMValue(new Integer(0))); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("RecordHashCode"); logsvcKey.setValue(new CIMValue(new Integer(0))); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("Filename"); logsvcKey.setValue(new CIMValue("some_file")); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("category"); logsvcKey.setValue(new CIMValue(new Integer(2))); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("severity"); logsvcKey.setValue(new CIMValue(new Integer(2))); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("AppName"); logsvcKey.setValue(new CIMValue("SomeApp")); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("UserName"); logsvcKey.setValue(new CIMValue("molly")); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("ClientMachineName"); logsvcKey.setValue(new CIMValue("dragonfly")); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("ServerMachineName"); logsvcKey.setValue(new CIMValue("spider")); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("SummaryMessage"); logsvcKey.setValue(new CIMValue("brief_description")); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("DetailedMessage"); logsvcKey.setValue(new CIMValue("detailed_description")); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("data"); logsvcKey.setValue(new CIMValue("0xfe 0x45 0xae 0xda")); keys.addElement(logsvcKey); logsvcKey = new CIMProperty("SyslogFlag"); logsvcKey.setValue(new CIMValue(new Boolean(true))); keys.addElement(logsvcKey); |
ログ記録用に CIMObjectPath の新しいインスタンスを宣言します。
CIMObjectPath logreccop = new CIMObjectPath("Solaris_LogRecord", keys); |
Solaris_LogRecord の新しいインスタンスを宣言します。ファイルに書き込むようにプロパティのベクトルを設定します。
CIMInstance ci = new CIMInstance(); ci.setClassName("Solaris_LogRecord"); ci.setProperties(keys); //System.out.println(ci.toString()); cc.setInstance(logreccop,ci); } catch (Exception e) { System.out.println("Exception: "+e); e.printStackTrace(); } |
データがログファイルに書き込まれたあと、セッションを閉じます。
// セッションを閉じる if(cc != null) { cc.close(); } } } |
アプリケーションでログファイルからログビューアにデータを読み込むには、次の作業を行います
Solaris_LogRecord クラスのインスタンスを列挙する
目的のインスタンスを取得する
出力デバイス (通常はユーザーインタフェース) にインスタンスのプロパティを出力する
必要なすべての java.rmi クラスをインポートします。
import java.rmi.*; import com.sun.wbem.client.CIMClient; import com.sun.wbem.cim.CIMInstance; import com.sun.wbem.cim.CIMValue; import com.sun.wbem.cim.CIMProperty; import com.sun.wbem.cim.CIMNameSpace; import com.sun.wbem.cim.CIMObjectPath; import com.sun.wbem.cim.CIMClass; import com.sun.wbem.cim.CIMException; import com.sun.wbem.solarisprovider.*; import java.util.*; import java.util.Enumeration; |
クラス ReadLog を宣言します。
public class ReadLog { public static void main(String args[]) throws CIMException { if ( args.length != 3) { System.out.println("Usage: ReadLog host username password"); System.exit(1); |
ReadLog クラスのクライアント、オブジェクトパス、およびネームスペースの値を設定します。
} CIMClient cc = null; CIMObjectPath cop = null; try { CIMNameSpace cns = new CIMNameSpace(args[0]); cc = new CIMClient(cns, args[1], args[2]); cop = new CIMObjectPath("Solaris_LogRecord"); |
Solaris_LogRecord のインスタンスを列挙します。
Enumeration e = cc.enumInstances(cop, true); for (; e.hasMoreElements(); ) { |
プロパティの値を出力デバイスに送ります。
System.out.println("------------------------ ---------"); CIMObjectPath op = (CIMObjectPath)e.nextElement(); CIMInstance ci = cc.getInstance(op); System.out.println("Record ID : " + (((Long)ci.getProperty("RecordID").getValue(). getValue()).longValue())); System.out.println("Log filename : " + ((String)ci.getProperty("FileName").getValue(). getValue())); int categ = (((Integer)ci.getProperty("category"). getValue().getValue()).intValue()); if (categ == 0) System.out.println("Category : Application Log"); else if (categ == 1) System.out.println("Category : Security Log"); else if (categ == 2) System.out.println("Category : System Log"); int severity = (((Integer)ci.getProperty ("severity").getValue().getValue()).intValue()); if (severity == 0) System.out.println("Severity : Informational"); else if (severity == 1) System.out.println("Severity : Warning Log!"); else if (severity == 2) System.out.println("Severity : Error!!"); System.out.println("Log Record written by :" + ((String)ci.getProperty("AppName").getValue(). getValue())); System.out.println("User : " + ((String)ci. getProperty("UserName").getValue().getValue())); System.out.println("Client Machine : " + ((String)ci. getProperty("ClientMachineName").getValue().getValue ())); System.out.println("Server Machine : " + ((String)ci. getProperty("ServerMachineName").getValue().getValue ())); System.out.println("Summary Message : " + ((String) ci.getProperty("SummaryMessage").getValue().getValue ())); System.out.println("Detailed Message : " + ((String) ci.getProperty("DetailedMessage").getValue().getValue ())); System.out.println("Additional data : " + ((String) ci.getProperty("data").getValue().getValue())); boolean syslogflag = ((Boolean)ci.getProperty("syslogflag").getValue(). getValue()).booleanValue(); if (syslogflag == true) { System.out.println("Record was written to syslog as well"); } else { System.out.println("Record was not written to syslog"); } System.out.println("----------------------------- ----"); } |
エラー状況が発生する場合は、ユーザーにエラーメッセージを返します。
} catch (Exception e) { System.out.println("Exception: "+e); e.printStackTrace(); } |
ファイルからデータが読み取られたあとセッションを閉じます。
// セッションを閉じる。 if(cc != null) { cc.close(); } } } |