この節では、以下の項目について説明します。
Oracle CEPには、データ・ストリームとイベント・ストリーム、構成、ユーザー名とパスワードのデータ、セキュリティ・ポリシー情報、リモート資格証明、ネットワーク・トラフィックなどのサーバー・リソースを保護する様々なメカニズムが用意されています。
Oracle CEPサーバーのセキュリティを構成するには、次の一般的なタスクを考慮してください。
Java SEのセキュリティを構成します。
9.1.1項「Java SEセキュリティ」を参照してください。
認可および認証用のセキュリティ・プロバイダを構成します。
次を参照してください。
パスワードの強度を構成します。
9.4項「パスワード強度の構成」を参照してください。
SSLおよびFIPSを構成します。
次を参照してください。
HTTPS専用接続を構成します。
9.7項「Oracle CEPサーバーのHTTPS専用接続の構成」を参照してください。
Oracle CEPサーバーの個々のサービスのセキュリティを構成します。
詳細は、次を参照してください:
Java SEのセキュリティ・ポリシーは、次のものに対して定義できます。
Oracle CEPを構成するすべてのバンドル
サーバーの起動
Oracle CEPサーバーのJetty HTTPサーバーにデプロイされたWebアプリケーション
Oracle CEP Visualizer
詳細は、次を参照してください:
Oracle CEPは、認証、認可、ロール・マッピングおよび資格証明マッピング用の様々なセキュリティ・プロバイダをサポートしています。
Oracle CEPは以下のセキュリティ・プロバイダをサポートしています。
ファイルベース: すぐに使用できるデフォルトのセキュリティ・プロバイダ。このタイプのプロバイダは、オペレーティング・システムのファイルを使用することで、ユーザー、パスワード、グループ情報などのセキュリティ・データにアクセスします。認証(ユーザーのアイデンティティを証明または検証するプロセス)および認可(ユーザーのセキュリティ・ロールとリクエストされたOracle CEPリソースに割り当てられたセキュリティ・ポリシーに基づいて、Oracle CEPリソースへのユーザーのアクセスを許可または拒否するプロセス)の両方を提供します。認証では通常、ユーザー名とパスワードの組合せが必要となります。
LDAP - LDAP (Lightweight Data Access Protocol)サーバーを使用してユーザー、パスワード、およびグループ情報にアクセスするプロバイダ。認証のみを提供します。
DBMS - データベース管理システム(DBMS)を使用してユーザー、パスワード、およびグループ情報にアクセスするプロバイダ。認証と認可の両方を提供します。
デフォルトのファイルベースのセキュリティ・プロバイダを使用することにした場合、ドメインの構成を追加で行う必要は一切ありません。必要な構成はすべて構成ウィザードによって実行されます。ただし、LDAPまたはDBMSプロバイダを使用する場合は、追加の構成を実行する必要があります。9.3項「セキュリティ・プロバイダの構成」を参照してください。
セキュリティ・プロバイダの構成が完了すると、Oracle CEP Visualizerを使用して、新しいユーザーを追加したり、それらのユーザーをグループに割り当てたり、グループをロールにマッピングしたりできるようになります。9.1.3項「ユーザー、グループおよびロール」を参照してください。
Oracle CEPは、ロールベースの認可制御を使用して、Oracle CEP Visualizerおよびwlevs.Admin
コマンドライン・ユーティリティを保護します。すぐに使用できるデフォルトのセキュリティ・グループが各種存在しています。ユーザーを様々なグループに追加することにより、ユーザーへの様々なロールの割当ができます。
Oracle CEP Visualizer、wlevs.Admin
、またはJMXを使用して、Oracle CEPインスタンスに接続する任意のカスタム管理アプリケーションを使用する管理者は、ロールベースの認可を使用してアクセス権限を取得します。
また、ロールベースの認可を使用して、HTTPパブリッシュ/サブスクライブ・サーバーへのアクセスを制御することもできます。
ロールには次の2種類が存在します。
アプリケーション・ロール: アプリケーション・ロールは、Oracle CEPサーバーにデプロイ済の様々なOracle CQLアプリケーションにアクセスする権限をユーザーに付与します。アプリケーション・ロールを作成し、それらをOracle CEPが提供するタスク・ロールに関連付けることができます。
デフォルトでは、管理者ユーザーはすべてのアプリケーションにアクセスでき、非管理ユーザーはどのアプリケーションにもアクセスできません。ある非管理ユーザーがアプリケーションにアクセスできるようにするには、管理ユーザーが関連するアプリケーション・ロールをそのユーザーに付与する必要があります。
タスク・ロール: タスク・ロールは、自身のアプリケーション・ロールによってアクセスが認可されたアプリケーションで様々なタスクを実行する権限を、ユーザーに付与します。Oracle CEPには、表9-1で説明するデフォルトのタスク・ロールが用意されています。
Oracle CEP Visualizer、またはwlevs.Admin
の使用時に正常に認証されたユーザーにはそのグループ・メンバーシップに基づいてロールが割り当てられますが、その後の管理機能へのアクセスは、そのユーザーが保持するロールに従って制限されます。匿名ユーザー(認証されていないユーザー)は、Oracle CEP Visualizerやwlevs.Admin
には一切アクセスできません。
管理者が構成ウィザードを使用して新しいドメインを作成する際には、wlevsAdministrators
グループの一部となる管理者ユーザーを入力します。デフォルトでは、この情報はファイルベースのプロバイダ・のファイルストア内に格納されます。パスワードは、SHA-256アルゴリズムを使用してハッシュされます。デフォルトの管理者ユーザーの名前はwlevs
、パスワードはwlevs
になります。
表9-1では、新しいドメインの作成直後に使用可能となるデフォルトのOracle CEPタスク・ロールと、それらのロールに割り当てられるグループの名前について説明します。
表9-1 デフォルトのOracle CEPタスク・ロールおよびグループ
タスク・ロール | グループ | 権限 |
---|---|---|
|
wlevsAdministrators |
上記のロールが持つすべての権限に加えて、次の権限があります。
|
|
wlevsApplicationAdmins |
すべてのOperator権限に加えて、デプロイ済アプリケーションの構成を更新する権限があります。 |
|
wlevsBusinessUsers |
すべてのOperator権限に加えて、デプロイ済アプリケーションのプロセッサに関連付けられたOracle CQLおよびEPLルールを更新する権限も持ちます。 |
|
wlevsDeployers |
すべてのOperator権限に加えて、デプロイ済アプリケーションをデプロイ、アンデプロイ、更新、中断、および再開する権限があります。 |
|
wlevsMonitors |
すべてのOperator権限に加えて、診断プロファイルの作成やイベントの記録(および再生)などの診断機能を有効または無効にする権限があります。 |
|
wlevsOperators |
すべてのサーバー・リソース、サービス、およびデプロイ済アプリケーションへの読取り専用アクセスがあります。 |
ドメインの作成が完了したら、管理者によるOracle CEP Visualizerを使用したグループの作成、およびグループの1つ以上のロールへの関連付けが可能になります。各ロールは1つのアプリケーションへのアクセス権限を付与します。ユーザーをあるグループに割り当てると、そのグループに関連付けられたロールにより、それらのアプリケーションにアクセスする権限がそのユーザーに付与されます。
Oracle CEP Visualizerを使用してユーザー、グループおよびロールを変更する手順については、次を参照してください。
『Oracle CEP Visualizerユーザーズ・ガイド』のユーザーの管理に関する項
『Oracle CEP Visualizerユーザーズ・ガイド』のグループの管理に関する項
『Oracle CEP Visualizerユーザーズ・ガイド』のロールの管理に関する項
詳細は、次を参照してください:
Oracle CEPには一方向のSecure Sockets Layer (SSL)が用意されていますが、これは、Oracle CEP VisualizerおよびOracle CEPサーバー・インスタンス間、マルチサーバー・ドメインのOracle CEPサーバー・インスタンス間、およびwlevs.Admin
コマンドライン・ユーティリティとOracle CEPサーバー・インスタンス間のネットワーク・トラフィックを保護するためのものです。
Federal Information Processing Standards (FIPS)の認定を受けた擬似乱数ジェネレータをSSLで使用するように、Oracle CEPを構成できます。
詳細は、次を参照してください:
Oracle Coherence: 7.3項「マルチサーバー・ドメインのサーバー間で送信されるメッセージの保講」
Oracle CEPネイティブ・クラスタリング: A.4項「SSLモードによるwlevs.Adminユーティリティの実行」
National Institute of Standards and Technology (NIST)は、連邦政府のコンピュータ・システムの標準を作成します。NISTはこれらの標準を、政府全体で使用できるようにFederal Information Processing Standards (FIPS)として発行します。
Oracle CEPは、com.rsa.jsafe.provider.JsafeJCE
セキュリティ・プロバイダを使用してFIPSをサポートします。このプロバイダを使用すれば、FIPSの認定を受けた擬似乱数ジェネレータをSSLで使用するようにOracle CEPを構成できます。
詳細は、次を参照してください:
SSLの構成後、HTTPSポートのクライアントのリクエストのみを受け入れるようにOracle CEPサーバーを構成できます。9.7項「Oracle CEPサーバーのHTTPS専用接続の構成」を参照してください。
オプションで、セキュリティを無効化できます。9.10項「セキュリティの無効化」を参照してください。
Oracle CEPには、セキュリティ管理を単純化するためのコマンドライン・ユーティリティが各種用意されています。コマンドライン・ユーティリティに加え、Oracle CEP Visualizerを使用して多くのセキュリティ・タスクを実行できます。
詳細は、次を参照してください:
『Oracle CEP Visualizerユーザーズ・ガイド』のセキュリティ・タスクに関する項
Oracle CEPでは様々なタスクを実行できるように、次のコマンドライン・ユーティリティが用意されています。
wlevs.Admin
: Oracle CEPを管理し、特にOracle CQLおよびEPLプロセッサのルールを動的に構成したり、アプリケーションのイベント待機時間やスループットを監視するためのコマンドライン・インタフェース。
詳細は、付録A「wlevs.Adminコマンドライン・リファレンス」を参照してください。
Deployer
: Oracle CEPアプリケーションをデプロイするためのコマンドラインベースの操作を管理者および開発者に対して提供する、Javaベースのデプロイメント・ユーティリティ。
詳細は、付録B「デプロイヤ・コマンドライン・リファレンス」を参照してください。
cssconfig
: パスワード・ポリシーを使用するセキュリティ構成ファイル(security.xml
)を生成するためのコマンドライン・ユーティリティ。
詳細は、付録C「cssconfigコマンドライン・ユーティリティ」を参照してください。
encryptMSAConfig
: XMLファイル内のpassword
要素に指定されたクリアテキスト・パスワードを暗号化するための暗号化コマンドライン・ユーティリティ。
詳細は、付録C「encryptMSAConfigコマンドライン・ユーティリティ」を参照してください。
各ユーティリティで、次の3つの方法を使用してユーザー資格証明(ユーザー名とパスワード)を指定できます。
コマンドライン上で-user
や-password
などのオプションを使用します。
対話形式を使用して、常にコマンド・ライン・ユーティリティで資格証明のプロンプトが表示されるようにします。
ユーザー資格証明が格納されているファイル・ストアを指定します。ファイル・ストア自体もパスワードで保護します。
本番環境では、1番目のオプション(コマンドライン上でユーザーの資格証明を指定する方法)は決して使用せず、2番目および3番目のオプションのみを使用します。
対話モード(コマンドライン・ユーティリティが資格証明の入力を求める方法)を使用する場合には、ローカル・コンピュータに適したterminalio
ネイティブ・ライブラリがCLASSPATH
に含まれていることを必ず確認し、ユーザーの資格証明の入力時にその情報が画面上にエコーされないようにしてください。Oracle CEPにはこの目的のために一連の標準ネイティブ・ライブラリが含まれていますが、ユーザーが必要とするライブラリが含まれていない可能性があります。
構成ウィザードを使用して新しいドメインを作成する際には、管理者のユーザーおよびパスワードを指定する他、ドメイン・アイデンティティ・キーストアのパスワードも指定します。このユーザーは自動的にwlevsAdministrators
グループに追加されます。デフォルトでは、セキュリティ構成はすべて、ファイルベースのプロバイダを使用して格納されます。
Oracle CEPの例はすべて、ユーザー名wlevs
およびパスワードwlevs
を持つ管理者を使用するように構成されます。新しいドメインを作成する場合には、この管理者の名前とパスワードを指定します。
HelloWorld例ではデフォルトで、セキュリティは無効化されます。これは、任意のユーザーがパスワードを入力しなくてもサーバーを起動したり、アプリケーションをデプロイしたり、管理ツール(wlevs.Admin
)のすべてのコマンドを実行したりできることを意味します。
FX例およびAlgoTrading例ではセキュリティが有効化されます。どちらの例でも、パスワードがwlevs
のユーザーwlevs
が、完全な管理者権限を持つOracle CEP管理者として構成されます。これらの例に対するサーバーを起動するスクリプトは、適切な引数を使用してこのユーザー名およびパスワードをjava
コマンドに渡します。デプロイヤまたはwlevs.Admin
ユーティリティを使用する場合も、適切な引数を使用してこのユーザー名/パスワードのペアを渡す必要があります。
詳細は、9.1.8項「コマンドライン・ユーティリティ使用時のユーザー資格証明の指定」を参照してください。
Java SEプラットフォームには標準ベースで相互運用可能なセキュリティ・アーキテクチャが定義されていますが、これは動的で拡張可能なものとなっています。暗号化、認証および認可、公開鍵インフラストラクチャなどのセキュリティ機能が組み込まれています。
Oracle CEPは、次のセキュリティ・ポリシーを適用することにより、Java SEセキュリティをサポートします。
policy.xml
: Oracle CEPを構成するすべてのバンドルのセキュリティ・ポリシーを定義します。1番目のバンドル・セットはサーバー関連バンドルのポリシーを定義し、2番目のバンドル・セットはアプリケーション・バンドルのポリシーを定義します。
security.policy
: サーバー起動およびJetty HTTPサーバーにデプロイされたWebアプリケーションのセキュリティ・ポリシーを定義します。このファイルは、Oracle CEP Visualizer Webアプリケーションのポリシーも定義します。
前述のファイルのサンプルは製品に付属しており、ORACLE_CEP_HOME
/ocep_11.1/utils/security
にあります。ここで、ORACLE_CEP_HOME
は、Oracle CEPをインストールしたディレクトリ(/oracle_home
など)を意味します。
Oracle CEPでは、Java SEのすべてのセキュリティ機能を有効化できます。
詳細は、9.1.1項「Java SEセキュリティ」を参照してください。
Oracle CEPサーバーJava SEセキュリティを構成するには:
Oracle CEPサーバーが現在実行中である場合は、停止します。
1.5.4項「Oracle CEPサーバーの起動と停止」を参照してください。
policy.xml
およびsecurity.policy
を次のようにコピーします。
コピー元: ORACLE_CEP_HOME
/ocep_11.1/utils/security
コピー先: DOMAIN_DIR
/
servername
/config
ここで、ORACLE_CEP_HOME
はOracle CEPをインストールしたディレクトリ(/oracle_home
など)を示し、DOMAIN_DIR
はメインのOracle CEPインストール・ディレクトリを示し、servername
はサーバー名示します(/oracle_cep/user_projects/domains/mydomain/myserver/config
など)。
必要に合わせて2つのセキュリティ・ポリシー・ファイルを編集します。
DOMAIN_DIR
/
servername
ディレクトリにある、ユーザーのプラットフォーム向けのサーバー起動スクリプト(Windowsの場合はstartwlevs.cmd
、UNIXの場合はstartwlevs.sh
)を更新します。具体的には、サーバーを実際に起動するjava
コマンドに次の3つのプロパティを追加します。
-Djava.security.manager -Djava.security.policy=./config/security.policy -Dcom.bea.core.security.policy=./config/policy.xml
例:
"%JAVA_HOME%\bin\java" %DGC% %DEBUG% -Djava.security.manager -Djava.security.policy=./config/security.policy -Dcom.bea.core.security.policy=./config/policy.xml -Dwlevs.home="%USER_INSTALL_DIR%" -Dbea.hoe="%BEA_HOME%" -jar "%USER_INSTALL_DIR%\bin\wlevs.jar" %1 %2 %3 %4 %5 %6
Oracle CEPサーバーのDOMAIN_DIR
/
servername
/config/config.xml
ファイルを更新し、Jetty Webアプリケーションのデプロイ先となるディレクトリを指定する<jetty>
要素の<scratch-directory>
子要素追加してJettyの構成を編集します。例:
<jetty>
<name>JettyServer</name>
<network-io-name>NetIO</network-io-name>
<work-manager-name>JettyWorkManager</work-manager-name>
<secure-network-io-name>sslNetIo</secure-network-io-name>
<scratch-directory>./JettyWork</scratch-directory>
</jetty>
変更を有効にするために、Oracle CEPサーバーを再起動します。
1.5.4項「Oracle CEPサーバーの起動と停止」を参照してください。
セキュリティ・プロバイダは、認証または認可(あるいはその両方)を実行します。
Oracle CEPサーバーでは、ファイルベース、LDAP、DBMSの各セキュリティ・プロバイダがサポートされます。
ファイルベースのセキュリティ・プロバイダは、構成ウィザードが構成するデフォルトのセキュリティ・プロバイダです。ファイルベースのセキュリティ・プロバイダを使用する場合、追加の構成は必要ではありません。
LDAPセキュリティ・プロバイダは認証のみをサポートします。
DBMSセキュリティ・プロバイダは認証および認可の両方をサポートします。
この項では次の内容について説明します。
詳細は、9.1.2項「セキュリティ・プロバイダ」を参照してください。
次の手順では、LDAPセキュリティ・プロバイダを認証用に、DBMSプロバイダを認可用に構成する方法について説明します。
警告: LDAPを使用して認証を行う場合、Oracle CEP Visualizerを使用してユーザーのパスワードは変更できるが、ユーザーやグループの追加や削除を行うことはできません。 |
LDAPプロバイダを使用して認証を構成し、DBMSプロバイダを使用して認可を構成するには:
コマンド・ウィンドウを開き、『Oracle CEPスタート・ガイド』の開発環境の設定に関する項の説明に従って、環境を設定します。
ORACLE_CEP_HOME
\ocep_11.1\bin
ディレクトリをPATH
環境変数に追加します。ここで、ORACLE_CEP_HOME
はメインのOracle CEPインストール・ディレクトリ(d:\oracle_cep
など)です。
prompt> set PATH=d:\oracle_cep\ocep_11.1\bin;%PATH% (Windows) prompt> PATH=/oracle_cep/ocep_11.1/bin:$PATH (UNIX)
DOMAIN_DIR
/
servername
/config
ディレクトリに移動します。ここで、DOMAIN_DIR
はドメインのメイン・ディレクトリ(d:\oracle_cep\user_projects\domains\mydomain
など)を示し、servername
はサーバー名を示します。
prompt> cd d:\oracle_cep\user_projects\domains\mydomain\defaultserver\config
任意のテキスト・エディタを使用してmyLDAPandDBMS.properties
という名前のファイルを作成し、その中に例9-1の内容をすべてコピーします。
例9-1 LDAP/DBMSプロパティ・ファイル
# For attributes of type boolean or Boolean, value can be "true" or "false" # and it's case insensitive. # For attributes of type String[], values are comma separated; blanks before # and after the comma are ignored. For example, if the property is defined as: # saml1.IntersiteTransferURIs=uri1, uri2, uri3 # the IntersiteTransferURIs attribute value is String[]{"uri1", "uri2", "uri3"} # For attributes of type Properties, the value should be inputted as # a set of key=value pairs separated by commas; blanks before and after the # commas are also ignored. For example: # store.StoreProperties=DriverName=oracle.jdbc.driver.OracleDriver, ConnectionURL=jdbc:oracle:thin:@united.bea.com:1521:xe, Username=user, Password=user domain.mbean=com.bea.common.management.configuration.LegacyDomainInfoMBean domain.DomainName=legacy-domain-name domain.ServerName=legacy-server-name domain.RootDirectory=legacy-rootdir #domain.ProductionModeEnabled= #domain.WebAppFilesCaseInsensitive= domain.DomainCredential=changeit jaxp.mbean=com.bea.common.management.configuration.JAXPFactoryServiceMBean #jaxp.DocBuilderFactory= #jaxp.SaxParserFactory= #jaxp.SaxTransformFactory= #jaxp.TransformFactory= #ldapssl.mbean=com.bea.common.management.configuration.LDAPSSLSocketFactoryLookupServiceMBean #ldapssl.Protocol= #ldapssl.TrustManagerClassName= namedsql.mbean=com.bea.common.management.configuration.NamedSQLConnectionLookupServiceMBean store.mbean=com.bea.common.management.configuration.StoreServiceMBean store.StoreProperties=DriverName=oracle.jdbc.driver.OracleDriver, ConnectionURL=jdbc:oracle:thin:@localhost:1521:orcl, Username=wlevs, Password=wlevs #store.ConnectionProperties= #store.NotificationProperties= realm.mbean=weblogic.management.security.RealmMBean realm.Name=my-realm #realm.ValidateDDSecurityData= #realm.CombinedRoleMappingEnabled= #realm.EnableWebLogicPrincipalValidatorCache= #realm.MaxWebLogicPrincipalsInCache= #realm.DelegateMBeanAuthorization= #realm.AuthMethods= adt.1.mbean=weblogic.security.providers.audit.DefaultAuditorMBean adt.1.Severity=INFORMATION #adt.1.InformationAuditSeverityEnabled= #adt.1.WarningAuditSeverityEnabled= #adt.1.ErrorAuditSeverityEnabled= #adt.1.SuccessAuditSeverityEnabled= #adt.1.FailureAuditSeverityEnabled= #adt.1.OutputMedium= #adt.1.RotationMinutes= #adt.1.BeginMarker= #adt.1.EndMarker= #adt.1.FieldPrefix= #adt.1.FieldSuffix= adt.1.Name=my-auditor #adt.1.ActiveContextHandlerEntries= atn.1.mbean=weblogic.security.providers.authentication.LDAPAuthenticatorMBean #atn.1.UserObjectClass= #atn.1.UserNameAttribute= #atn.1.UserDynamicGroupDNAttribute= atn.1.UserBaseDN=o=ECS,dc=bea,dc=com atn.1.UserSearchScope=subtree #atn.1.UserFromNameFilter= #atn.1.AllUsersFilter= atn.1.GroupBaseDN=ECS,dc=bea,dc=com #atn.1.GroupSearchScope= #atn.1.GroupFromNameFilter= #atn.1.AllGroupsFilter= #atn.1.StaticGroupObjectClass= #atn.1.StaticGroupNameAttribute= atn.1.StaticMemberDNAttribute=member #atn.1.StaticGroupDNsfromMemberDNFilter= #atn.1.DynamicGroupObjectClass= #atn.1.DynamicGroupNameAttribute= #atn.1.DynamicMemberURLAttribute= atn.1.GroupMembershipSearching=unlimited atn.1.MaxGroupMembershipSearchLevel=0 atn.1.UseRetrievedUserNameAsPrincipal=false #atn.1.IgnoreDuplicateMembership= #atn.1.KeepAliveEnabled= atn.1.Credential=wlevs #atn.1.Name= #atn.1.PropagateCauseForLoginException= atn.1.ControlFlag=REQUIRED #atn.1.ConnectTimeout= atn.1.Host=localhost atn.1.Port=389 #atn.1.SSLEnabled= atn.1.Principal=cn=Administrator,dc=bea,dc=com #atn.1.CacheEnabled= #atn.1.CacheSize= #atn.1.CacheTTL= atn.1.FollowReferrals=false #atn.1.BindAnonymouslyOnReferrals= #atn.1.ResultsTimeLimit= #atn.1.ParallelConnectDelay= #atn.1.ConnectionRetryLimit= atn.1.EnableGroupMembershipLookupHierarchyCaching=true #atn.1.MaxGroupHierarchiesInCache= #atn.1.GroupHierarchyCacheTTL= #atn.5.mbean=weblogic.security.providers.authentication.OpenLDAPAuthenticatorMBean #atn.5.UserNameAttribute= #atn.5.UserBaseDN= #atn.5.UserFromNameFilter= #atn.5.GroupBaseDN= #atn.5.GroupFromNameFilter= #atn.5.StaticGroupObjectClass= #atn.5.StaticMemberDNAttribute= #atn.5.StaticGroupDNsfromMemberDNFilter= #atn.5.UserObjectClass= #atn.5.UserDynamicGroupDNAttribute= #atn.5.UserSearchScope= #atn.5.AllUsersFilter= #atn.5.GroupSearchScope= #atn.5.AllGroupsFilter= #atn.5.StaticGroupNameAttribute= #atn.5.DynamicGroupObjectClass= #atn.5.DynamicGroupNameAttribute= #atn.5.DynamicMemberURLAttribute= #atn.5.GroupMembershipSearching= #atn.5.MaxGroupMembershipSearchLevel= #atn.5.UseRetrievedUserNameAsPrincipal= #atn.5.IgnoreDuplicateMembership= #atn.5.KeepAliveEnabled= #atn.5.Credential= #atn.5.PropagateCauseForLoginException= #atn.5.ControlFlag= #atn.5.Name= #atn.5.ConnectTimeout= #atn.5.Host= #atn.5.Port= #atn.5.SSLEnabled= #atn.5.Principal= #atn.5.CacheEnabled= #atn.5.CacheSize= #atn.5.CacheTTL= #atn.5.FollowReferrals= #atn.5.BindAnonymouslyOnReferrals= #atn.5.ResultsTimeLimit= #atn.5.ParallelConnectDelay= #atn.5.ConnectionRetryLimit= #atn.5.EnableGroupMembershipLookupHierarchyCaching= #atn.5.MaxGroupHierarchiesInCache= #atn.5.GroupHierarchyCacheTTL= cm.1.mbean=weblogic.security.providers.credentials.DefaultCredentialMapperMBean cm.1.Name=my-credential-mapper cm.1.CredentialMappingDeploymentEnabled=true #cm.3.mbean=weblogic.security.providers.credentials.FileBasedCredentialMapperMBean #cm.3.FileStorePath= #cm.3.FileStorePassword= #cm.3.EncryptAlgorithm= #cm.3.Name= #cm.3.CredentialMappingDeploymentEnabled= rm.1.mbean=weblogic.security.providers.xacml.authorization.XACMLRoleMapperMBean rm.1.Name=my-role-mapper rm.1.RoleDeploymentEnabled=true atz.1.mbean=weblogic.security.providers.xacml.authorization.XACMLAuthorizerMBean atz.1.Name=my-authorizer atz.1.PolicyDeploymentEnabled=true adj.1.mbean=weblogic.security.providers.authorization.DefaultAdjudicatorMBean adj.1.RequireUnanimousPermit=false adj.1.Name=my-adjudicator
プロパティ・ファイルをカスタマイズします。具体的には、store.StoreProperties
プロパティを更新してデータベース・ドライバ情報、接続URL、およびデータベースに接続するユーザーのユーザー名/パスワードが反映されるようにします。デフォルトのプロパティがどのように設定されるかを、次に示します。
store.StoreProperties=DriverName=oracle.jdbc.driver.OracleDriver, ConnectionURL=jdbc:oracle:thin:@mymachine:1521:orcl, Username=wlevs, Password=wlevs
さらに、LDAPサーバー構成を指定するプロパティを更新します。
その他すべてのプロパティはデフォルト値のままにします。
元に戻す必要が生じた場合のために、既存のsecurity.xml
ファイルのバックアップ・コピーを取っておきます。
prompt> copy security.xml security.xml_save
次のcssconfig
コマンドを実行して新しいセキュリティ構成ファイル(security.xml
)を作成します。
prompt> cssconfig -p myLDAPandDBMS.properties -c security.xml -i security-key.dat
前述のコマンドで、myLDAPandDBMS.properties
はステップ4で作成したプロパティ・ファイルであり、security.xml
は新しいセキュリティ構成ファイルの名前であり、security-key.dat
は構成ウィザードによって生成された既存のファイルで、アイデンティティ・キーを含んでいます。
追加情報は、C.1項「cssconfigコマンドライン・ユーティリティ」を参照してください。
次のようにORACLE_CEP_HOME
/ocep_11.1/utils/security/sql
ディレクトリに移動します。
prompt> cd d:\oracle_cep\ocep_11.1\utils\security\sql
このディレクトリには、必要なセキュリティ関連データベース表を作成して初期データを設定するためのSQLスクリプトがあります。この手順ではDBMSプロバイダを認可のみに使用するので、関連するスクリプトは次のとおりです。
atz_create.sql
: 認可で必要となるすべての表を作成します。
atz_drop.sql
: 認可に関する表をすべてドロップします。
ステップ4でデータベース・ストアとして指定したデータベースに対し、次のSQLスクリプトを実行します。
atz_create.sql
LDAPサーバーを構成します。具体的には、9.1.3項「ユーザーズ、グループおよびロール」で説明したデフォルト・グループと、ドメイン作成時に指定した管理者ユーザーを追加します。デフォルトでは、このユーザーの名前はwlevs
になります。
詳細については、LDAPサーバーのマニュアルを参照してください。
オプションで、新しいsecurity.xml
ファイル内でパスワードの強度を構成します。
9.4項「パスワード強度の構成」を参照してください。
次の手順では、認証および認可の両方に使用するようにDBMSセキュリティ・プロバイダを構成する方法について説明します。
DBMSプロバイダを使用して認証および認可の両方を構成するには:
コマンド・ウィンドウを開き、『Oracle CEPスタート・ガイド』の開発環境の設定に関する項の説明に従って、環境を設定します。
ORACLE_CEP_HOME
\ocep_11.1\bin
ディレクトリをPATH
環境変数に追加します。ここで、ORACLE_CEP_HOME
はメインのOracle CEPインストール・ディレクトリ(d:\oracle_cep
など)です。
prompt> set PATH=d:\oracle_cep\ocep_11.1\bin;%PATH% (Windows) prompt> PATH=/oracle_cep/ocep_11.1/bin:$PATH (UNIX)
DOMAIN_DIR
/
servername
/config
ディレクトリに移動します。ここで、DOMAIN_DIR
はドメインのメイン・ディレクトリ(d:\oracle_cep\user_projects\domains\mydomain
など)を示し、servername
はサーバー名を示します。
prompt> cd d:\oracle_cep\user_projects\domains\mydomain\defaultserver\config
元に戻す必要が生じた場合のために、既存のsecurity.xml
ファイルのバックアップ・コピーを取っておきます。
prompt> copy security.xml security.xml_save
任意のテキスト・エディタを使用してmyDBMS.properties
という名前のファイルを作成し、その中に例9-2の内容をすべてコピーします。
例9-2 DBMSプロパティ・ファイル
# For attributes of type boolean or Boolean, value can be "true" or "false" # and it's case insensitive. # For attributes of type String[], values are comma separated; blanks before # and after the comma are ignored. For example, if the property is defined as: # saml1.IntersiteTransferURIs=uri1, uri2, uri3 # the IntersiteTransferURIs attribute value is String[]{"uri1", "uri2", "uri3"} # For attributes of type Properties, the value should be inputted as # a set of key=value pairs separated by commas; blanks before and after the # commas are also ignored. For example: # store.StoreProperties=DriverName=oracle.jdbc.driver.OracleDriver, ConnectionURL=jdbc:oracle:thin:@united.bea.com:1521:xe, Username=user, Password=user domain.mbean=com.bea.common.management.configuration.LegacyDomainInfoMBean domain.DomainName=legacy-domain-name domain.ServerName=legacy-server-name domain.RootDirectory=legacy-rootdir #domain.ProductionModeEnabled= #domain.WebAppFilesCaseInsensitive= domain.DomainCredential=changeit jaxp.mbean=com.bea.common.management.configuration.JAXPFactoryServiceMBean #jaxp.DocBuilderFactory= #jaxp.SaxParserFactory= #jaxp.SaxTransformFactory= #jaxp.TransformFactory= #ldapssl.mbean=com.bea.common.management.configuration.LDAPSSLSocketFactoryLookupServiceMBean #ldapssl.Protocol= #ldapssl.TrustManagerClassName= namedsql.mbean=com.bea.common.management.configuration.NamedSQLConnectionLookupServiceMBean store.mbean=com.bea.common.management.configuration.StoreServiceMBean store.StoreProperties=DriverName=oracle.jdbc.driver.OracleDriver, ConnectionURL=jdbc:oracle:thin:@mymachine:1521:orcl, Username=wlevs, Password=wlevs #store.ConnectionProperties= #store.NotificationProperties= realm.mbean=weblogic.management.security.RealmMBean realm.Name=my-realm #realm.ValidateDDSecurityData= #realm.CombinedRoleMappingEnabled= #realm.EnableWebLogicPrincipalValidatorCache= #realm.MaxWebLogicPrincipalsInCache= #realm.DelegateMBeanAuthorization= #realm.AuthMethods= sqlconn.1.mbean=com.bea.common.management.configuration.NamedSQLConnectionMBean sqlconn.1.Name=POOL1 sqlconn.1.JDBCDriverClassName=oracle.jdbc.driver.OracleDriver sqlconn.1.ConnectionPoolCapacity=5 sqlconn.1.ConnectionPoolTimeout=10000 sqlconn.1.AutomaticFailoverEnabled=false sqlconn.1.PrimaryRetryInterval=0 sqlconn.1.JDBCConnectionURL=jdbc\:oracle\:thin\:@fwang02\:1521\:orcl sqlconn.1.JDBCConnectionProperties= sqlconn.1.DatabaseUserLogin=wlevs sqlconn.1.DatabaseUserPassword=wlevs sqlconn.1.BackupJDBCConnectionURL= sqlconn.1.BackupJDBCConnectionProperties= sqlconn.1.BackupDatabaseUserLogin= sqlconn.1.BackupDatabaseUserPassword= adt.1.mbean=weblogic.security.providers.audit.DefaultAuditorMBean adt.1.Severity=INFORMATION #adt.1.InformationAuditSeverityEnabled= #adt.1.WarningAuditSeverityEnabled= #adt.1.ErrorAuditSeverityEnabled= #adt.1.SuccessAuditSeverityEnabled= #adt.1.FailureAuditSeverityEnabled= #adt.1.OutputMedium= #adt.1.RotationMinutes= #adt.1.BeginMarker= #adt.1.EndMarker= #adt.1.FieldPrefix= #adt.1.FieldSuffix= adt.1.Name=my-auditor #adt.1.ActiveContextHandlerEntries= atn.1.mbean=weblogic.security.providers.authentication.SQLAuthenticatorMBean atn.1.PasswordAlgorithm=SHA-1 atn.1.PasswordStyle=SALTEDHASHED atn.1.PasswordStyleRetained=true atn.1.SQLCreateUser=INSERT INTO USERS VALUES ( ? , ? , ? ) atn.1.SQLRemoveUser=DELETE FROM USERS WHERE U_NAME \= ? atn.1.SQLRemoveGroupMemberships=DELETE FROM GROUPMEMBERS WHERE G_MEMBER \= ? ORG_NAME \= ? atn.1.SQLSetUserDescription=UPDATE USERS SET U_DESCRIPTION \= ? WHERE U_NAME \= ? atn.1.SQLSetUserPassword=UPDATE USERS SET U_PASSWORD \= ? WHERE U_NAME \= ? atn.1.SQLCreateGroup=INSERT INTO GROUPS VALUES ( ? , ? ) atn.1.SQLSetGroupDescription=UPDATE GROUPS SET G_DESCRIPTION \= ? WHERE G_NAME \= ? atn.1.SQLAddMemberToGroup=INSERT INTO GROUPMEMBERS VALUES( ?, ?) atn.1.SQLRemoveMemberFromGroup=DELETE FROM GROUPMEMBERS WHERE G_NAME \= ? AND G_MEMBER \= ? atn.1.SQLRemoveGroup=DELETE FROM GROUPS WHERE G_NAME \= ? atn.1.SQLRemoveGroupMember=DELETE FROM GROUPMEMBERS WHERE G_NAME \= ? atn.1.SQLListGroupMembers=SELECT G_MEMBER FROM GROUPMEMBERS WHERE G_NAME \= ? AND G_MEMBER LIKE ? atn.1.DescriptionsSupported=true atn.1.SQLGetUsersPassword=SELECT U_PASSWORD FROM USERS WHERE U_NAME \= ? atn.1.SQLUserExists=SELECT U_NAME FROM USERS WHERE U_NAME \= ? atn.1.SQLListMemberGroups=SELECT G_NAME FROM GROUPMEMBERS WHERE G_MEMBER \= ? atn.1.SQLListUsers=SELECT U_NAME FROM USERS WHERE U_NAME LIKE ? atn.1.SQLGetUserDescription=SELECT U_DESCRIPTION FROM USERS WHERE U_NAME \= ? atn.1.SQLListGroups=SELECT G_NAME FROM GROUPS WHERE G_NAME LIKE ? atn.1.SQLGroupExists=SELECT G_NAME FROM GROUPS WHERE G_NAME \= ? atn.1.SQLIsMember=SELECT G_MEMBER FROM GROUPMEMBERS WHERE G_NAME \= ? AND G_MEMBER \= ? atn.1.SQLGetGroupDescription=SELECT G_DESCRIPTION FROM GROUPS WHERE G_NAME \= ? atn.1.GroupMembershipSearching=unlimited atn.1.MaxGroupMembershipSearchLevel=0 atn.1.DataSourceName=POOL1 atn.1.PlaintextPasswordsEnabled=true atn.1.ControlFlag=REQUIRED atn.1.Name=my-authenticator atn.1.EnableGroupMembershipLookupHierarchyCaching=false atn.1.MaxGroupHierarchiesInCache=100 atn.1.GroupHierarchyCacheTTL=60 cm.1.mbean=weblogic.security.providers.credentials.DefaultCredentialMapperMBean cm.1.Name=my-credential-mapper cm.1.CredentialMappingDeploymentEnabled=true rm.1.mbean=weblogic.security.providers.xacml.authorization.XACMLRoleMapperMBean rm.1.Name=my-role-mapper rm.1.RoleDeploymentEnabled=true atz.1.mbean=weblogic.security.providers.xacml.authorization.XACMLAuthorizerMBean atz.1.Name=my-authorizer atz.1.PolicyDeploymentEnabled=true adj.1.mbean=weblogic.security.providers.authorization.DefaultAdjudicatorMBean adj.1.RequireUnanimousPermit=false adj.1.Name=my-adjudicator
プロパティ・ファイルをカスタマイズします。具体的には、store.StoreProperties
プロパティを更新してデータベース・ドライバ情報、接続URL、およびデータベースに接続するユーザーのユーザー名/パスワードが反映されるようにします。デフォルトのプロパティがどのように設定されるかを、次に示します。
store.StoreProperties=DriverName=oracle.jdbc.driver.OracleDriver, ConnectionURL=jdbc:oracle:thin:@mymachine:1521:orcl, Username=wlevs, Password=wlevs
その他すべてのプロパティはデフォルト値のままにします。
次のcssconfig
コマンドを実行して新しいセキュリティ構成ファイル(security.xml
)を作成します。
prompt> cssconfig -p myDBMS.properties -c security.xml -i security-key.dat
前述のコマンドで、myDBMS.properties
はステップ4で作成したプロパティ・ファイルであり、security.xml
は新しいセキュリティ構成ファイルの名前であり、security-key.dat
は構成ウィザードによって生成された既存のファイルで、アイデンティティ・キーを含んでいます。
追加情報は、C.1項「cssconfigコマンドライン・ユーティリティ」を参照してください。
次のようにORACLE_CEP_HOME
/ocep_11.1/utils/security/sql
ディレクトリに移動します。
prompt> cd d:\oracle_cep\ocep_11.1\utils\security\sql
このディレクトリには、必要なセキュリティ関連データベース表を作成して初期データを設定するためのSQLスクリプトがあります。スクリプトは次のとおりです。
atn_create.sql
: 認証で必要となるすべての表を作成します。
atn_drop.sql
: 認証に関する表をすべてドロップします。
atn_init.sql
: 認証関連のユーザー表とグループ表にデフォルト値を挿入します。特にこのスクリプトは、wlevs
という名前の単一のデフォルト管理者ユーザーをパスワードwlevs
でユーザー表に挿入し、このユーザーがwlevsAdministratorsグループに属するものと指定します。さらにこのスクリプトは、表9-1に記載されたデフォルトグループのグループ表への挿入も行います。
atz_create.sql
: 認可で必要となるすべての表を作成します。
atz_drop.sql
: 認可に関する表をすべてドロップします。
構成ウィザードを使用してドメインを作成する際に、デフォルトのwlevs
以外の管理者ユーザーを指定した場合には、atn_init.sql
ファイルを編集し、それに応じたINSERT INTO USERS
文と対応するINSERT INTO GROUPMEMBERS
文を追加します。
たとえば、管理ユーザーjuliet
をパスワードshackell
で追加するには、次の文をatn_init.sql
ファイルに追加します。
INSERT INTO USERS (U_NAME, U_PASSWORD, U_DESCRIPTION) VALUES ('juliet','shackell','default admin'); INSERT INTO GROUPMEMBERS (G_NAME, G_MEMBER) VALUES ('wlevsAdministrators','juliet');
ステップ4でデータベース・ストアとして指定したデータベースに対し、次のSQLスクリプト・ファイルを記載した順番で実行します。
atn_create.sql
atn_init.sql
atz_create.sql
オプションで、新しいsecurity.xml
ファイル内でパスワードの強度を構成します。
9.4項「パスワード強度の構成」を参照してください。
パスワードの強度は、認証資格証明としてのパスワードの効果を表す尺度です。パスワードの強度をどのように構成するかによって、ユーザーが指定できるパスワードのタイプが決定します。たとえば、パスワードにユーザー名を含めることができるかどうか、パスワードの最小限の長さ、パスワードに少なくとも何個の数字を含めるかなどを構成します。
Oracle CEPの認証で使用されるパスワードの強度を構成するには、DOMAIN_DIR
/
servername
/config
ディレクトリにあるセキュリティ構成ファイル(security.xml
)を更新します。ここで、DOMAIN_DIR
はドメインのディレクトリ(d:/oracle_cep/user_projects/domains/mydomain
など)を示し、servername
はサーバー(defaultserver
など)を示します。
パスワード強度の構成は、<password-validator>
要素内に格納されます。
例9-3に、構成ウィザードを使用して新しいドメインを作成した後の、デフォルト値を含むsecurity.xml
ファイルからのスニペットを示します。
例9-3 security.xmlファイル内のデフォルトのpassword-validator要素
<sec:password-validator xmlns:pas="http://www.bea.com/ns/weblogic/90/security/providers/passwordvalidator" xsi:type="pas:system-password-validatorType"> <sec:name>my-password-validator</sec:name> <pas:reject-equal-or-contain-username>true</pas:reject-equal-or-contain-username> <pas:reject-equal-or-contain-reverse-username> false </pas:reject-equal-or-contain-reverse-username> <pas:max-password-length>50</pas:max-password-length> <pas:min-password-length>6</pas:min-password-length> <pas:max-instances-of-any-character>0</pas:max-instances-of-any-character> <pas:max-consecutive-characters>0</pas:max-consecutive-characters> <pas:min-alphabetic-characters>1</pas:min-alphabetic-characters> <pas:min-numeric-characters>1</pas:min-numeric-characters> <pas:min-lowercase-characters>1</pas:min-lowercase-characters> <pas:min-uppercase-characters>1</pas:min-uppercase-characters> <pas:min-non-alphanumeric-characters>0</pas:min-non-alphanumeric-characters> </sec:password-validator>
表9-2では、<password-validator>
の構成可能なすべての子要素を説明します。
security.xml
ファイルを手動で更新した場合には、変更内容が有効になるように、Oracle CEPサーバー・インスタンスを再起動する必要があります。
表9-2 <password-validator>の子要素
子要素 | 説明 | デフォルト値 |
---|---|---|
|
|
|
|
|
|
|
パスワードの最大文字数を指定します。 0の値は制限なしを意味します。 この要素の有効な値は、0に等しいかそれより大きい整数です。 |
50 |
|
パスワードの最小文字数を指定します。 この要素の有効な値は、0に等しいかそれより大きい整数です。 |
6 |
|
パスワード内で同じ文字が出現できる最大回数を指定します。たとえば、この要素を2に設定した場合、パスワード 0の値は制限なしを意味します。 この要素の有効な値は、0に等しいかそれより大きい整数です。 |
0 |
|
パスワード内で許可される、連続する同一文字の最大数を指定します。たとえば、この要素を2に設定した場合、パスワード 0の値は制限なしを意味します。 この要素の有効な値は、0に等しいかそれより大きい整数です。 |
0 |
|
パスワードに含める必要があるアルファベット文字の最小文字数を指定します。 0の値は制限なしを意味します。 この要素の有効な値は、0に等しいかそれより大きい整数です。 |
1 |
|
パスワードに含める必要がある数字の最小文字数を指定します。 0の値は制限なしを意味します。 この要素の有効な値は、0に等しいかそれより大きい整数です。 |
1 |
|
パスワードに含める必要がある小文字の最小文字数を指定します。 0の値は制限なしを意味します。 この要素の有効な値は、0に等しいかそれより大きい整数です。 |
0 |
|
パスワードに含める必要がある大文字の最小文字数を指定します。 0の値は制限なしを意味します。 この要素の有効な値は、0に等しいかそれより大きい整数です。 |
0 |
|
パスワードに含める必要のある非英数字の最小数を指定します。非英数字としては、 0の値は制限なしを意味します。 この要素の有効な値は、0に等しいかそれより大きい整数です。 |
0 |
Oracle CEPは、一方向のSecure Sockets Layer (SSL)を使用して次の各要素間のネットワーク・トラフィックを保護します。
Oracle CEP Visualizerを実行しているブラウザと、Oracle CEP Visualizerが使用するデータサービス・アプリケーションをホストしているOracle CEPインスタンスとの間。
wlevs.Admin
コマンドライン・ユーティリティとOracle CEPインスタンスとの間。
A.4項「wlevs.AdminユーティリティをSSLモードで実行」を参照してください。
マルチ・サーバー・ドメインのメンバー・サーバー間。
サーバーのconfig.xml
ファイル内でSSLを構成します。構成ウィザードを使用してOracle CEPサーバーを作成した場合、そのサーバーのconfig.xml
にはデフォルトのSSL構成が自動的に含められます。
この項では次の内容について説明します。
詳細は、9.1.4項「SSL」を参照してください。
この項では、Oracle CEPでのSSLの構成方法について説明します。
SSLを手動で構成するには:
構成ウィザードを使用してドメインを作成します。
次を参照してください。
任意のXMLエディタを使用して、Oracle CEPサーバーのconfig.xml
ファイルを開きます。
デフォルトでは、構成ウィザードはconfig.xml
ファイルをORACLE_CEP_HOME
/user_projects/domains/
DOMAIN_DIR
/
servername
/config
ディレクトリ内に作成します。ここで、ORACLE_CEP_HOME
はOracle CEPのインストール・ディレクトリ(d:/oracle_cep
など)を示し、DOMAIN_DIR
はドメインのディレクトリ(my_domain
など)を示します。servername
はサーバー・インスタンスのディレクトリ(server1
など)を示します。
詳細は、1.3.1項「Oracle CEPサーバー構成ファイル」を参照してください。
ssl
要素を構成します。
例9-4に、構成ウィザードによって作成されるデフォルトのssl
要素を示します。
例9-4 デフォルトのssl要素
<ssl> <name>sslConfig</name> <key-store>./ssl/evsidentity.jks</key-store> <key-store-pass> <password>{Salted-3DES}sdlUX8aEDeNpQ4VhsaCnFA==</password> </key-store-pass> <key-store-alias>evsidentity</key-store-alias> <key-manager-algorithm>SunX509</key-manager-algorithm> <ssl-protocol>TLS</ssl-protocol> <enforce-fips>false</enforce-fips> <need-client-auth>false</need-client-auth> </ssl>
key-store
要素は証明書ファイルを指します。構成ウィザードは、evsidentity.jks
という名前のデフォルトの証明書ファイルをDOMAIN_DIR
/
servername
/ssl
ディレクトリ内に作成します。そのパスワードは、構成ウィザードを使用してサーバーを作成する際に入力したパスワードと同じになります。
デフォルトでは、証明書秘密鍵のパスワードは、アイデンティティ・キーストアのパスワードと同じになります。
注意: 証明書秘密鍵のパスワードがアイデンティティ・キーストアのパスワードと同じでないと、Oracle CEPサーバーが起動しません。 |
evsidentity.jks
には自己署名証明書が含まれています。必要であれば、ユーザー独自の証明書ファイルを作成し、evsidentity.jks
ファイルを置き換えるか、config.xml
ファイルのkey-store
要素を更新します。
注意: 本番環境では、システム管理者は、デフォルトの自己署名証明書をCA署名証明書で置き換える必要があります。 |
キーストアを自分で作成する方法の詳細は、9.5.2項「手動でキーストアを作成する方法」を参照してください。
enforce-fips
要素の詳細は、9.6項「Oracle CEPサーバーのFIPSの構成」を参照してください。
SSL用のnetio
要素を構成します。
例9-5では、構成ウィザードによって作成されるデフォルトのnetio
要素を示します。
例9-5 デフォルトのnetio要素
<netio> <name>sslNetIo</name> <ssl-config-bean-name>sslConfig</ssl-config-bean-name> <port>9003</port> </netio>
ssl-config-bean-name
は、ssl
要素のname
子要素に一致する必要があります(ステップ3を参照してください)。
オプションで、このポートをニーズに合ったポート番号に変更します。
デフォルトでは、デフォルトのセキュア・ポートは9003
です。
jetty
要素を構成し、secure-network-io-name
子要素を追加します。
例9-6では、構成ウィザードによって作成されるデフォルトのjetty要素を示します。
例9-6 デフォルトのjetty要素
<jetty>
<name>JettyServer</name>
<network-io-name>NetIO</network-io-name>
<work-manager-name>JettyWorkManager</work-manager-name>
<secure-network-io-name>sslNetIo</secure-network-io-name>
</jetty>
secure-network-io-name
は、SSLのnetio
要素のname
子要素に一致する必要があります(ステップ4を参照してください)。
config.xml
ファイルを保存して閉じます。
Oracle CEPサーバーが実行中の場合は再起動します。
1.5.4項「Oracle CEPサーバーの起動と停止」を参照してください。
デフォルトでは、構成ウィザードは、evsidentity.jks
という名前のデフォルトのキーストア証明書ファイルをDOMAIN_DIR
/
servername
/ssl
ディレクトリ内に作成します。そのパスワードは、構成ウィザードを使用してサーバーを作成する際に入力したパスワードと同じになります。オプションでは、手動で独自のキーストアを構成できます。
詳細は、次を参照してください:
キーストアを手動で作成するには:
次のようにJDKのkeytoolコマンドを使用して、キーストアを生成します。
keytool -genkey -alias evsidentity -keyalg RSA -validity 10958 -keystore evsidentity.jks -keysize 1024
要求されたら、次のようにキーストアのパスワードを入力します。
Enter keystore password:
要求されたら、次のようにキーストアの属性を入力します。
What is your first and last name? [Unknown]: CEP What is the name of your organizational unit? [Unknown]: SOA What is the name of your organization? [Unknown]: ORACLE What is the name of your City or Locality? [Unknown]: SF What is the name of your State or Province? [Unknown]: CA What is the two-letter country code for this unit? [Unknown]: US Is CN=CEP, OU=SOA, O=ORACLE, L=SF, ST=CA, C=US correct? [no]: y
次のように鍵のパスワードを要求されたら、パスワードは入力せず、RETURN
を押します。
Enter key password for <evsidentity> (RETURN if same as keystore password):
注意: 証明書秘密鍵のパスワードがアイデンティティ・キーストアのパスワードと同じでないと、Oracle CEPサーバーが起動しません。 |
任意のXMLエディタを使用して、Oracle CEPサーバーのconfig.xml
ファイルを開きます。
デフォルトでは、構成ウィザードはconfig.xml
ファイルをORACLE_CEP_HOME
/user_projects/domains/
DOMAIN_DIR
/
servername
/config
ディレクトリ内に作成します。ここで、ORACLE_CEP_HOME
はOracle CEPのインストール・ディレクトリ(d:/oracle_cep
など)を示し、DOMAIN_DIR
はドメインのディレクトリ(my_domain
など)を示します。servername
はサーバー・インスタンスのディレクトリ(server1
など)を示します。
詳細は、1.3.1項「Oracle CEPサーバー構成ファイル」を参照してください。
ssl
要素を構成します。
例9-4に、構成ウィザードによって作成されるデフォルトのssl
要素を示します。
例9-7 デフォルトのssl要素
<ssl> <name>sslConfig</name> <key-store>KEYSTORE_PATH
</key-store> <key-store-pass> <password>PASSWORD
</password> </key-store-pass> <key-store-alias>KEYSTORE_ALIAS
</key-store-alias> <key-manager-algorithm>SunX509</key-manager-algorithm> <ssl-protocol>TLS</ssl-protocol> <enforce-fips>false</enforce-fips> <need-client-auth>false</need-client-auth> </ssl>
説明:
KEYSTORE_PATH
は、キーストア・ファイルへのファイル・パスです(ファイル名はkeytoolコマンドの-keystore
引数からのものです)。
PASSWORD
は、キーストアのクリアテキスト・パスワードです。
KEYSTORE_ALIAS
は、キーストアの別名(keytoolコマンドの-alias
引数からのもの)です。
config.xml
ファイルを保存して閉じます。
encryptMSAConfig
ユーティリティを使用して、config.xml
ファイルのkey-store-pass
要素のpassword
子要素に含まれるクリアテキスト・パスワードを暗号化します。
C.2項「encryptMSAConfigコマンドライン・ユーティリティ」を参照してください。
次の手順は、マルチサーバー・ドメイン内で、Oracle CEP Visualizerのデータサービス・アプリケーションをホストしているサーバーと別のサーバーとの間で一方向のSSLを構成する方法を示したものです。
この手順では、Oracle CEP Visualizerのデータサービス・アプリケーションをホストしているサーバーの名前はserver1
、他方のサーバーの名前はserver2
であり、どちらも/oracle_cep/user_projects/domains/mydomain
ディレクトリにあるものと仮定しています。必要であれば、ドメイン内の他のサーバーについてもこの手順を繰り返してください。
マルチサーバー・ドメイン内のサーバー間で送信されるメッセージを保護する方法については、次を参照してください。
Oracle Coherence: 6.3項「マルチサーバー・ドメインのサーバー間で送信されるメッセージの保護」
Oracle CEPネイティブ・クラスタリング: 7.3項「マルチサーバー・ドメインのサーバー間で送信されるメッセージの保護」
マルチサーバー・ドメインでOracle CEP Visualizerを起動する方法については、『Oracle CEP Visualizerユーザーズ・ガイド』の、マルチサーバー・ドメインでOracle CEP Visualizerの起動方法に関する項を参照してください。
マルチサーバー・ドメインで、Oracle CEP Visualizerで使用するためのSSLを構成するには:
ドメイン内の2つのサーバーでSSLが構成されていることを確認します。
構成ウィザードを使用してサーバーを作成した場合、SSLはデフォルトで構成されています。
詳細やデフォルトの構成を変更する方法については、9.5.1項「手動でSSLを構成する方法」を参照してください。
server2
を起動します。
1.5.4項「Oracle CEPサーバーの起動と停止」を参照してください。
コマンド・ウィンドウを開き、『Oracle CEPスタート・ガイド』の開発環境の設定に関する項の説明に従って、環境を設定します。
次のように、server1
ディレクトリのssl
サブディレクトリに移動します。
prompt> cd /oracle_cep/user_projects/domains/mydomain/server1/ssl
次のコマンドを指定して、server2
の証明書を含むserver1
のトラスト・キーストアを生成します。
prompt> java -classpathORACLE_CEP_HOME
\ocep_11.1\common\lib\evspath.jar;ORACLE_CEP_HOME
\ocep_11.1\utils\security\wlevsgrabcert.jar com.bea.wlevs.security.util.GrabCerthost
:secureport
-alias=alias
truststorepath
説明:
ORACLE_CEP_HOME
は、Oracle CEPのインストール・ディレクトリ(d:/oracle_cep
など)を意味します。
host
は、server2
が実行されているコンピュータを意味します。
secureport
は、server2
用に構成されたSSLネットワーク入出力ポートを意味します。デフォルト値は9003です。
詳細は、9.5.1項「手動でSSLの構成方法」の例9-5を参照してください。
alias
は、トラスト・キーストアにある証明書の別名です。デフォルト値はhostnameです。
truststorepath
は、生成されるトラスト・キーストア・ファイルのフルパス名を意味します。デフォルトはevstrust.jks
です。
例:
prompt> java -classpath C:\OracleCEP\ocep_11.1\common\lib\evspath.jar;C:\OracleCEP\ocep_11.1\utils\security\wlevsgrabcert.jar com.bea.wlevs.security.util.GrabCert server2:9003 -alias=server2 evstrust.jks
詳細は、C.3項「GrabCertコマンドライン・ユーティリティ」を参照してください。
要求されたら、次のようにOracle CEP管理者のパスワードを入力します。
Please enter the Password for the supplied user : wlevs
要求されたら、次のようにserver2
から送信された証明書を選択します。
Created TrustStore evstrust.jks Opening connection to server2:9003... Starting SSL handshake... No certificates in evstrust.jks are trusted by server2:9003 Server sent 1 certificate(s): 1 Subject CN=localhost, OU=Event Server, O=BEA, L=San Jose, ST=California, C=US Issuer CN=localhost, OU=Event Server, O=BEA, L=San Jose, ST=California, C=US sha1 00 07 c0 f4 10 48 9a f9 07 82 4f b6 9c 7f 7c d0 37 57 90 7d md5 a4 d4 ff d2 43 69 95 ca c3 43 e6 f6 b8 08 df b7 Enter certificate to add to trusted keystore evstrust.jks or 'q' to quit: [1]
server1
のconfig.xml
ファイルを更新します。具体的には、次のスニペットで太字で示しているように、トラスト・キーストアの情報をssl
要素に追加し、use-secure-connections
要素を追加します。
<ssl> <name>sslConfig</name> <key-store>./ssl/evsidentity.jks</key-store> <key-store-pass> <password>{Salted-3DES}s4YUEvH4Wl2DAjb45iJnrw==</password> </key-store-pass> <key-store-alias>evsidentity</key-store-alias> <key-manager-algorithm>SunX509</key-manager-algorithm> <ssl-protocol>TLS</ssl-protocol> <trust-store>./ssl/evstrust.jks</trust-store> <trust-store-pass> <password>wlevs</password> </trust-store-pass> <trust-store-alias>evstrust</trust-store-alias> <trust-store-type>JKS</trust-store-type> <trust-manager-algorithm>SunX509</trust-manager-algorithm> <enforce-fips>false</enforce-fips> <need-client-auth>false</need-client-auth> </ssl> <use-secure-connections> <value>true</value> </use-secure-connections>
構成ファイルは、メイン・サーバー・ディレクトリのconfig
サブディレクトリ(/oracle_cep/user_projects/domains/mydomain/server1/config/
など)にあります。
encryptMSAConfig
ユーティリティを使用して、config.xml
ファイルのtrust-store-pass
要素のpassword
子要素に含まれるクリアテキスト・パスワードを暗号化します。
C.2項「encryptMSAConfigコマンドライン・ユーティリティ」を参照してください。
server1
を起動します。
Federal Information Processing Standards (FIPS)の認定を受けた擬似乱数ジェネレータを使用するように、Oracle CEPサーバーを構成できます。
詳細は、9.1.5項「FIPS」を参照してください。
Oracle CEPサーバーのFIPSを構成するには:
Java SEのセキュリティを構成します。
9.2項「Oracle CEPサーバーのJava SEセキュリティの構成」を参照してください。
SSLを構成します。
9.5項「ネットワーク・トラフィックを保護するためのSSLの構成」を参照してください。
com.bea.core.jsafejcefips_2.0.0.0.jar
を次のようにコピーします。
コピー元: ORACLE_CEP_HOME
/ocep_11.1/utils/security
コピー先: JRE_HOME
/jre/lib/ext
ここで、ORACLE_CEP_HOME
はOracle CEPをインストールしたディレクトリを示し、JRE_HOME
はユーザーのJRockit JREを含むディレクトリを示します。
Oracle JRockit Real Time 3.0でJDKによってインストールされたJRockitを使用している場合は、com.bea.core.jsafejcefips_2.0.0.0.jar
をJROCKIT_HOME
/jrrt-3.0.0-1.6.0/jre/lib/ext
ディレクトリにコピーします。
ここで、JROCKIT_HOME
は、Oracle JRockit Real Time 3.0をインストールしたディレクトリ(d:\jrockit
など)です。
Oracle CEP 11g リリース1 (11.1.1)でインストールされたJRockit JDKを使用している場合は、com.bea.core.jsafejcefips_2.0.0.0.jar
をORACLE_CEP_HOME
/jrockit-R27.6.0-50-1.6.0_05/jre/lib/ext
ディレクトリにコピーします。
ここで、ORACLE_CEP_HOME
は、Oracle CEPサーバーをインストールしたディレクトリ(d:\oracle_cep
など)です。
Oracle CEPサーバーが現在実行中である場合は、停止します。
1.5.4項「Oracle CEPサーバーの起動と停止」を参照してください。
JRE_HOME
/jre/lib/security/java.security
ファイルを編集し、例9-8に示すようにcom.bea.core.jsafejcefips_2.0.0.0.jar
をJCEプロバイダとして追加します。
例9-8 JCEプロバイダとしてjsafejcefips JARを追加するためのjava.securityの編集
security.provider.N
=com.rsa.jsafe.provider.JsafeJCE
ここで、N
は、Javaがセキュリティ・プロバイダにアクセスする順序を指定する一意の整数です。
JsafeJCE
プロバイダをデフォルトのプロバイダにするには、N
を1に設定します。この場合、java.security
ファイル内の他のすべてのプロバイダのN
の値を変更し、例9-9に示すように各プロバイダが一意の番号を持つようにします。
例9-10に示すように、server.config
ファイルのssl
要素を編集し、次の子要素を追加します。
enforce-fips
: このオプションをtrue
に設定します。
secure-random-algorithm
: このオプションをFIPS186PRNGに設定します。
secure-random-provider
: このオプションをJsafeJCE
に設定します。
例9-10 FIPSを有効にするためのserver.configの編集
<ssl> <name>sslConfig</name> <key-store>./ssl/evsidentity.jks</key-store> <key-store-pass> <password>s4YUEvH4Wl2DAjb45iJnrw==</password> </key-store-pass> <key-store-alias>evsidentity</key-store-alias> <key-manager-algorithm>SunX509</key-manager-algorithm> <ssl-protocol>TLS</ssl-protocol> <enforce-fips>true</enforce-fips> <need-client-auth>false</need-client-auth> <secure-random-algorithm>FIPS186PRNG</secure-random-algorithm> <secure-random-provider>JsafeJCE</secure-random-provider> </ssl>
変更を有効にするために、Oracle CEPサーバーを再起動します。
1.5.4項「Oracle CEPサーバーの起動と停止」を参照してください。
この節では、HTTPS接続だけが許可されるようにサーバーをロック・ダウンする方法について説明します。
Oracle CEPサーバーのHTTPS専用接続を構成するには:
サーバーのSSLが構成されていることを確認します。
詳細は、9.5項「ネットワーク・トラフィックを保護するためのSSLの構成」を参照してください。
サーバーのDOMAIN_DIR
/
servername
/config/config.xml
ファイルからHTTPポートの構成を削除し、HTTPSポートの構成のみを残します。
例9-11は標準的な構成を含むconfig.xml
のスニペットを示したもので、HTTPポートおよびHTTPSポートの両方が構成されています。HTTPポートは9002、HTTPSポートは9003です。クライアントは両方のポートを使用してJettyサーバーにアクセスできます。
例9-11 HTTPアクセスおよびHTTPSアクセスの両方を含む一般的なconfig.xmlファイル
<netio> <name>NetIO</name> <port>9002</port> </netio> <netio> <name>sslNetIo</name> <port>9003</port> <ssl-config-bean-name>sslConfig</ssl-config-bean-name> </netio> <jetty> <name>JettyServer</name> <network-io-name>NetIO</network-io-name> <secure-network-io-name>sslNetIo</secure-network-io-name> ... </jetty> <ssl> <name>sslConfig</name> <key-store>./ssl/evsidentity.jks</key-store> ... </ssl>
例9-12に、HTTPアクセスが削除された状態の同じconfig.xml
ファイルを示します。この時点で、クライアントはHTTPSポートを使用しないとJettyサーバーにアクセスできなくなります。
例9-12 HTTPアクセスが削除された状態の一般的なconfig.xmlファイル
<netio> <name>sslNetIo</name> <port>9003</port> <ssl-config-bean-name>sslConfig</ssl-config-bean-name> </netio> <jetty> <name>JettyServer</name> <secure-network-io-name>sslNetIo</secure-network-io-name> ... </jetty> <ssl> <name>sslConfig</name> <key-store>./ssl/evsidentity.jks</key-store> ... </ssl>
マルチサーバー・ドメインの場合には、メンバー・サーバー間でSSLが構成されていることを確認します。
詳細は、9.5.3項「Oracle CEP Visualizerのマルチサーバー・ドメインでのSSLの構成方法」を参照してください。
基本的なセキュリティ・タスク(Java SEセキュリティ、セキュリティ・サービス・プロバイダ、SSLの構成など)が完了したら、Oracle CEPサーバーが提供する様々なサービスに固有のセキュリティ詳細を構成できます。
この項では次の内容について説明します。
Oracle CEPでは、HTTPサーブレットや静的リソースをデプロイするためのJava Webサーバーとして、Jetty(http://www.mortbay.org
を参照してください)がサポートされています。
次のセキュリティ・タスクはJettyの構成に影響を与えます。
Jettyの詳細は、第10章「Oracle CEP用のJettyの構成」を参照してください。
JMXを使用してOracle CEPサーバーにアクセスするクライアントは、Oracle CEPのロールベースの認証によって処理されます。
詳細は、次を参照してください:
『Oracle CEP Visualizerユーザーズ・ガイド』のグループの管理に関する項
『Oracle CEP Visualizerユーザーズ・ガイド』のユーザーの管理に関する項
JMXの詳細は、第11章「Oracle CEPで使用するJMXの構成」を参照してください。
構成ウィザードを使用してdata-source
を新しいパスワードで更新する場合、構成ウィザードによってパスワードの暗号化が実行されます。
data-source
要素を追加または変更することでconfig.xml
ファイルを手動で更新する場合には、パスワードをプレーン・テキストで入力した後、暗号化ユーティリティencryptMSAConfig
を使用してそのパスワードを暗号化します。
例9-13に、config.xml
ファイルのdata-source
要素を示します。ここでは、properties
要素内で新しいプレーン・テキスト・パスワードのsecret
がpassword
という名前で指定されています。
例9-13 暗号化後のOracle CEP config.xmlファイルのdata-source要素
<data-source>
<name>epcisDS</name>
<driver-params>
<url>jdbc:sqlserver://localhost:1433;databaseName=myDB;SelectMethod=cursor</url>
<driver-name>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-name>
<properties>
<element>
<name>user</name>
<value>juliet</value>
</element>
<element>
<name>password</name>
<value>secret</value>
</element>
</properties>
</driver-params>
</data-source>
<transaction-manager>
<name>TM</name>
<rmi-service-name>RMI</rmi-service-name>
</transaction-manager>
例9-14に、暗号化後のconfig.xmlファイルのdata-source要素を示します。プレーン・テキストのパスワードが暗号化されている点に注意してください。
例9-14 暗号化後のOracle CEP config.xmlファイルのdata-source要素
<data-source>
<name>epcisDS</name>
<driver-params>
<url>jdbc:sqlserver://localhost:1433;databaseName=myDB;SelectMethod=cursor</url>
<driver-name>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-name>
<properties>
<element>
<name>user</name>
<value>juliet</value>
</element>
<element>
<name>password</name>
<value>{Salted-3DES}hVgC5iZ3nZA=</value>
</element>
</properties>
</driver-params>
</data-source>
<transaction-manager>
<name>TM</name>
<rmi-service-name>RMI</rmi-service-name>
</transaction-manager>
詳細は、次を参照してください:
JDBCの詳細は、第12章「Oracle CEPで使用するJDBCの構成」を参照してください。
Oracle CEPには、セキュリティ関連のアクティビティをログするセキュリティ監査プログラムが提供されています。
セキュリティ監査プログラムのデフォルトのロギング先は、DOMAIN_DIR
/
servername
/legacy-rootdir/servers/legacy-server-name/logs/DefaultAuditRecorder.log
ファイルです。ここで、DOMAIN_DIR
はドメインのメイン・ディレクトリ(d:\oracle_cep\user_projects\domains\mydomain
など)を示し、servername
はサーバー名を示します。
デフォルトで、Oracle CEPセキュリティ監査プログラムはセキュリティ上のエラーまたは障害のみをロギングします。これにより、セキュリティ監査プログラムのログ・ファイルを管理可能なサイズに保ちやすくなります。
オプションで、Oracle CEPセキュリティ監査プログラムが情報をログするレベルを構成できます。
詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』のWebLogic監査プロバイダの構成に関する項を参照してください。
セキュリティ監査プログラムのロギングを構成するには:
DOMAIN_DIR
/
servername
/config
ディレクトリに移動します。ここで、DOMAIN_DIR
はドメインのメイン・ディレクトリ(d:\oracle_cep\user_projects\domains\mydomain
など)を示し、servername
はサーバー名を示します。
prompt> cd d:\oracle_cep\user_projects\domains\mydomain\defaultserver\config
任意のテキスト・エディタを使用して、security.xml
ファイルを編集します。
sec:auditor
要素を検索します。
例9-15は、デフォルトのsec:auditor
要素の構成を示しています。
例9-15 デフォルトのsec:auditor要素
<sec:auditor xsi:type="wls:default-auditorType"> <sec:name>my-auditor</sec:name> <wls:severity>CUSTOM</wls:severity> <wls:rotation-minutes>720</wls:rotation-minutes> <wls:error-audit-severity-enabled>true</wls:error-audit-severity-enabled> <wls:failure-audit-severity-enabled>true</wls:failure-audit-severity-enabled> </sec:auditor>
必要に応じてsec:auditor
要素を変更します。
wls:rotation-minutes
: 何分待ってから新しいDefaultAuditRecorder.log
ファイルを作成するかを指定します。指定された時刻になると、監査ファイルが閉じられ、新しいファイルが作成されます。DefaultAuditRecorder.YYYYMMDDHHMM.log
という名前のバックアップ・ファイル(DefaultAuditRecorder.200405130110.log
など)が同じディレクトリ内に作成されます。
wls:severity
: 表9-3に示すように、Oracle CEPサーバーに適した重大度レベルを指定します。Oracle CEPのセキュリティ監査プログラムは、指定された重大度のセキュリティ・イベントだけでなく、それより高い重大度ランク値を持つイベントもすべて監査します。たとえば、重大度レベルをERROR
に設定した場合、Oracle CEPのセキュリティ監査プログラムは、重大度レベルERROR
、SUCCESS
およびFAILURE
のセキュリティ・イベントを監査します。
表9-3 Oracle CEPのセキュリティ監査プログラムの重大度レベル
イベントの重大度 | ランク |
---|---|
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
あるいは、例9-15に示すように、wls:severity
のレベルをCUSTOM
に設定した後、次の子要素の1つ以上を使用して特定の重大度レベルを監査対象として有効化(true
に設定)または無効化(false
に設定)することもできます。
wls:information-audit-severity-enabled
: 重大度
値がCUSTOM
に設定された状態でこの子要素をtrueに設定すると、重大度レベルINFORMATION
のイベントの監査レコードがOracle CEPセキュリティ監査プログラムによって生成されます。
wls:warning-audit-severity-enabled
: 重大度
値がCUSTOM
に設定された状態でこの子要素をtrueに設定すると、重大度レベルWARNING
のイベントの監査レコードがOracle CEPセキュリティ監査プログラムによって生成されます。
wls:error-audit-severity-enabled
: 重大度
値がCUSTOM
に設定された状態でこの子要素をtrueに設定すると、重大度レベルERROR
のイベントの監査レコードがOracle CEPセキュリティ監査プログラムによって生成されます。
wls:success-audit-severity-enabled
: 重大度
値がCUSTOM
に設定された状態でこの子要素をtrueに設定すると、重大度レベルSUCCESS
のイベントの監査レコードがOracle CEPセキュリティ監査プログラムによって生成されます。
wls:failure-audit-severity-enabled
: 重大度
値がCUSTOM
に設定された状態でこの子要素をtrueに設定すると、重大度レベルFAILURE
のイベントの監査レコードがOracle CEPセキュリティ監査プログラムによって生成されます。
security.xml
ファイルを保存して閉じます。
変更を有効にするために、Oracle CEPサーバーを再起動します。
1.5.4項「Oracle CEPサーバーの起動と停止」を参照してください。
Oracle CEPサーバーのセキュリティを完全に無効化できます。開発環境ではこの構成が適切である可能性もありますが、本番環境でセキュリティを無効化することはお薦めしません。
セキュリティを一時的に無効化するには、コマンドラインからstartwlevs.cmd
またはstartwlevs.sh
スクリプトを-disablesecurity
引数付きで実行します。例:
startwlevs.cmd -disablesecurity