Solaris WBEM 開発ガイド

Solaris WBEM SDK API を使用してアクセス制御を設定する方法

WBEM SDK の API (SDK API) を使って、名前空間、またはユーザー単位でアクセス制御を設定できます。これらのセキュリティクラスは、root\security 名前空間に格納されます。

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

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

Solaris_UserAcl クラス

Solaris_UserAcl クラスは、Solaris_Acl クラスから、デフォルト値 r (読み取り専用) の文字列型プロパティ capability を継承します。

capability プロパティを次のいずれかの値に設定することで、アクセス権を設定できます。

アクセス権 

説明 

r

読み取り 

rw

読み取りおよび書き込み 

w

書き込み 

なし 

アクセス権なし 

Solaris_UserAcl クラスは、次の 2 つのキープロパティを定義します。名前空間内には、名前空間とユーザー名を組み合わせた 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 クラスから、デフォルト値 r (すべてのユーザーに読み取り専用アクセスを適用) の文字列型プロパティ capability を継承します。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);