Sun WBEM 開発ガイド

第 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 章「エラーメッセージ」を参照してください。