この章では、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 は、ディジタル形式で署名された秘密セッション鍵を検証することにより、サーバーに対するクライアントのメッセージを別のクライアントが取得、送信することを防ぐ。CIM Object Manager は、有効な秘密セッション鍵のないクライアントからは同一のバイトストリームでも受け付けない
ディジタル署名 - CIM Object Manager は、Java ディジタル署名クラスを使用してサーバーに対するクライアントの応答にディジタル形式で署名を行うが、クライアントに対するサーバーの応答にはディジタル署名を行わない
ユーザーがログインしユーザー名とパスワードを入力する場合、クライアントはそのパスワードを暗号化し、暗号化されたパスワードを CIM Object Manager に送ります。ユーザーが認証されると、CIM Object Manager はクライアントセッションを設定します。その後のオペレーションはすべて、セキュリティが保護されたそのクライアントセッションで行われます。
CIM Object Manager は、次の 2 つのユーザーアカウントを作成します。
admin - CIM Object Manager Repository 内の LDAP スキーマにアクセスするために使用される管理アカウント。admin アカウントの作成とそのパスワードの設定は、インストール時に行われる
guest - ログイン時にユーザー名が指定されない場合に使用されるデフォルトのアカウント
ユーザーの識別情報が CIM Object Manager によって認証されると、その識別情報を使用して、アプリケーションまたはそのタスクの実行をそのユーザーに許可すべきかどうかを検証できます。CIM Object Manager は資格ベースの承認をサポートしているため、管理者は読み取り権と書き込み権を特定のユーザーに割り当てることができます。これらの承認は、既存の Solaris ユーザーアカウントに追加されます。
root アカウントに正常にログインできるかどうかは、ネームサービス (DNS、NIS、NIS+ など) がシステムでどのように設定されているかによって決まるため、スーパーユーザーとしてログインすることはお勧めできません。
Sun WBEM User Manager では、承認されたユーザーの追加と削除、およびアクセス権の設定などが行えます。このアプリケーションは、ユーザー認証の管理、および WBEM 対応のシステム上の CIM オブジェクトへのアクセスに使用してください。ユーザーには、Solaris ユーザーアカウントが必要です。
アクセス権は、個々のユーザー、ネームスペース、またはこの両方に設定できます。ユーザーを追加する場合、ネームスペースを選択します。この選択をすると、デフォルトでは選択されたネームスペース内の CIM オブジェクトに対する読み取り権がそのユーザーに与えられます。
管理者とは、WBEM 管理アカウント admin にログインするユーザーを指します。管理者は、CIM オブジェクトに対して次のアクセス権を設定できます。
読み取り権のみ - CIM スキーマオブジェクトへの読み取り権だけを許可する。このアクセス権を持つユーザーは、インスタンスとクラスの検索は行えるが、CIM オブジェクトの作成、削除、および変更は行えない
読み取り権と書き込み権 - すべての CIM クラスおよびインスタンスへの読み取り権、書き込み権、および削除権を与える
書き込み権 - すべての CIM クラスとインスタンスに対する書き込み権と削除権は許可するが、読み取り権は許可しない
アクセス権なし - CIM クラスとインスタンスへのアクセス権がない
コマンドウィンドウで、次のコマンドを入力します。
% /opt/SUNWconn/wbem/bin/cimadmin |
Sun WBEM User Manager が起動し、「ユーザーマネージャ (User Manager)」ダイアログボックスと「ログイン (Login)」ダイアログボックスが表示されます。「ログイン (Login)」ダイアログボックスは、現在のホスト名を表示します。このダイアログボックスでは、フィールドごとにコンテキストヘルプ情報が利用できます。
「ログイン (Login)」ダイアログボックスで、次の操作を行います。
「ホスト名 (Host Name)」フィールドで、CIM Object Manager を実行しているホスト名を入力します。
「ユーザー名 (User Name)」フィールドで、admin と入力します。WBEM ユーザーアカウントを管理するには、管理アカウントにログインする必要があります。
「パスワード (Password)」フィールドで、admin アカウントのパスワードを入力します。
「了解 (OK)」をクリックします。
「ユーザーマネージャ (User Manager)」ダイアログボックスが開かれ、ユーザー名と、現在のホスト上のネームスペース内の WBEM オブジェクトへのアクセス権の一覧が表示されます。
Sun WBEM User Manager を起動します。
ダイアログボックスの「ユーザーのアクセス権 (Users Access)」で、「追加 (Add)」をクリックします。
使用できるネームスペースを示したダイアログボックスが開かれます。
テキスト入力フィールド「ユーザー名 (User Name)」に、Solaris ユーザーアカウント名を入力します。
表示されたネームスペースの中からネームスペースを 1 つ選択します。
「了解 (OK)」をクリックします。
選択されたネームスペース内の CIM オブジェクトへの読み取り権がこのユーザーに与えられ、このユーザーが「ユーザーマネージャ (User Manager)」ダイアログボックスに追加されます。
「了解 (OK)」を再度クリックし、「ユーザーマネージャ (User Manager)」ダイアログボックスを閉じます。
Sun WBEM User Manager を起動します。
アクセス権を変更したいユーザーを選択します。
ユーザーに読み取り権だけを与えるには、「読み取り権 (Read)」チェックボックスをクリックします。ユーザーに書き込み権を与えるには、「書き込み権 (Write)」チェックボックスをクリックします。
「了解 (OK)」をクリックします。
Sun WBEM User Manager を起動します。
ダイアログボックスの「ユーザーのアクセス権 (Users Access)」で、アクセス権を削除したいユーザー名を選択します。
ネームスペースに対するこのユーザーのアクセス権を削除するには「削除 (Delete)」をクリックします。
ユーザーのアクセス権を削除してもよいか確認を求めるダイアログボックスが表示されます。「了解 (OK)」をクリックします。
「了解 (OK)」を再度クリックし、「ユーザーマネージャ (User Manager)」ダイアログボックスを閉じます。
Sun WBEM User Manager を起動します。
ダイアログボックスの「ネームスペースのアクセス権 (Namespace Access)」で「追加 (Add)」をクリックします。
使用できるネームスペースを示したダイアログボックスが開かれます。
アクセス権を設定したいネームスペースを選択します。
デフォルトでは、ネームスペースに対する読み取り権だけがユーザーに与えられます。
ネームスペースに対してアクセスをまったく許可しない場合は、「読み取り権 (Read)」と「書き込み権 (Write)」チェックボックスを選択しないでください。書き込み権を与えるには、「書き込み権 (Write)」チェックボックスをクリックします。読み取り権を与えるには、「読み取り権 (Read)」チェックボックスをクリックします。
「了解 (OK)」をクリックして、「ユーザーマネージャ (User Manager)」ダイアログボックスを閉じます。
Sun WBEM User Manager を起動します。
ダイアログボックスの「ネームスペースのアクセス権 (Namespace Access)」で、アクセス権を削除したいネームスペースを選択し、「削除 (Delete)」をクリックします。
ネームスペースからアクセス制御が削除され、「ユーザーマネージャ (User Manager)」ダイアログボックスのネームスペースリストからそのネームスペースが削除されます。
「了解 (OK)」をクリックして、「ユーザーマネージャ (User Manager)」ダイアログボックスを閉じます。
Sun WBEM SDK API を使用して、ネームスペースのアクセス制御または個々のユーザーのアクセス制御を設定できます。MOF コンパイラは、インストール時に Solaris_Acl1.0.mof ファイル内に定義されたセキュリティクラスを /root/Security ネームスペースにコンパイルします。Solaris_Acl1.0.mof ファイルは、次のクラスを定義します。
Solaris_Acl - Solaris Access Control Lists (ACL) の基底クラス。このクラスは、文字列プロパティ capability を定義し、そのデフォルト値を r (読み取り権) に設定する
Solaris_UserAcl - 指定されたネームスペース内の CIM オブジェクトに対してユーザーが持つアクセス制御を表す
Solaris_NamespaceAcl - ネームスペースに対するアクセス制御を表す
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_Acl 基底クラスのサブクラスです。Solaris_UserAcl クラスは、この基底クラスからデフォルト値 r (読み取り権) を持つ文字列プロパティ capability を継承します。
capability プロパティには、次に示すアクセス権を設定できます。
アクセス権 | 説明 |
---|---|
r |
読み取り権 |
rw |
読み取り権と書き込み権 |
w |
書き込み権 |
none |
アクセス不可 |
Solaris_UserAcl クラスは、次の 2 つキープロパティを定義します。ネームスペースに存在できるのは、ネームスペースとユーザー名の ACL ペアのインスタンス 1 つだけです。
プロパティ | データ型 | 目的 |
---|---|---|
nspace |
文字列 |
この ACL が適用されるネームスペースを識別する |
username |
文字列 |
この ACL が適用されるユーザーを識別する |
Solaris_UserAcl クラスのインスタンスを作成します。次に例を示します。
// Solaris_UserAcl クラスを取得 cimclass = cc.getClass(newCIMObjectPath("Solaris_UserAcl"); // Solaris_UserAcl クラスの新しいインスタンスを作成 ci = cimclass.newInstance();
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"));
インスタンスを更新します。次に例を示します。
// 更新されたインスタンスを CIM Object Manager に渡す。 cc.setInstance(new CIMObjectPath(), ci);
Solaris_NamespaceAcl は、Solaris_Acl 基底クラスを拡張したサブクラスです。Solaris_NamespaceAcl は、この基底クラスからデフォルト値 r (GUEST およびすべてのユーザーの読み取り権) を持つ文字列プロパティ capability を継承します。Solaris_NamespaceAcl クラスは、次の重要なプロパティを定義します。
プロパティ | データ型 | 目的 |
---|---|---|
nspace |
文字列 |
このアクセス制御リストが適用されるネームスペースを識別する。ネームスペースに存在できるのは、ネームスペース ACL のインスタンス 1 つだけである |
Solaris_namespaceAcl クラスのインスタンスを作成します。次に例を示します。
// Solaris_namespaceAcl クラスを取得 cimclass = cc.getClass(newCIMObjectPath("Solaris_namespaceAcl"); // Solaris_namespaceAcl クラスの新しいインスタンスを作成 ci = cimclass.newInstance();
capability プロパティに目的のアクセス権を設定します。次に例を示します。
/* root¥molly ネームスペースに対するアクセス権 (capability) を rw (読み取り権と書き込み権) に変更 */ ci.updatePropertyValue("capability",new CIMValue("rw")); ci.updatePropertyValue("nspace",new CIMValue("root¥molly"));
インスタンスを更新します。次に例を示します。
// 更新されたインスタンスを CIM Object Manager に渡す。 cc.setInstance(new CIMObjectPath(),ci);
エラーメッセージの説明については、第 9 章「エラーメッセージ」を参照してください。