Sun WBEM 開発ガイド

パート III Solaris WBEM Services

Solaris WBEM Services ソフトウェアは、Solaris オペレーティング環境での Sun が固有に WBEM を実装したものです。このソフトウェアは、次のサービスを提供します。

第 10 章 Solaris WBEM Services のインストール

この章では、Solaris WBEM Services の内容について述べるとともに、このソフトウェアのインストール方法とシステムから削除する方法について説明します。取り上げる内容は次のとおりです。

Solaris WBEM Services について

Solaris WBEM Services には、次のコンポーネントが含まれます。

CIM Object Manager

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 は、クラスが格納されるネームスペースと呼ばれる特定の領域に対するユーザー特権を設定できるソフトウェアアプリケーションです。このソフトウェアでは、ネームスペースの削除や新しいネームスペースの作成も行えます。Sun WBEM User Manager の使用方法については、第 12 章「セキュリティの管理」を参照してください。

Solaris プロバイダ

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 のインストール

次の表は、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 開発ガイド」の地域対応バージョンが含まれる 

Solaris WBEM Services をインストールする方法
  1. 次のコマンドを入力して、システム上でスーパーユーザーになります。

    % su
    

  2. メッセージに従い、スーパーユーザーのパスワードを入力します。

  3. 作業環境内で、パッケージが入っている位置にディレクトリを変更します。

  4. システムプロンプトで、パッケージリストを表示するために次のコマンドを入力します。

    # pkgadd -d .
    

    パッケージリストが表示され、1 つまたはすべてのパッケージを選択するようにメッセージが表示されます。

  5. インストールするパッケージの番号を入力します。

    • ほかのパッケージは 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

  6. パッケージのインストールが終了した時点で、q と入力してパッケージのインストールルーチンを閉じます。

  7. システムプロンプトで exit と入力して、スーパーユーザーとしてのログインを終了します。

Solaris 7 でのインストール後の設定

Solaris 7 で Solaris Easy Access Server 3.0 のインストールの一環として Solaris WBEM Services をインストールする場合、Sun Directory Services (SDS) の管理アカウントのパスワードの入力を求めるメッセージが表示されない場合があります。インストール時にこのパスワードを入力しなかった場合は、SDS の起動と Solaris WBEM Services の設定を行うために、以下の手順に従って wbemconfig スクリプトを実行してください。wbemconfig スクリプトは、次の作業を行います。

インストールの後に環境を設定する方法
  1. 次のコマンドを入力して、システム上でスーパーユーザーになります。

    % su
    

  2. メッセージに従い、スーパーユーザーのパスワードを入力します。

  3. 次のコマンドを使用して wbemconfig スクリプトを実行します。

    # /opt/SUNWconn/wbem/bin/wbemconfig
    

  4. メッセージに従い、SDS の管理アカウントパスワードとして設定する任意のパスワードを入力します。

    wbemconfig スクリプトの実行が始まります。SDS が起動し、続いて CIM Object Manager が起動します。MOF コンパイラが起動し、CIM スキーマファイルと Solaris スキーマファイルがコンパイルされます。

Solaris WBEM Services のアンインストール

コンピュータから 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 の再インストールを決定した場合は、このデータを再インストールする必要があります。

Solaris WBEM Services をアンインストールする方法
  1. 次のコマンドを入力して、システム上でスーパーユーザーになります。

    % su
    

  2. Password プロンプトで、スーパーユーザーのパスワードを入力します。

  3. システムプロンプトで、パッケージを削除するために次のコマンドを入力します。

    # pkgrm package_name
    

    package_name の位置には、削除したいパッケージの名前を入力してください。

  4. 次に示す確認メッセージが表示されたら、y と入力します。

    "Do you want to remove this package?"

    次のパッケージは、任意の順序で削除できます。

    • SUNWwbcor

    • SUNWwbdoc

    • SUNWxxwbi

    • SUNWxxwbs

    SUNWwbapiパッケージは必ず最後に削除してください。これは、ほかのパッケージが SUNWwbapi パッケージに依存しているためです。

    パッケージの削除が正常に行われると、次のメッセージが表示されます。

    Removal of package_name was successful
    

  5. 削除するパッケージごとに、システムプロンプトで pkgrm コマンドを入力します。

  6. パッケージの削除が終わったら、exit と入力します。スーパーユーザー権限が終了し、システムプロンプトに戻ります。

第 11 章 CIM Object Manager

Solaris WBEM Services がインストールされると、CIM Object Manager が自動的に起動し、継続して動作します。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 コマンド

init.wbem コマンドを使用すると、システムセッション間で CIM Object Manager が再起動します。init.wbem コマンドは、CIM Object Manager の停止にも使用できます。

init.wbem コマンドの位置

init.wbem コマンドは、次のパスに入っています。

/etc/init.d/init.wbem

init.wbem コマンドの構文

init.wbem コマンドは、次の 2 つのパラメータを使用します。

パラメータ 

説明 

stop 

CIM Object Manager を停止する 

start 

CIM Object Manager を再起動する 

init.wbem コマンドの構文は次のとおりです。

cimom コマンド

cimom コマンドは、CIM Object Manager を起動して追加情報 (オブジェクトを格納したい CIM Repository が入ったホストなど) を取得または指定する場合に使用します。cimom コマンドは、CIM Object Manager の特性を指定できるパラメータを使用します。

cimom コマンドの位置

デフォルトでは、cimom コマンドは次のパスに入っています。

/opt/SUNWconn/wbem/bin/

cimom コマンドの構文

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 の停止

CIM Object Manager を停止するには、次の手順で行います。

CIM Object Manager を停止する方法
  1. システムプロンプトで次のコマンドを入力して、システム上でスーパーユーザーになります。

    % su
    

  2. メッセージに従い、スーパーユーザーのパスワードを入力します。

  3. 次のコマンドを入力し、init.wbem コマンドが入っている位置にディレクトリを変更します。

    # cd /etc/init.d/
    

  4. 次のコマンドを入力して、CIM Object Manager を停止します。

    # ./init.wbem stop
    

    CIM Object Manager が停止します。

CIM Object Manager の再起動

CIM Object Manager は、init.wbem コマンドまたは cimom コマンドを使用して再起動できます。どちらのコマンドを使用するかは、どのように起動したいかによります。CIM Object Manager をデフォルトホストで再起動する場合は、init.wbem コマンドを使用します。CIM Object Manager を別のホストで再起動する場合は、cimom コマンドを使用します。cimom コマンドを使用すると、CIM Object Manager のバージョンも表示できます。

デフォルト設定による CIM Object Manager を再起動する方法
  1. システムプロンプトで次のコマンドを入力して、システム上でスーパーユーザーになります。

    % su
    

  2. メッセージに従い、スーパーユーザーのパスワードを入力します。

  3. 次のコマンドを入力し、init.wbem コマンドが入っている位置にディレクトリを変更します。

    # cd /etc/init.d/
    
  4. 次のコマンドを入力して、CIM Object Manager を再起動します。

    # ./init.wbem start
    

    CIM Object Manager が起動します。

CIM Object Manager を再起動し、ホストを指定する方法
  1. システムプロンプトで次のコマンドを入力して、システム上でスーパーユーザーになります。

    % su
    

  2. メッセージに従い、スーパーユーザーのパスワードを入力します。

  3. 次のコマンドを入力し、cimom コマンドが入っている位置にディレクトリを変更します。

    # cd /opt/SUNWconn/wbem/bin
    

  4. 次のコマンドを入力し、CIM Object Manager の再起動とホストの指定を行います。

    # cimom -s server_name
    

    server_name は、CIM Object Manager Repository が動作している特定のホストの名前です。

    CIM Object Manager が再起動します。

CIM Object Manager のエラーメッセージ

CIM Object Manager は、不正な MOF 構文と意味的な間違いを示すためのエラーメッセージを生成します。MOF コンパイラと CIM Workshop は、同じエラーメッセージを生成します。エラーメッセージとそれらの意味の表示については、第 9 章「エラーメッセージ」を参照してください。

第 12 章 セキュリティの管理

この章では、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 は、次の 2 つのユーザーアカウントを作成します。

ユーザーの識別情報が CIM Object Manager によって認証されると、その識別情報を使用して、アプリケーションまたはそのタスクの実行をそのユーザーに許可すべきかどうかを検証できます。CIM Object Manager は資格ベースの承認をサポートしているため、管理者は読み取り権と書き込み権を特定のユーザーに割り当てることができます。これらの承認は、既存の Solaris ユーザーアカウントに追加されます。


注 -

root アカウントに正常にログインできるかどうかは、ネームサービス (DNS、NIS、NIS+ など) がシステムでどのように設定されているかによって決まるため、スーパーユーザーとしてログインすることはお勧めできません。


Sun WBEM User Manager によるアクセス制御の設定

Sun WBEM User Manager では、承認されたユーザーの追加と削除、およびアクセス権の設定などが行えます。このアプリケーションは、ユーザー認証の管理、および WBEM 対応のシステム上の CIM オブジェクトへのアクセスに使用してください。ユーザーには、Solaris ユーザーアカウントが必要です。

アクセス権は、個々のユーザー、ネームスペース、またはこの両方に設定できます。ユーザーを追加する場合、ネームスペースを選択します。この選択をすると、デフォルトでは選択されたネームスペース内の CIM オブジェクトに対する読み取り権がそのユーザーに与えられます。

管理者とは、WBEM 管理アカウント admin にログインするユーザーを指します。管理者は、CIM オブジェクトに対して次のアクセス権を設定できます。

Sun WBEM User Manager を起動するには
  1. コマンドウィンドウで、次のコマンドを入力します。

    % /opt/SUNWconn/wbem/bin/cimadmin
    

    Sun WBEM User Manager が起動し、「ユーザーマネージャ (User Manager)」ダイアログボックスと「ログイン (Login)」ダイアログボックスが表示されます。「ログイン (Login)」ダイアログボックスは、現在のホスト名を表示します。このダイアログボックスでは、フィールドごとにコンテキストヘルプ情報が利用できます。

  2. 「ログイン (Login)」ダイアログボックスで、次の操作を行います。

    • 「ホスト名 (Host Name)」フィールドで、CIM Object Manager を実行しているホスト名を入力します。

    • 「ユーザー名 (User Name)」フィールドで、admin と入力します。WBEM ユーザーアカウントを管理するには、管理アカウントにログインする必要があります。

    • 「パスワード (Password)」フィールドで、admin アカウントのパスワードを入力します。

  3. 「了解 (OK)」をクリックします。

    「ユーザーマネージャ (User Manager)」ダイアログボックスが開かれ、ユーザー名と、現在のホスト上のネームスペース内の WBEM オブジェクトへのアクセス権の一覧が表示されます。

ユーザーにデフォルトのアクセス権を与えるには
  1. Sun WBEM User Manager を起動します。

  2. ダイアログボックスの「ユーザーのアクセス権 (Users Access)」で、「追加 (Add)」をクリックします。

    使用できるネームスペースを示したダイアログボックスが開かれます。

  3. テキスト入力フィールド「ユーザー名 (User Name)」に、Solaris ユーザーアカウント名を入力します。

  4. 表示されたネームスペースの中からネームスペースを 1 つ選択します。

  5. 「了解 (OK)」をクリックします。

    選択されたネームスペース内の CIM オブジェクトへの読み取り権がこのユーザーに与えられ、このユーザーが「ユーザーマネージャ (User Manager)」ダイアログボックスに追加されます。

  6. 「了解 (OK)」を再度クリックし、「ユーザーマネージャ (User Manager)」ダイアログボックスを閉じます。

ユーザーアクセス権を変更するには
  1. Sun WBEM User Manager を起動します。

  2. アクセス権を変更したいユーザーを選択します。

  3. ユーザーに読み取り権だけを与えるには、「読み取り権 (Read)」チェックボックスをクリックします。ユーザーに書き込み権を与えるには、「書き込み権 (Write)」チェックボックスをクリックします。

  4. 「了解 (OK)」をクリックします。

ユーザーアクセス権を削除するには
  1. Sun WBEM User Manager を起動します。

  2. ダイアログボックスの「ユーザーのアクセス権 (Users Access)」で、アクセス権を削除したいユーザー名を選択します。

  3. ネームスペースに対するこのユーザーのアクセス権を削除するには「削除 (Delete)」をクリックします。

    ユーザーのアクセス権を削除してもよいか確認を求めるダイアログボックスが表示されます。「了解 (OK)」をクリックします。

  4. 「了解 (OK)」を再度クリックし、「ユーザーマネージャ (User Manager)」ダイアログボックスを閉じます。

ネームスペースのアクセス権を設定するには
  1. Sun WBEM User Manager を起動します。

  2. ダイアログボックスの「ネームスペースのアクセス権 (Namespace Access)」で「追加 (Add)」をクリックします。

    使用できるネームスペースを示したダイアログボックスが開かれます。

  3. アクセス権を設定したいネームスペースを選択します。

    デフォルトでは、ネームスペースに対する読み取り権だけがユーザーに与えられます。

  4. ネームスペースに対してアクセスをまったく許可しない場合は、「読み取り権 (Read)」と「書き込み権 (Write)」チェックボックスを選択しないでください。書き込み権を与えるには、「書き込み権 (Write)」チェックボックスをクリックします。読み取り権を与えるには、「読み取り権 (Read)」チェックボックスをクリックします。

  5. 「了解 (OK)」をクリックして、「ユーザーマネージャ (User Manager)」ダイアログボックスを閉じます。

ネームスペースのアクセス権を削除するには
  1. Sun WBEM User Manager を起動します。

  2. ダイアログボックスの「ネームスペースのアクセス権 (Namespace Access)」で、アクセス権を削除したいネームスペースを選択し、「削除 (Delete)」をクリックします。

    ネームスペースからアクセス制御が削除され、「ユーザーマネージャ (User Manager)」ダイアログボックスのネームスペースリストからそのネームスペースが削除されます。

  3. 「了解 (OK)」をクリックして、「ユーザーマネージャ (User Manager)」ダイアログボックスを閉じます。

API によるアクセス制御の設定

Sun WBEM SDK API を使用して、ネームスペースのアクセス制御または個々のユーザーのアクセス制御を設定できます。MOF コンパイラは、インストール時に Solaris_Acl1.0.mof ファイル内に定義されたセキュリティクラスを /root/Security ネームスペースにコンパイルします。Solaris_Acl1.0.mof ファイルは、次のクラスを定義します。

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_UserAcl クラスは、Solaris_Acl 基底クラスのサブクラスです。Solaris_UserAcl クラスは、この基底クラスからデフォルト値 r (読み取り権) を持つ文字列プロパティ capability を継承します。

capability プロパティには、次に示すアクセス権を設定できます。

 アクセス権 説明

r

読み取り権 

rw

読み取り権と書き込み権 

w

書き込み権 

none

アクセス不可 

Solaris_UserAcl クラスは、次の 2 つキープロパティを定義します。ネームスペースに存在できるのは、ネームスペースとユーザー名の ACL ペアのインスタンス 1 つだけです。

 プロパティ データ型 目的

nspace 

文字列 

この ACL が適用されるネームスペースを識別する 

username 

文字列 

この ACL が適用されるユーザーを識別する 

ユーザーに対するアクセス制御を設定するには
  1. Solaris_UserAcl クラスのインスタンスを作成します。次に例を示します。

    // Solaris_UserAcl クラスを取得
    cimclass = cc.getClass(newCIMObjectPath("Solaris_UserAcl");
     
    // Solaris_UserAcl クラスの新しいインスタンスを作成
    ci = cimclass.newInstance();

  2. 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"));	

  3. インスタンスを更新します。次に例を示します。

    // 更新されたインスタンスを CIM Object Manager に渡す。
    cc.setInstance(new CIMObjectPath(), ci); 

Solaris_NamespaceAcl クラス

Solaris_NamespaceAcl は、Solaris_Acl 基底クラスを拡張したサブクラスです。Solaris_NamespaceAcl は、この基底クラスからデフォルト値 r (GUEST およびすべてのユーザーの読み取り権) を持つ文字列プロパティ capability を継承します。Solaris_NamespaceAcl クラスは、次の重要なプロパティを定義します。

 プロパティ データ型 目的

nspace 

文字列 

このアクセス制御リストが適用されるネームスペースを識別する。ネームスペースに存在できるのは、ネームスペース ACL のインスタンス 1 つだけである 

ネームスペースに対するアクセス制御を設定するには
  1. Solaris_namespaceAcl クラスのインスタンスを作成します。次に例を示します。

    // Solaris_namespaceAcl クラスを取得
    cimclass = cc.getClass(newCIMObjectPath("Solaris_namespaceAcl");
     
    // Solaris_namespaceAcl クラスの新しいインスタンスを作成
    ci = cimclass.newInstance();

  2. capability プロパティに目的のアクセス権を設定します。次に例を示します。

    /* root¥molly ネームスペースに対するアクセス権 (capability) を
    rw (読み取り権と書き込み権) に変更  */
    ci.updatePropertyValue("capability",new CIMValue("rw"));  
    ci.updatePropertyValue("nspace",new CIMValue("root¥molly"));

  3. インスタンスを更新します。次に例を示します。

    // 更新されたインスタンスを CIM Object Manager に渡す。
    cc.setInstance(new CIMObjectPath(),ci); 

エラーメッセージ

エラーメッセージの説明については、第 9 章「エラーメッセージ」を参照してください。

第 13 章 イベントのロギング

ロギングは、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_Core1.0.mof で定義されています。Solaris_LogServiceProperties クラスには、次のログファイル属性を制御する各プロパティがあります。

データをログファイルに書き込むアプリケーションにこれらの属性のどれかを指定するには、Solaris_LogServiceProperties の新しいインスタンスを作成し、その関連プロパティの値を設定します。

ログファイルの形式

ロギングサービスは、一般的なログファイルとして、アプリケーションログ、システムログ、およびセキュリティログの 3 種類を提供しています。ログ記録は、通知用のメッセージであることも、エラーまたは警告を記述したデータであることもあります。ログに表示できる標準のフィールドがデータに定義されていますが、ログはすべてのフィールドを使用するとは限りません。たとえば、通知用のログではイベントについて説明した簡単なメッセージが示され、エラーログでは詳細なメッセージが示される場合があります。

ログデータフィールドの中には、CIM Repository 内のデータを識別するものがあります。これらのフィールドは、Solaris_LogRecord クラス内の読み取り専用のキー修飾子が付けられたプロパティです。これらのフィールドの値は設定できません。ログファイル内の次のフィールドの値は設定できます。

ログクラス

ロギングには、2 つの Solaris スキーマクラス、Solaris_LogRecordSolaris_LogService が使用されます。

Solaris_LogRecord

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 はログエントリを個別に識別しますが、生成されたデータが表示される場合にログ書式の一部としては示されません。

書き込み可能修飾子の値は設定できます。たとえば、イベントが発生したシステムを識別する ClientMachineNameServerMachineName のようなプロパティの修飾子の値を設定できます。

Solaris_LogService

Solaris_LogService クラスは、ロギングサービスのオペレーションの制御と、ログデータの処理方法の定義を行います。このクラスには、アプリケーションが特定のイベントについてのデータを発行元アプリケーションから CIM Object Manager へ配付するために使用できる一連のメソッドが含まれます。データは、CIM Object Manager からの応答 (CIM Repository からのデータ検出など) を生成するトリガーとなります。

Solaris_LogService クラスは、次のメソッドを使用します。

Solaris_Core1.0.mof ファイル内の Solaris_LogService の定義は、任意のテキストエディタでこのファイルを開いて表示できます。Solaris_Core1.0.mof ファイルは、/opt/SUNWconn/wbem/schema に入っています。

ログデータの表示

イベントに対する応答としてデータを記録するようにアプリケーションが設定されている場合、生成されたデータを CIM Workshop で表示できます。

ログデータを表示する方法
  1. CIM Workshop で、クラス継承ツリー内の solaris_logrecord を選択します。

  2. 「アクション (Action)」、「インスタンス (Instances)」の順に選択します。

  3. 「Solaris LogRecord のインスタンス (Instances for Solaris_LogRecord)」ウィンドウの左側で、アプリケーションが生成したインスタンスをクリックします。

    Solaris LogRecord のインスタンス (Instances for Solaris_LogRecord)」の右側に、ログファイルのフィールドがプロパティとして表示されます。各プロパティの値は「値 (Values)」列に示されます。

API によるロギングの有効化

ログファイルの内容は現在 CIM Workshop で表示できますが、独自の方法でログファイルを表示したい場合はロギング API を使用してログビューアを開発できます。この API を使用すると、アプリケーションからログファイルへのデータの書き込み、またはログファイルからログビューアへのデータの読み込みが行えます。

ログファイルへのデータの書き込み

アプリケーションでデータをログファイルに書き込むには、次の作業を行います。

データを書き込むために Solaris_LogRecord のインスタンスを作成するには
  1. 必要なすべての java.rmi クラスをインポートします。


    例 13-1 クラスのインポート

    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; 

  2. 公開クラス CreateLog と次の値を宣言します。

    • CIMClient の値

    • CIMObjectPath の値

    • CIMNameSpace の値


    例 13-2 CreateLog クラスと値の宣言

    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]);
     

  3. プロパティのベクトルが返されるように指定します。修飾子のプロパティに値を設定します。


    例 13-3 プロパティのベクトルと値の指定

    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); 

  4. ログ記録用に CIMObjectPath の新しいインスタンスを宣言します。


    例 13-4 CIMObjectPath の新しいインスタンスの宣言

    CIMObjectPath logreccop = new CIMObjectPath("Solaris_LogRecord", keys);

  5. Solaris_LogRecord の新しいインスタンスを宣言します。ファイルに書き込むようにプロパティのベクトルを設定します。


    例 13-5 インスタンスとプロパティの設定

    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();
    	}

  6. データがログファイルに書き込まれたあと、セッションを閉じます。


    例 13-6 セッションを閉じる

    	// セッションを閉じる
    	if(cc != null) {
    	    cc.close();
    	}
        }
    }

ログファイルからのデータの読み取り

アプリケーションでログファイルからログビューアにデータを読み込むには、次の作業を行います

Solaris_LogRecord のインスタンスを取得し、データを読み取るには
  1. 必要なすべての java.rmi クラスをインポートします。


    例 13-7 クラスのインポート

    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;

  2. クラス ReadLog を宣言します。


    例 13-8 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);

  3. ReadLog クラスのクライアント、オブジェクトパス、およびネームスペースの値を設定します。


    例 13-9

    	} 	
    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"); 

  4. Solaris_LogRecord のインスタンスを列挙します。


    例 13-10 インスタンスの列挙

     Enumeration e = cc.enumInstances(cop, true);
    		for (; e.hasMoreElements(); ) {

  5. プロパティの値を出力デバイスに送ります。


    例 13-11 プロパティ値の送信

    	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("-----------------------------
          ----");
    		}

  6. エラー状況が発生する場合は、ユーザーにエラーメッセージを返します。


    例 13-12 エラーメッセージを返す

    }
    	catch (Exception e) {
    	    System.out.println("Exception: "+e);
    		e.printStackTrace();
    	}
     

  7. ファイルからデータが読み取られたあとセッションを閉じます。


    例 13-13 セッションを閉じる

    	// セッションを閉じる。
    	if(cc != null) {
    	    cc.close();
    	}
    }
    }