Solaris WBEM SDK 開発ガイド

アクセス制御の設定

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

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

これら 2 つのクラスを結び付けて使用する場合、Solaris_NameSpaceACL クラスを最初に使用して、名前空間内のオブジェクトへのすべてのユーザーのアクセスを制限するのは効果的な方法です。次に、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 を適用するユーザーを示す

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

    ... 
    /* root\security
    (名前空間の名前) を使用して初期化した名前空間オブジェクトを
    ローカルホスト上に作成する */
    
    CIMNameSpace cns = new CIMNameSpace("", "root\security");
    
    // 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 Object Manager に渡す
    cc.createInstance(new CIMObjectPath(), ci);
    ...  

Solaris_NamespaceAcl クラス

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

プロパティ 

データ型 

目的 

nspace

string

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

名前空間のアクセス制御設定
  1. Solaris_namespaceAcl クラスのインスタンスを作成します。次に例を示します。

    ...
    /* root\security  (名前空間の名前) を使用して
    初期化した名前空間オブジェクトをローカルホスト上に作成する */   
    CIMNameSpace cns = new CIMNameSpace("", "root\security"); 
    
    // 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 Object Manager に渡す
    cc.createInstance(new CIMObjectPath(), ci);