Solaris WBEM Services の管理

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

この章では、CIM Object Manager が提供するセキュリティ機能について説明します。内容は次のとおりです。

概要

Solaris オペレーティング環境でセキュリティを管理するには、2 つの別個のメカニズムがあります。WBEM ACL (access control list: アクセス制御リスト) ベースと、Solaris RBAC (role-based access control: 役割によるアクセス制御) です。

Solaris_Acl1.0.mof ファイルで定義されるクラスは、ACL ベースのセキュリティの実装に使用されます。これは Solaris WBEM Services のデフォルトの承認スキーマを提供し、すべての CIM の操作に適用されます。これは、Solaris WBEM Services に特有の機能です。

Solaris_Acl1.0.mof クラスのインスタンスは、WBEM のユーザーおよび (または) ネームスペースに割り当てられたデフォルトの承認を決定します。しかし、プロバイダのプログラムは、このインスタンス操作に関する CIM オペレーションのスキーマをオーバーライドすることが許可されています。Sun の Solaris Provider の場合は、RBAC スキーマを使用します。

WBEM User Manager (/usr/sadm/bin/wbemadmin) の使用により、読み取りアクセスまたは書き込みアクセスのいずれかで既存の ACL にユーザーを追加することができます。「Sun WBEM User Manager によるアクセス制御の設定」を参照してください。また、アクセス制御の設定のために Solaris_Acl1.0.mof クラスを使用して WBEM アプリケーションを作成することもできます。「API によるアクセス制御の設定」を参照してください。

Solaris_Users1.0.mof ファイルで定義されたクラスは、Solaris Management Console (SMC) の「ユーザー」ツールによるユーザーの役割および特権の定義のために Solaris RBAC セキュリティの実装で使用されます。SMC「ユーザー」ツールにより、既存の役割にユーザーを追加したり、既存のユーザーに RBAC 権利 (RBAC 権利は、SMC 「ユーザー」ツールの権利 (Rights) 部分で管理されます) を付与したりすることができます。「Solaris Management Console 「ユーザー」ツール」を参照してください。

Sun の WBEM セキュリティの機能

CIM Object Manager は、CIM Object Manager が動作しているマシンでのユーザーのログイン情報を検証します。検証されたユーザーには、Common Information Model (CIM) スキーマ全体に対する制御アクセス権が与えられます。CIM Object Manager は、個々のクラスやインスタンスのようなシステムリソースに対するセキュリティは提供しません。しかし、CIM Object Manager を使用すると、ネームスペースへのグローバルなアクセス権を制御でき、個々のユーザーベースでもアクセス権を制御できます。

次のセキュリティ機能によって、WBEM 対応しているシステム上の CIM オブジェクトへのアクセスを保護します。

メッセージのデジタル署名は行われないことに注意してください。

認証

ユーザーがログインしユーザー名とパスワードを入力すると、クライアントはそのパスワードを使用して、サーバーが検証する暗号化されたダイジェストを生成します。ユーザーが認証されると、CIM Object Manager はクライアントセッションを設定します。その後のオペレーションはすべてセキュリティ保護されたそのクライアントセッション内で行われ、認証時にネゴシエートされたセッションキーを使用する MAC トークンが使用されます。

承認

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

Solaris Management Console 「ユーザー」ツール

SMC 「ユーザー」ツールにより、既存の役割にユーザーを追加したり、既存のユーザーに RBAC 権利 (RBAC 権利は、SMC「ユーザー」ツールの権利 (Rights) 部分で管理されます) を付与したりすることができます 。

SMC および「ユーザー」ツールを起動する方法
  1. 次のように実行して SMC 起動コマンドのロケーションへ移動します。


    # cd /usr/sbin
    
  2. 次のコマンドを実行して、SMC を起動します。


    # smc
    
  3. 画面左側の「ナビゲーション (Navigation)」内にある「このコンピュータ (This Computer)」をダブルクリックして (またはその隣にある展開/縮小の機能を持つアイコンをシングルクリックして)、その下にあるツリーを展開します。「システム構成 (System Configuration)」についても同様に展開して、「ユーザー (Users)」アイコンを表示します。

  4. 「ユーザー (Users)」アイコンをクリックしてアプリケーションを起動します。

図 3-1 Solaris Management Console で「ユーザー (Users)」ツールを選択した状態

Graphic

Solaris Management Console についての詳細は、smc(1M) のマニュアルページを参照してください。

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 クラスを使用して、選択したユーザーにそのネームスペースに対するアクセス権を与えます。

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);