Solaris WBEM Services の管理

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

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

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

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

アクセス特権は、個別のネームスペースや、ユーザーとネームスペースの組み合せに対して設定できます。ユーザーを追加し、ネームスペースを選択すると、ユーザーにはデフォルトで、選択したネームスペース内の CIM オブジェクトに対する読み取り権が与えられます。ユーザーとネームスペースのアクセス権を効果的に組み合せるには、アクセス権をあるネームスペースに限定してから、個別のユーザーにそのネームスペースに対する読み取り権、読み取り/書き込み権、または書き込み権を与えます。

個別の管理オブジェクトにアクセス権を設定することはできませんが、ネームスペースまたは個々のユーザーのすべての管理オブジェクトに対してアクセス権を設定できます。

root アカウントにログインすると、ユーザーおよび CIM オブジェクトに対し次のアクセス権を設定できます。

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


    % /usr/sadm/bin/wbemadmin
    

    Sun WBEM User Manager が起動され、「ログイン (Login)」ダイアログボックスが表示されます。ダイアログボックスのいずれかのフィールドをクリックすると、そのコンテキストヘルプが「コンテキストヘルプ (Context Help)」パネルに表示されます。

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

    • 「ユーザー名 (User Name)」フィールドにユーザー名を入力します。

      ログインするには、root¥security ネームスペースへの読み取り権が必要です。Solaris ユーザーはデフォルトでゲスト特権をもっているため、Solaris ユーザーにはデフォルトのネームスペースに対する読み取り権が与えられます。読み取り権をもつユーザーはユーザー特権の表示はできますが、変更はできません。

      他のユーザーに権限を与えるためには、root としてログインするか、root¥security ネームスペースへの書き込み権をもつユーザーとしてログインする必要があります。

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

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

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

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

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

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

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

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

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

    このユーザー名が「ユーザーマネージャ (User Manager)」ダイアログボックスに追加されます。

  6. 「了解 (OK)」をクリックして変更を保存し、「ユーザーマネージャ (User manager)」ダイアログボックスを閉じます。または、「適用 (Apply)」をクリックして変更を保存し、ダイアログボックスを開いたままにしておきます。

    選択されたネームスペース内の CIM オブジェクトへの読み取り権がこのユーザーに与えられます。

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

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

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

  4. 「了解 (OK)」をクリックして変更を保存し、「ユーザーマネージャ (User manager)」ダイアログボックスを閉じます。または、「適用 (Apply)」をクリックして変更を保存し、ダイアログボックスを開いたままにしておきます。

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

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

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

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

  4. 「了解 (OK)」をクリックして変更を保存し、「ユーザーマネージャ (User manager)」ダイアログボックスを閉じます。または、「適用 (Apply)」をクリックして変更を保存し、ダイアログボックスを開いたままにしておきます。

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

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

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

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

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

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

    • 書き込み権を与えるには、「書き込み権 (Write)」チェックボックスをクリックします。

    • 読み取り権を与えるには、「読み取り権 (Read)」チェックボックスをクリックします。

  4. 「了解 (OK)」をクリックして変更を保存し、「ユーザーマネージャ (User manager)」ダイアログボックスを閉じます。または、「適用 (Apply)」をクリックして変更を保存し、ダイアログボックスを開いたままにしておきます。

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

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

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

  3. 「了解 (OK)」をクリックして変更を保存し、「ユーザーマネージャ (User manager)」ダイアログボックスを閉じます。または、「適用 (Apply)」をクリックして変更を保存し、ダイアログボックスを開いたままにしておきます。

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

Sun WBEM SDK API を使用して、ネームスペースのアクセス制御または個々のユーザーのアクセス制御を設定できます。次のセキュリティクラスが root¥security ネームスペースに格納されています。

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 クラスのインスタンスを作成します。次に例を示します。

    ...
    /* ネームスペースオブジェクトをローカルホストに作成し、root¥security 
      (ネームスペースの名前) で初期化する。 */
     
    CIMNameSpace cns = new CIMNameSpace("", "root¥security");
     
    // root で root¥security ネームスペースに接続する。
    cc = new CIMClient(cns, "root", "root_password");
     
    // Solaris_UserAcl クラスを取得
    cimclass = cc.getClass(new CIMObjectPath("Solaris_UserAcl");
     
    // Solaris_UserAcl クラスの新しいインスタンスを作成
    
    ci = cimclass.newInstance();
    ...
     

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

    ...
    /* root¥molly ネームスペースのオブジェクトに対するユーザー Guest の
    アクセス権 (capability) を rw (読み取り権と書き込み権) に変更 */
     
    ci.setProperty("capability", new CIMValue(new String("rw"));
    ci.setProperty("nspace", new CIMValue(new String("root¥molly"));
    ci.setProperty("username", new CIMValue(new String("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 クラスのインスタンスを作成します。次に例を示します。

    ...
    /* ネームスペースオブジェクトをローカルホストに作成し、root¥security 
        (ネームスペースの名前) で初期化する。 */
     
    CIMNameSpace cns = new CIMNameSpace("", "root¥security");
     
    // root で root¥security ネームスペースに接続する。
    cc = new CIMClient(cns, "root", "root_password");
     
    // Solaris_namespaceAcl クラスを取得
    cimclass = cc.getClass(new CIMObjectPath("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); 
     

例外メッセージ

例外メッセージの説明については、第 6 章「CIM 例外メッセージ」を参照してください。