この章の内容は次のとおりです。
Oracle WebLogic Serverドメイン内でOracle Coherenceをデプロイする場合に使用できるいくつかのセキュリティ機能があります。デフォルトのセキュリティ構成では、いずれのサーバーもクラスタに参加でき、いずれのExtendクライアントもクラスタのリソースにアクセスできます。クラスタの無許可の使用に対して保護するには、次のセキュリティ機能を構成する必要があります。
Oracle Coherenceアクセス・コントローラ – クラスタ・メンバー間の認可を提供します
Oracle WebLogic Server認可 – Oracle Coherenceキャッシュおよびサービスへ認可を提供します
Oracle Coherence IDトークン – Extendクライアントの認証を提供します
Oracle WebLogic ServerドメインにおけるOracle Coherenceのセキュリティの多くは、既存のセキュリティ機能を再利用します。これらの既存のセキュリティ・コンポーネントの知識が前提となっています。可能な場合は、このドキュメント内で既存のコンテンツへの参照が提供されます。
Oracle Coherenceセキュリティ・フレームワーク(アクセス・コントローラ)をOracle WebLogic Serverドメインで有効化して、クラスタ・リソースおよび操作へのアクセスを保護できます。アクセス・コントローラは認可を提供し、クラスタ・メンバー間の暗号化/復号化を使用して信頼を検証します。アクセス・コントローラの詳細は、「アクセス・コントローラの使用方法の概要」を参照してください。
Oracle WebLogic Serverでは、アクセス・コントローラは、管理対象Coherenceサーバーのキーストアを使用してOracle Coherenceクラスタ・メンバー間のコール元IDを確立します。デモアイデンティティ・キーストアがデフォルトで使用され、それにはデフォルトのSSL ID (DemoIdentity)が含まれています。デフォルトのキーストアおよびIDは、設定の必要がなく、開発およびテストに適しています。特定のキーストアおよびIDを本番環境に作成する必要があります。Oracle WebLogic Serverにおけるキーストア、IDおよび信頼の構成の詳細は、「Oracle WebLogic Serverのセキュリティの管理」を参照してください。
Oracle WebLogic Serverドメインでセキュリティ・フレームワークを有効化するには:
Oracle Coherenceセキュリティ・フレームワークでは、認証を実行する際にプリンシパル(ID)が必要です。SSLデモアイデンティティ・キーストアがデフォルトで使用され、それにはデフォルトのSSL ID (DemoIdentity)が含まれています。SSLデモ・キーストアおよびIDは通常、開発中に使用されます。本番環境では、SSLキーストアおよびIDを作成する必要があります。たとえば、Javaのkeytool
ユーティリティを使用して、admin
IDを含むキーストアを作成します。
keytool -genkey -v -keystore ./keystore.jks -storepass password -alias admin -keypass password -dname CN=Administrator,O=MyCompany,L=MyCity,ST=MyState
注意:
SSLキーストアおよびIDを作成する場合、そのSSLキーストアおよびIDを使用するようにOracle WebLogic Serverを構成する必要があります。さらに、クラスタ内のすべての管理対象Coherenceサーバーのキーストアに、同じSSL IDが存在する必要があります。「設定」ページの「キーストア」および「SSL」タブを使用して、管理対象CoherenceサーバーにキーストアおよびIDを構成します。
デフォルトのSSL IDをオーバーライドして、セキュリティ・フレームワークで使用するIDを指定するには:
Oracle WebLogic Server認証を使用して、ドメイン内で実行するOracle Coherenceリソースを保護できます。特に、様々なロールおよびポリシーを作成して、キャッシュおよびサービスへのアクセスを制御できます。デフォルトでは認可が有効であり、デフォルトの認可ポリシーではすべてのユーザーがすべてのOracle Coherenceリソースにアクセスできます。Oracle WebLogic Serverにおけるロールおよびポリシーの作成の詳細は、「Oracle WebLogic Serverロールおよびポリシーによるリソースの保護」を参照してください。
認可ロールおよびポリシーは、キャッシュおよびサービスに明示的に構成されます。保護されることになるキャッシュ名およびサービスを知っておく必要があります。キャッシュ構成ファイルの調査によって、キャッシュ名およびサービス名が提供される場合があります。ただし、Oracle Coherenceのキャッシュ名のワイルドカード・サポートのために、アプリケーションで使用されているキャッシュ名を知っているアプリケーション開発者またはアーキテクトに確認する必要がある場合があります。たとえば、キャッシュ構成ファイル内のキャッシュ・マッピングは、ワイルドカード(*
またはdist-*
など)を使用する可能性があり、アプリケーションで実際に使用されているキャッシュの名前を示しません。
注意:
サービスまたはキャッシュ・リソースを削除しても、リソースに対して定義されているロールおよびポリシーは削除されません。ロールおよびポリシーは、サービスまたはキャッシュ・リソースを削除する前に、明示的に削除する必要があります。
Oracle WebLogic Server認証を使用して、特定のOracle Coherenceキャッシュへのアクセスを制限できます。キャッシュ認証を指定するには:
IDトークンは、Oracle Coherenceプロキシ・サーバーを介したOracle Coherenceクラスタへの無許可のアクセスに対して保護するために使用されます。IDトークンは、ローカル(WebLogic Server内)のExtendクライアント、およびリモート(WebLogic Server外)のJava、C++、および.NET Extendクライアントによって使用されます。有効なIDトークンを渡すクライアントのみに、クラスタ・サービスへのアクセスが許可されます。null
IDトークンが渡される場合(Subject
のスコープ外で接続するクライアント)、クライアントはOracle WebLogic Serverの匿名ユーザーとして処理されます。Extendクライアントは、匿名ユーザーがアクセスできるキャッシュおよびサービスにアクセスできます。
注意:
IDが確立されたら、認可ポリシーを使用してそのIDを特定のキャッシュおよびサービスに制限する必要があります。認可の構成の詳細は、「Oracle Coherenceのキャッシュおよびサービスの認可」を参照してください。
IDトークン・セキュリティでは、IDトークンを作成するIDトランスフォーマの実装、およびIDトークンを検証するアイデンティティ・アサータの実装が必要です。デフォルトのIDトランスフォーマの実装(DefaultIdentityTransformer
)およびアイデンティティ・アサータの実装(DefaultIdentityAsserter)が用意されています。デフォルトの実装では、IDトークンとしてSubject
またはPrincipal
を使用します。ただし、いずれのセキュリティ・トークン・タイプもサポートする必要がある場合には(たとえばKerberosトークンのサポート)、カスタム実装を作成できます。トランスフォーマおよびアサータの実装作成の詳細は、「IDトークンを使用したクライアント接続の制限」を参照してください。
IDトランスフォーマはIDトークンとIDとを関連付けます。ローカル(Oracle WebLogic Server内)のExtendクライアントの場合、デフォルトのIDトランスフォーマは置換できません。デフォルトのIDトランスフォーマは、現在のOracle WebLogic Serverユーザーを示すweblogic.security.acl.internal.AuthenticatedSubject
のタイプのトークンを渡します。
リモート(Oracle WebLogic Server外)のExtendクライアントの場合、IDトランスフォーマの実装クラスをアプリケーションのクラスパスの一部として含める必要があり、実装クラスの完全修飾名をクライアントのオペレーション・オーバーライド・ファイルに定義する必要があります。IDトランスフォーマの有効化の詳細は、「カスタムIDトランスフォーマの有効化」を参照してください。次の例では、デフォルトのIDトランスフォーマを有効化します。
... <security-config> <identity-transformer> <class-name> com.tangosol.net.security.DefaultIdentityTransformer</class-name> </identity-transformer> </security-config> ...
リモートのExtendクライアントは、Subject.doAS
メソッド内のキャッシュ操作を実行する必要があります。次に例を示します。
Principal principal = new WLSUserImpl("user"); Subject subject = new Subject(); subject.getPrincipals().add(principal); Subject.doAs(subject, new PrivilegedExceptionAction() { NamedCache cache = CacheFactory.getCache("mycache"); ...
アイデンティティ・アサータは、Oracle Coherenceクラスタに対して有効化する必要があり、クライアントのIDトークンをアサート(検証)するために使用されます。ローカル(Oracle WebLogic Server内)のExtendクライアントの場合、アイデンティティ・アサータはweblogic.security.acl.internal.AuthenticatedSubject
のタイプのトークンをアサートするためにすでに有効化されています。
リモート(Oracle WebLogic Server外)のExtendクライアントの場合、カスタム・アイデンティティ・サータの実装クラスがGARにパッケージ化されている必要があります。ただし、リモートのExtendクライアントがトークンとしてnull
を渡す場合、アイデンティティ・アサータは必要ありません。プロキシ・サービスがnullでないトークンを受信し、アイデンティティ・アサータの実装クラスが構成されていない場合、SecurityException
がスローされ、接続試行が拒否されます。
クラスタに対してアイデンティティ・アサータを有効化するには: