WebCenter Sitesは、セキュアなサーバー・アクセスによって内外のセキュリティ攻撃からシステムを保護します。すべてのアクセスは、機密情報がファイル内またはサーバー自体のどちらに格納されているかに関係なく、機密情報を暗号化することによって保護されます。セキュリティ基準を確立して重要な情報が危険にさらされないようにすることが、すべての組織にとって重要です。
この章では、監査証跡情報レポートについて説明します。この章は、次の項で構成されています。
WebCenter Sitesでは、システムはデフォルトで保護されており、さらにインストール要件に適合するようにセキュリティを厳しくする様々なオプションが用意されています。
システムには、暗号化手法によってパスワードおよびネットワーク全体でのデータ交換を正しく処理するために必要な、暗号化鍵を提供する保護されたキー・ストアがインストールされています。これにより、システムのセキュリティを危険にさらす可能性のある未認可の個人には機密情報が表示されないようになります。
システムには、システム管理者が暗号化鍵の作成および管理を制御できるようにするための、外部キー・ストアを提供するオプションがあります。外部キー・ストアは、標準のJava暗号化を使用して対称暗号化鍵を作成および維持します。
よりセキュリティを強化するため、システムには、Javaキー・ストアではなく外部資格証明ストアを提供するオプションがあります。資格証明ストア機能は、Oracleの高度な暗号化を使用して対称暗号化鍵を作成および維持します。資格証明ストアの場所は、適切に構成されたJPS (Javaプラットフォーム・セキュリティ)プロバイダによって識別されます。WebLogicアプリケーション・サーバーで使用する場合、資格証明ストアのアクセスおよび修正はJPSの権限によって保護されます。認可されたプログラムにのみ、資格証明ストアの読込み、修正、またはその両方を実行するためのアクセスが許可されます。
標準のJava暗号化またはOracleの高度な暗号化機能のどちらを使用するかは、外部暗号化キー・ストレージのタイプによって決まります。どのような場合でもこれらの暗号化パッケージは相互に排他的であり、システム内に混在することはできません。(JCEKSタイプの)外部キー・ストアは標準のJava暗号化パッケージを使用する必要があります。Oracleの資格証明ストア機能(CSF)では、Oracle Security Developer Tools (OSDT)によって作成された暗号化鍵のみを使用できます。特定の暗号化パッケージで作成された暗号化鍵にはすべてのタイプのキー・ストアに対する互換性はないので、セキュリティ・ニーズに合ったストアのタイプを選択して、常にそのタイプのストアを使用する必要があります。
(クラスタ構成など)複数のアプリケーション・サーバー・コンテキストまたはマシン、あるいはその両方を通じて暗号化のサポートを必要とするコンポーネントは、同じ暗号化鍵を使用できる必要があります。言い換えれば、ある場所で暗号化されたデータ値を別の場所で複合化する場合は、同じ鍵を使用する必要があります。これは、暗号化および復号化を必要とする場所ごとに、中央キー・ストアのコピーを使用する必要があることを意味します。
キー・ストアまたは資格証明ストアを介した暗号化鍵のレプリケーションおよび共有は環境によって異なるため、このガイドでは説明していません。
暗号化パッケージおよび外部暗号化キー・ストアの構成は、SitesSecurityContext.xml
構成ファイルによって制御されます。このファイルは、それを必要とするプログラムのクラス・パスに存在する必要があります。このファイルのカスタマイズについては、次の項で説明します。Sites製品では、製品内部の様々な機能に関連付ける暗号化鍵に標準のネーミング規則を使用します。あらゆる場合に使用される暗号化鍵は1つも存在しません。そのため、機能ごとの鍵の変更は、他の機能に影響を与えることなくいつでも実行できます。キー・ストアのタイプに関係なく、次の4つの関連する名前が使用されます。
masterkey: 将来使用するために予約されています
tokenskey: Sitesトークン・ジェネレータで使用される暗号化鍵です
generalkey: 暗号化されたPOSTによるデータ交換および外部ファイルに存在する機密情報のすべてに使用される暗号化鍵です
passwordkey: データベース内のユーザー・パスワードを対称暗号化でエンコードする際に使用される暗号化鍵です
注意: JCEKSキー・ストアの場合、暗号化キー・ストレージによって1つ1つの鍵がパスワードで保護されます。このバージョンのSitesではこの機能は使用されておらず、前述の鍵はそれぞれキー・ストア自体と同じパスワードを使用することが求められます。 |
使用可能な暗号化キー・ストレージには、次の2種類があります。
JCEKSは、対称暗号化鍵を格納する標準のキー・ストア機能です。この機能に格納する鍵は、標準のJava暗号化機能で作成および使用される必要があります。この機能は汎用的ですがプロバイダ固有であるため、あるプロバイダで作成したキー・ストアを別のプロバイダで使用しないように注意する必要があります。これはアプリケーションの実行に使用するJavaランタイムに依存します。OracleまたはSun Microsystemsは、標準のJCEプロバイダを使用して暗号化鍵を作成および取得します。IBMが提供する独自のJavaランタイムには、別のキー・ストア・プロバイダがあります。標準のJava JCEプロバイダを受け入れるようにIBMのセキュリティ環境を修正することは可能ですが、その手順はこのガイドでは説明しません。
Oracle資格証明ストア機能(CSF)は、Javaプラットフォーム・セキュリティ(JPS)経由でアクセスする非常にセキュアなキー・ストレージ機能です。この機能はあらゆる環境でJCEKSキー・ストアのかわりに使用でき、Oracleセキュリティに不可欠な要素であるためプロバイダ固有ではありません。この機能には、Oracle OSDT (Oracle Security Developer Tools)によって作成された対称暗号化鍵のみを格納できます。WebLogic環境では、この資格証明ストアはJPSの権限によって保護されます。資格証明ストアにアクセスする、またはそのコンテキストを操作するプログラムは、権限を付与されている必要があります。適切な権限を付与されていないプログラムはアクセスを拒否されます。最高レベルのセキュリティが要求される状況では、このオプションを使用することをお薦めします。
SitesSecurityContext.xml
ファイルは、WebCenter Sitesおよびその関連ユーティリティが動作するセキュリティ環境のあらゆる側面を制御します。これはSpring構成ファイルであり、Sitesサーバー内の暗号化、暗号化キー・ストレージ、CSRFトークン生成および内部セキュリティ処理の実装クラスをインスタンス化します。これは様々なシステム・コンポーネント間のセキュリティに不可欠な要素です。
多様なシステム要件を満たすためにシステム・デフォルトを変更する必要がある場合は、このファイルを修正して必要なオーバーライドを提供します。各コンポーネント(つまりWebCenter Sitesのユーティリティ・プログラム、サーバー・コンポーネントおよびRESTクライアント)は、適切な暗号化パッケージを使用して必要なキー・ストアにアクセスするため、この構成ファイルの修正済コピーを使用する必要があります。すべてのコンポーネントに対して正しい構成および関連付けられたキー・ストアを提供できない場合、システムの一部が動作しなくなります。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <!-- Crypto support package --> <bean id="cryptoPackage" class="com.fatwire.security.common.JavaSecurityCrypto" /> <!-- Credential storage (using JCEKS repository) support package --> <bean id="credentialPackage" class="com.fatwire.security.common.JCEKSCredentialStore" > <property name="keyStoreJar" value="com/fatwire/security/common/data/WCSitesDefault.keystore" /> <property name="IBMStoreJar" value="com/fatwire/security/common/data/WCSitesDefaultIBM.keystore" /> </bean> <!-- CSRF Token generation/validation package (Sites server only) --> <bean id="tokenPackage" class="com.fatwire.auth.SecurityTokenImpl" /> <!-- Security Basis ... This is the root of all evil --> <bean id="securityBasis" class="com.fatwire.security.common.SecurityBasis" > <property name="securityCrypto" ref="cryptoPackage" /> <property name="securityToken" ref="tokenPackage" /> <property name="credentialStorage" ref="credentialPackage" /> </bean> <!-- Security Context (Sites server only)--> <bean id="securityContext" class="COM.FutureTense.Security.Context.AdvancedSecurityContextImpl" > <property name="securityBasis" ref="securityBasis" /> </bean> </beans>
SitesSecurityContext.xml
ファイルは5つのBeanに分解されます。そのうち3つ(cryptoPackage、credentialPackageおよびsecurityBasis)は必須、2つ(tokenPackageおよびsecurityContent)はSitesサーバーによってのみ使用されます。内容を修正した場合は、修正済ファイルを、それを必要とするすべてのコンポーネントのクラス・パスに配置する必要があります。
このファイルに含まれるBeanは次のとおりです。
cryptoPackage
: 初期化する暗号化パッケージを指定します。完全修飾クラス名で表現される2つの選択肢があります。
com.fatwire.security.common.JavaSecurityCrypto
: Javaランタイムを使用
com.fatwire.security.common.OracleSecurityCrypto
: OSDTを使用。Oracle資格証明ストア機能を使用する場合は、この暗号化パッケージを指定する必要があります。
credentialPackage
: 初期化するキー・ストレージを指定します。完全修飾クラス名で表現される3つの選択肢があります。
com.fatwire.security.common.JCEKSCredentialStore
: JCEKSキー・ストアを使用するデフォルト・サポート
com.fatwire.security.common.DefaultCredentialStore
: すべての外部プログラムと(WebLogicを除く)アプリケーション・サーバー向けの標準CSF実装
com.fatwire.security.common.WeblogicCredentialStore
: WebLogic固有のCSF実装
tokenPackage
: このBeanを必要とするのはSitesサーバーのみです。クラス・キーワードは適切なクラス実装を選択します(デフォルトはcom.fatwire.auth.SecurityTokenImpl)。securityTokenインタフェースを実装する、独自のセキュリティ・トークン・ジェネレータを実装するオプションがあります。
securityBasis
: すべてのセキュリティ・コンポーネントをバインドします。修正することはできません。プロパティ・エントリは他のBean定義を参照します。securityTokenプロパティはSitesサーバーでのみ指定されます。
securityContext
: このBeanを必要とするのはSitesサーバーのみです。すべての内部セキュリティ・プロセスを処理するクラスを定義します。このBeanは修正できません。
このファイルは、暗号化およびキー・ストア機能へのアクセスを必要とする各アプリケーションのクラス・パスに存在する必要があります。ファイルのコピーは、同一の暗号化パッケージおよび資格証明ストア・パッケージで構成する必要があります。このファイルの正しく構成されたコピーを必要とするコンポーネントを次に示します。
SitesコンテンツWebアプリケーション・サーバーWEB-INF/classes
Sites CAS Webアプリケーション・サーバーWEB-INF/classes
(CASが構成されたオーセンティケータである場合)
Sites TokenAuthority Webアプリケーション・サーブレット (OAMが構成されたオーセンティケータである場合)
Sites RESTクライアント・アプリケーション・プログラム
Sitesユーティリティ・プログラム(CatalogMover、PropertyEditor、XmlPost、CSE)
暗号化鍵が同じソルトを使用して作成されている前提であれば、キー・ストレージ方法を混在させることは可能です。たとえば、Java暗号化およびJCEKSキー・ストレージを使用してCASを構成し、Oracleの暗号化およびCSFキー・ストレージを使用するSitesコンテンツ・サーバーで使用できます。両方のキー・ストアに、同一のソルトを使用する、指定された対称暗号化鍵が格納されます。この方法は機能しますが、簡単にするため、すべてのアプリケーションで単一のキー・ストレージ方法を使用することをお薦めします。
Sitesシステムには、暗号化キー・ストレージの作成および保守を支援する様々なユーティリティが存在します。これらのユーティリティはsite-security-11.1.1.8.0.jar
に存在し、javaコマンドから特定のクラス名を呼び出すことによって実行されます。実行時は、ユーティリティに必要なすべてのjarのクラス・パスを定義する必要があります。最初の引数に指定されたクラス名のユーティリティ・クラスを実行するサンプル・シェル・スクリプトを次に示します。
#!/bin/sh # Set JAVA_HOME JAVA_HOME="/fmw/jdk/bin" # Set CLASS_PATH CLP="./:sites-security-11.1.1.8.0.jar:commons-logging-1.1.1.jar:spring-2.5.5.jar" CLP="${CLP}:/fmw/middleware/oracle_common/modules/oracle.osdt_11.1.1/osdt_core.jar" CLP="${CLP}:/fmw/middleware/oracle_common/modules/oracle.osdt_11.1.1/osdt_core_fips.jar" CLP="${CLP}:/fmw/middleware/modules/com.oracle.jps-common_1.0.0.0.jar" CLP="${CLP}:/fmw/middleware/modules/com.oracle.jps-api_1.0.0.0.jar" CLP="${CLP}:/fmw/middleware/modules/com.oracle.jps-internal_1.0.0.0.jar" CLP="${CLP}:/fmw/middleware/modules/com.oracle.jps-mbeans_1.0.0.0.jar" CLP="${CLP}:/fmw/middleware/modules/com.oracle.jps-unsupported-api_1.0.0.0.jar" CLP="${CLP}:/fmw/middleware/modules/com.oracle.identitystore_1.0.0.0.jar" CLP="${CLP}:/fmw/middleware/modules/com.oracle.oraclepki_1.0.0.0.jar" CLP="${CLP}:/fmw/middleware/modules/com.oracle.osdt_cert_1.0.0.0.jar" $JAVA_HOME/java -cp ${CLP} -Doracle.security.jps.config=./config/jps-config.xml com.fatwire.security.util.$1 $2 $3
Javaクラスの説明
com.fatwire.security.util.CreateDefaultKeyStore.class
: このSitesユーティリティは、キー・ストアを作成し、ランダムに生成されたJava暗号化鍵のセットを自動的に格納します。必要な引数はキー・ストア・ファイル名の1つのみです。システム・コンソールで入力を求められたら、このキー・ストアのパスワードを指定する必要があります。コンソール・プロンプトで入力するパスワードは、SitesSecurityContext.xml
構成ファイルで指定されている必要があります。
引数(定位置):
Keystore-name Keystore-password
例:
java -cp sites-security-11.1.1.8.0.jar com.fatwire.security.util.CreateDefaultKeyStore
mystore.keystore
com.fatwire.security.util.CreateDefaultCredentialStore
: このユーティリティは、Oracle資格証明ストア機能(CSF)であるcwallet.sso
ファイルを作成し、ランダムに生成されたOracle暗号化鍵のセットを自動的に格納します。cwallet.ssoファイルの特定および更新には、現在のJPS構成が使用されます。資格証明ストアが存在しない場合は作成されます。このユーティリティで既存のSites暗号化鍵を置き換える場合は、replace引数をyes
に設定します。
引数:
product=sites
replace=no | yes
(デフォルトはno
)
com.fatwire.security.util.ExportFromJCEKS.class
: 現在アクティブなキー・ストアからSitesの鍵ごとにソルトを抽出し、その値を作業ディレクトリのexport.keys
ファイルに書き込みます。このエクスポート・ファイルは、次に示すインポート・ユーティリティ・プログラムの入力として使用されます。
引数:(オプション)
export.keys
例:
java -cp sites-security-11.1.1.8.0.jar;commons-logging-1.1.1.jar;spring-2.5.5.jar com.fatwire.security.util.ExportFromJCEKS
com.fatwire.security.util.ImportToJCEKS.class
: 抽出されたソルトをexport.keys
ファイルから取り出し、それを使用してSitesの各暗号化鍵を作成し、出力キー・ストアに追加します。キー・ストア・ファイル名とエクスポート・キー・ファイルの2つの引数が必要です。システム・コンソールで入力を求められたら、このキー・ストアのパスワードを指定する必要があります。コンソール・プロンプトで入力するパスワードは、SitesSecurityContext.xml
構成ファイルで指定されている必要があります。キー・ストアが存在しない場合は自動的に作成されます。
引数(定位置):
Keystore-name export.keys
例:
java -cp sites-security-11.1.1.8.0.jar;commons-logging-1.1.1.jar;spring-2.5.5.jar com.fatwire.security.util.ImportToJCEKS
mystore,keystore
export.keys
com.fatwire.security.util.ImportToCSF.class
: 抽出されたソルトをexport.keys
ファイルから取り出し、それを使用してSitesの各暗号化鍵を作成し、出力資格証明ストアに追加します。資格証明ストアが存在しない場合は自動的に作成されます。出力資格証明ストアは、jps-config.xml
のlocationプロパティで定義されます。
引数:
product=sites
import=export.keys
replace=no | yes
(デフォルトはno
)
例:
java -cp sites-security-11.1.1.8.0.jar;commons-logging-1.1.1.jar;spring-2.5.5.jar com.fatwire.security.util.ImportToCSF
JCEKSキー・ストアは、Java.security暗号化鍵の格納に使用されます。このファイルを作成して、Sitesに必要な暗号化鍵のセットを格納する必要があります。このキー・ストアは、Java JRE binフォルダにあるJava keytoolユーティリティを使用して手動で作成するか、sites-security jar (com.fatwire.security.util.CreateDefaultKeyStore.class
)で提供される作成ユーティリティ・クラスを使用して作成できます。このsitesユーティリティは、キー・ストアを作成し、ランダムに生成されたJava暗号化鍵のセットを自動的に格納します。
キー・ストアには、次の2つの引数が必要です。
arg[0] = キー・ストア・ファイル名
arg[1] = キー・ストアのパスワード
このパスワードは、SitesSecurityContext.xml
構成ファイルで指定されている必要があります。最小構成(CSおよびCAS)では、各サーブレット・コンテキストのクラス・パスに、正しいキー・ストアを指すSitesSecurityContext.xml
ファイルが存在する必要があります。
CreateDefaultKeyStoreユーティリティを使用しない場合は、Javaランタイムで提供されるJava keytoolユーティリティを使用します。ストア・タイプはJCEKS
である必要があります。次に示す名前の4つの鍵を作成する必要があります。各暗号化鍵には、キー・ストア自体と同じパスワードが割り当てられます。
masterkey
: 将来使用するために予約されています
tokenskey
: Sitesトークン・ジェネレータで使用される暗号化鍵です
generalkey
: 暗号化されたPOSTによるデータ交換および外部ファイルに存在する機密情報のすべてに使用される暗号化鍵です
passwordkey
: データベース内のユーザー・パスワードを対称暗号化でエンコードする際に使用される暗号化鍵です
WebSphereの場合、IBM Javaランタイムを使用してキー・ストアを作成する必要があります。通常のJavaランタイムで作成されたキー・ストアをIBMランタイム処理と混在させることはできません。
CreateDefaultKeyStoreユーティリティを使用する場合は、クラスを実行する際に引数として名前とパスワードを指定します。このユーティリティは、前述のすべての鍵を作成します。
キー・ストアの作成方法に応じて、CSの場合はSitesSecurityContext.xml
ファイルを修正し、CASの場合はそのファイルのコピーを提供してデフォルト設定をオーバーライドする必要があります。credentialPackage Beanのプロパティを、ファイル・システム内のキー・ストアの場所を示す完全修飾ファイル・ディスクリプタを値とするプロパティkeyStoreFileで置き換える必要があります。プロパティkeyStorePasswordは、キー・ストア作成時に指定されたキー・ストアのパスワードを提供する必要があります。キー・ストアを変更しても、Sitesデータベース内のパスワードのエンコードには影響しません。これにより、キー・ストアが正しく動作しない場合でも、常にシステムにログインできることが保証されます。ただし、INI
ファイルに格納されているすべての外部パスワードは内部のキー・ストアによって暗号化され、それ以降は暗号化できなくなります。外部ファイル内のすべてのパスワードは、クリア・テキスト値に戻す必要があります。その後、新しいキー・ストアが配置されたら、プロパティ・エディタを使用し、新しい鍵を使用して各パスワードを強制的に暗号化します。PropertyEditorユーティリティでアクセスするファイルとしてSitesSecurityContext.xml
ファイルを忘れずに含めてください。暗号化鍵の作成に使用したソルトをキー・ストア間で転送する必要がある場合があります。その1つの例として、JavaランタイムとIBMランタイム(WebSphere内で使用)が存在する環境内で混在するプロバイダのキー・ストアを作成する場合があります。この転送をサポートするユーティリティ・クラスが、sites-security jarファイルで提供されています。
com.fatwire.security.util.ExportFromJCEKS.class
: 現在アクティブなキー・ストアから鍵ごとにソルトを抽出し、その値を作業ディレクトリのexport.keysファイルに書き込みます。
com.fatwire.security.util.ImportToJCEKS.class
: 抽出されたソルトをexport.keysファイルから取り出し、それを使用してSitesの各暗号化鍵を作成し、出力キー・ストアに追加します。キー・ストアが存在しない場合は自動的に作成されます。
引数:
product=sites
import=export.keys
replace=no | yes
Sitesサーバーは、Enterprise Security APIを使用して、悪質なWebデータのインジェクションによって発生する可能性のあるセキュリティ脆弱性をチェックし、防御します。この検証は、HTTPヘッダーの内容と受信データに対する制御の強化に合わせてカスタマイズできます。ESAPI.properties
ファイルに格納されている検証式を修正できます。このファイルはSitesサーバーのインストールに含まれています。ファイルはSitesのWEB-INF/classes
フォルダに存在します。
ESAPIの詳細は、https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API
を参照してください。