Solaris WBEM 開発ガイド

アクセス制御の設定

ユーザーまたは名前空間ごとに、アクセス制御を設定できます。次のアクセス制御クラスは、root\security 名前空間に格納されます。

名前空間内の CIM オブジェクトに対するアクセス制御は、ユーザーごとに設定できます。Solaris_UserACL クラスのインスタンスを作成し、そのアクセス権を変更します。同様に、Solaris_NameSpaceACL クラスのインスタンスを作成し、createInstance メソッドを使用してそのインスタンスへのアクセス権を設定することにより、名前空間へのアクセス制御を設定できます。

Solaris_NameSpaceACL クラスを使ってこの 2 つのクラスの使用方法を組み合わせ、まず、名前空間内のオブジェクトに対するすべてのユーザーのアクセスを制限します。次に、Solaris_UserACL クラスを使用して、選択したユーザーに名前空間へのアクセスを許可します。

Solaris_UserAcl クラス

Solaris_UserAcl クラスは、Solaris_Acl 基底クラスを拡張したクラスです。Solaris_UserAcl クラスは、Solaris_Acl 基底クラスから文字列プロパティ capability をデフォルト値 r (読み取り専用) で継承します。capability プロパティには、次の表に示すアクセス特権の値を設定できます。

アクセス権 

説明 

r

読み取り 

rw

読み取りおよび書き込み 

w

書き込み 

なし 

アクセス権なし 

次の表に、Solaris_UserAcl クラスが定義するキープロパティを示します。名前空間内には、名前空間とユーザー名 ACL のペアのインスタンスを 1 つだけ入れることができます。

プロパティ 

データ型 

目的 

nspace

string

ACL を適用する名前空間を示す

username

string

ACL を適用するユーザーを示す

Procedureユーザーのアクセス制御設定

手順
  1. Solaris_UserAcl クラスのインスタンスを作成します。

    ...
    /* ローカルホスト上に root\security (名前空間の名前)
    で初期化した名前空間オブジェクトを作成する */
    
    CIMNameSpace cns = new CIMNameSpace("", "root\security");
    
    // root ユーザーとして root\security 名前空間に接続する
    cc = new CIMClient(cns, user, user_passwd);
    
    // Solaris_UserAcl クラスを取得する
    cimclass = cc.getClass(new CIMObjectPath("Solaris_UserAcl");
    
    // Solaris_UserAcl の新しいインスタンスを作成する
    class ci = cimclass.newInstance();
    ...
  2. capability プロパティを目的のアクセス権に設定します。

    ... 
    /* root\molly 名前空間内のオブジェクトに対するユーザー Guest の
    アクセス権 (capability) を読み取りおよび書き込みに変更する */ 
    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 オブジェクトマネージャに渡す 
    cc.createInstance(new CIMObjectPath(), ci); 
    ... 

Solaris_NamespaceAcl クラス

Solaris_NamespaceAcl クラスは、 Solaris_Acl 基底クラスを拡張したクラスであり、文字列プロパティ capability をデフォルト値 r (すべてのユーザーに対し読み取り専用) で継承します。Solaris_NamespaceAcl クラスは、次のキープロパティを定義します。

プロパティ 

データ型 

目的 

nspace

string

アクセス制御リストを適用する名前空間を示す。名前空間内には、名前空間 ACL のインスタンスを 1 つだけ指定できる

Procedure名前空間のアクセス制御設定

手順
  1. Solaris_namespaceAcl クラスのインスタンスを作成します。

    ...
    /* ローカルホスト上に root\security (名前空間の名前)
    で初期化した名前空間オブジェクトを作成する */   
    CIMNameSpace cns = new CIMNameSpace("", "root\security"); 
    
    // root ユーザーとして root\security 名前空間に接続する
    cc = new CIMClient(cns, user, user_passwd);
    
    // Solaris_namespaceAcl クラスを取得する 
    cimclass = cc.getClass(new CIMObjectPath("Solaris_namespaceAcl");
    
    // Solaris_namespaceAcl の新しいインスタンスを作成する
    class ci = cimclass.newInstance();
    ...
  2. capability プロパティを目的のアクセス権に設定します。

    ... 
    /* root\molly 名前空間のアクセス権 (capability) 
    を読み取り/書き込みに変更する */ 
    ci.setProperty("capability", new CIMValue(new String("rw")); 
    ci.setProperty("nspace", new CIMValue(new String("root\molly")); 
    ...
  3. インスタンスを更新します。

     // 更新されたインスタンスを CIM オブジェクトマネージャに渡す 
    cc.createInstance(new CIMObjectPath(), ci);