資格証明ストアは、セキュリティ・データ(資格証明)のリポジトリです。資格証明には、ユーザー名とパスワードの組合せ、チケットまたは公開鍵証明書を格納できます。資格証明は、認証の際、プリンシパルをサブジェクトに移入するときに使用し、さらに認可時には、サブジェクトが実行できるアクションを決定するときに使用します。
Oracle Platform Security Servicesは資格証明ストア・フレームワーク(CSF)を備えています。これは、アプリケーションで資格証明を安全に作成、読取り、更新および管理する際に使用できる一連のAPIです。資格証明ストアは、データベースやLDAPベースのリポジトリなどの外部システムにアクセスするための資格証明(ユーザー名およびパスワード)の格納に使用します。
この章の内容は次のとおりです。
OPSSでは、そこに置かれたデータに応じて次のタイプの資格証明がサポートされています。
CSFでは、資格証明は、マップ名およびキー名によって一意に識別されます。通常、マップ名は、アプリケーションの名前に対応しており、同じマップ名を持つすべての資格証明により、資格証明の論理グループ(そのアプリケーションによって使用される資格証明など)が定義されます。マップ名とキー名の組合せは、資格証明ストアにあるすべてのエントリで一意である必要があります。
デフォルトの資格証明ストアはOracleウォレットです。本番環境では、資格証明ストアとしてLDAPベースのOracle Internet Directoryを使用することをお薦めします。また、X.509証明書の格納にはOracleウォレットを使用することをお薦めします。資格証明ストアでは、エンドユーザーのデジタル証明は格納できません。
LDAPベースの資格証明ストアは本番環境に適しており、通常、本番環境で使用されます。今回のリリースでサポートされているLDAPサーバーは、Oracle Internet DirectoryとOracle Virtual Directory(LSA)です。
ドメインでLDAPベースの資格証明ストアを使用する場合、ドメイン管理者は必要に応じてOracle Enterprise Manager Fusion Middleware ControlまたはWLSTコマンドを使用し、その資格証明ストアを構成する必要があります。
LDAPベースの資格証明ストアを使用するための前提条件は、LDAPベースのポリシー・ストアを使用するための前提条件と同じです。詳細は、第8.1.2項「LDAPベースのポリシー・ストアを使用する場合の前提条件」を参照してください。
分散環境では、LDAPベースの資格証明ストアをお薦めします。詳細は、第8.1.1項「複数ノード・サーバー環境」を参照してください。
第8.2項「ドメイン・ポリシー・ストアの再関連付け」の説明のようにFusion Middleware ControlまたはWLSTコマンドreassociateSecurityStore
を使用すると、資格証明ストアとポリシー・ストアの両方をまとめて再関連付けできます。
1つのドメインに設定できる資格証明ストアは1つです。アプリケーション固有の資格証明がサポートされており、それらはアプリケーションがデプロイされるときにドメイン資格証明ストアの資格証明に移行されます。したがって、ドメイン内にデプロイされたすべてのサーバーおよびすべてのアプリケーションで、共通の資格証明ストアであるドメイン資格証明ストアが使用されます。資格証明ストアへのアクセスにはパーミッションが必要です。
次の項では、Fusion Middleware ControlまたはWLSTコマンドを使用してアプリケーションをデプロイするときに、ドメイン資格証明ストアに資格証明を移行する方法について説明します。
アプリケーションの資格証明は、アプリケーション・ファイルcwallet.sso
で指定し、WebLogic環境の管理対象サーバーにアプリケーションがデプロイまたは再デプロイされるときにドメイン資格証明ストアに移行できます。
資格証明の移行は、ポリシーの移行とはいくつかの点で異なります。(a)資格証明は、アプリケーションをアンデプロイするときに自動的に削除できません。(b)デプロイまたは再デプロイするときの上書きによる資格証明の移行は、WebLogicドメインが開発モードで稼働している場合にのみ実行できます。
詳細は、第7.5.2項「デプロイ時のポリシーおよび資格証明の移行」の手順を参照してください。
WLSTコマンドmigrateSecurityStore
を使用すると、特定の資格証明マップまたはすべてのマップにあるすべての資格証明を、ソース・リポジトリからターゲット・リポジトリに手動で移行できます。
このコマンドはオフラインなので、実行中のサーバーに接続しなくても機能します。したがって、引数configFile
で渡す構成ファイルは実際のドメイン構成ファイルである必要はなく、移行のソース・リポジトリとターゲット・リポジトリを指定するようにアセンブルするだけで済みます。
ソース・データおよびターゲット・データを格納するリポジトリの種類はこのコマンドに対して透過的であり、ファイルベースおよびLDAPベースのリポジトリを任意の組合せで指定できます(LDAPリポジトリでは、Oracle Virtual DirectoryまたはOracle Internet Directory LDAPサーバーのみを使用する必要があります)。
このコマンドは通常、テスト環境から本番環境に移行する場合、またはドメイン間でポリシーまたは資格証明データの再製を実行する場合に使用します。
第8.1.2項「LDAPベースのポリシー・ストアを使用する場合の前提条件」の説明のように、このコマンドを使用する前にターゲットのLDAPサーバーで設定が必要です。
注意: コマンドmigrateSecurityStore ではGUIDが再作成されるので、大量のデータを移行する場合は長時間を要します。そのため、Oracle Internet Directoryの一括操作を使用する別の手順によるストアの移行を検討することをお薦めします。詳細は、第7.5.2.3項「大量のポリシー・ストアおよび資格証明ストアの移行」を参照してください。 |
後述のコマンドは、インタラクティブ・モードでもスクリプト・モードでも実行できます。インタラクティブ・モードの場合は、コマンドライン・プロンプトにコマンドを入力すると、応答が即座に表示されます。スクリプト・モードの場合、コマンドはテキスト・ファイル(ファイル名拡張子は.py)に記述されるので、シェル・スクリプトのディレクティブのように入力なしで実行できます。
WLSTコマンドとその構文の詳細は、『Oracle Fusion Middleware WebLogic Scripting Tool Command Reference』を参照してください。
重要: シェル内でセキュリティ関連のWLSTコマンドを起動する前に、次のサンプルで説明するように、wlst.sh スクリプトを実行する必要があります。
> sh $ORACLE_HOME/common/bin/wlst.sh これにより、必要なJARがクラスパスに確実に追加されるようになります。新しいシェル内で前述のコマンドを実行しないと、WLSTコマンドが使用できない状態になります。 オンライン・コマンドを実行する前に、次のようにサーバーに接続します。 >java weblogic.WLST >connect(' |
スクリプト・モードおよびインタラクティブ・モードの構文
コマンド構文は、移行する資格証明の範囲(特定のマップにある資格証明であるか、すべての資格証明であるか)によって異なります。オプションの引数は、大カッコで囲みます。
すべての資格証明を移行するには、スクリプト(最初)またはインタラクティブな(2番目)構文を使用します(明確にするために引数は別の行に記述)。
migrateSecurityStore.py -type credStore -configFile jpsConfigFileLocation -src srcJpsContext -dst dstJpsContext [-overWrite trueOrFalse]
migrateSecurityStore(type="credStore", configFile="jpsConfigFileLocation", src="srcJpsContext", dst="dstJpsContext", [overWrite="trueOrFalse"])
引数(overWrite
以外はすべて必須)の意味は次のとおりです。
configFile
では、構成ファイルjps-config.xml
の位置を、このコマンドを実行するディレクトリを基準とした相対パスで指定します。通常、この構成ファイルはコマンドで使用するためにのみ作成し、他の目的には使用しません。このファイルには、ソース・ストアとターゲット・ストアを指定する2つのjps-contextがあります。
また、1つまたは2つのLDAPベース・ストアを対象とする移行では、cwallet.sso
ファイルの場所を指すブートストラップjps-contextをこのファイルに追加する必要があります。cwallet.sso
ファイルには、移行の対象となるLDAPベース・ストアにアクセスするための資格証明を格納します。後述の2番目のサンプルを参照してください。詳細は、第15.4.7項「ブートストラップ資格証明の手動による指定」を参照してください。
src
では、引数configFile
で渡す構成ファイル内のjps-contextの名前を指定します。このコンテキストでソース資格証明リポジトリを特定します。
dst
では、引数configFile
で渡す構成ファイル内の別のjps-contextの名前を指定します。このコンテキストでターゲット資格証明リポジトリを特定します。
overWrite
では、ソース資格証明と一致するターゲット資格証明をソース資格証明で上書きするか、ソース資格証明とマージするかを指定します。ターゲット資格証明を上書きする場合はTrueに設定し、一致する資格証明をマージする場合はFalseに設定します。この引数はオプションです。指定しなかった場合は、デフォルトでFalseに設定されます。Falseに設定した場合、一致する資格証明が検出されると、ソース資格証明は無視され、警告がログに記録されます。
src
およびdst
で渡すコンテキストは、渡される構成ファイル内で定義し、一意である必要があります。これら2つのコンテキストから、このコマンドは移行に関与するソース・リポジトリおよびターゲット・リポジトリの位置を特定します。
1つの資格証明マップのみを移行するには、次のスクリプト構文(1番目の記述)またはインタラクティブな構文(2番目の記述)を使用します(ここでは、見やすくするために各引数をそれぞれ別の行に記述しています)。
migrateSecurityStore.py -type folderCred -configFile jpsConfigFileLocation -src srcJpsContext -dst dstJpsContext [-srcFolder map1] [-dstFolder map2] [-srcConfigFile alternConfigFileLocation] [-overWrite trueOrFalse]
migrateSecurityStore(type="folderCred", configFile="jpsConfigFileLocation", src="srcJpsContext", dst="dstJpsContext", [srcFolder="map1"], [dstFolder="map2"], [srcConfigFile="alternConfigFileLocation"], [overWrite="trueOrFalse"])
引数configFile
、src
、dst
およびoverWrite
の意味は、前述の場合と同じです。最後の3つの引数(すべてオプション)の意味は次のとおりです。
srcFolder
では、移行する資格証明を収めたマップの名前を指定します。この引数は、オプションです。指定しない場合、資格証明ストアにはマップが1つのみであると想定され、この引数の値はデフォルトでそのマップの名前になります。
dstFolder
では、ソース資格証明の移行先のマップを指定します。この引数はオプションであり、指定しない場合は、デフォルトでsrcFolder
に渡されるマップになります。
srcConfigFile
では、代替構成ファイルの場所を指定します。これは、configFile
に渡されるファイルで資格証明が構成されていないという特別な場合に使用されます。この引数は、オプションです。指定しない場合、デフォルトでconfigFile
に渡される値になります。指定した場合、configFile
に渡される値は無視されます。
前述の構文に一致しない入力を指定すると、コマンドの実行に失敗し、エラーが返されます。特に、入力は次の要件を満たす必要があります。(a)渡された位置内でファイルjps-config.xml
が検出されること、(b)渡されたjps-contextsがファイルjps-config.xml
に含まれていること、(c)ソースおよびターゲットのコンテキスト名が一意であること。
使用例は、第7.5.2.2項「資格証明の手動による移行」を参照してください。
資格証明をプロビジョニング、取得、変更または削除できるのは、適切な管理ロールのユーザーのみです。次の項では、管理者がFMCページまたはWLSTコマンドを使用して資格証明を管理する方法と、コードからCSF内のデータにアクセスする方法を示します。
Fusion Middleware Controlを使用して、「資格証明の管理」の説明のように、ドメイン内で使用される資格証明ストア・プロバイダのタイプに関係なく、WebLogicドメイン内の資格証明を管理できます。
このタスクは、アプリケーションにパッケージ化した資格証明を、ターゲット環境で有効な別の資格証明に置き換える場合などに実行します。
この項では、Fusion Middleware Controlを使用してドメイン資格証明ストアにある資格証明を管理する手順について説明します。この管理には、資格証明ストアに格納した資格証明の作成、表示、削除、更新などがあります。
Oracle Enterprise Managerにログインし、「ドメイン」→「セキュリティ」→「資格証明」に移動し、「資格証明」ページを表示します。このページの一部を次の図に示します。
「資格証明ストア・プロバイダ」領域は読取り専用です。この領域を開くと、ドメインで現在使用している資格証明ストア・プロバイダが表示されます。
この読取り専用領域にある表を使用して、資格証明の作成、編集および検索が可能です。
どの時点でも、「削除」ボタンを使用すると、表で選択した項目(キーまたはマップ)が削除されます。資格証明マップを削除すると、そのマップにあるすべてのキーが削除されます。同様に、選択した項目のデータを表示または変更するには、「編集」ボタンを使用します。
指定したキー名と一致する資格証明を表示するには、「資格証明キー名」ボックスに一致対象の文字列を入力し、ボックスの右側にある青いボタンをクリックします。問合せの結果が、表に表示されます。
問合せの結果を調べた後、資格証明のリストを再表示するには、「ドメイン名」→「セキュリティ」→「資格証明」を選択します。
資格証明マップを作成する手順は、次のとおりです。
「マップの作成」をクリックして、「マップの作成」ダイアログ・ボックスを表示します。
このダイアログ・ボックスで、作成する資格証明のマップの名前を入力します。
「OK」をクリックして、「資格証明」ページに戻ります。新しい資格証明マップ名が、マップ・アイコンとともに表に表示されます。
資格証明マップにキーを追加する手順は、次のとおりです。
「キーの作成」をクリックして、「キーの作成」ダイアログ・ボックスを表示します。
このダイアログ・ボックスで、「マップの選択」メニューからキーの挿入先マップを選択し、「キー」テキスト・ボックスにキーを入力します。「タイプ」メニューからタイプを選択し(選択したタイプに応じてダイアログ・ボックスの外観が変わります)、必要なデータを入力します。
完了したら、「OK」をクリックして「資格証明」ページに戻ります。新しいキーが、選択したマップに対応するマップ・アイコンの下に表示されます。
資格証明の管理にFusion Middleware Controlを使用しない場合や多用するタスクを自動的に実行する場合、ドメイン管理者は、セキュリティ関連のWLSTコマンドを呼び出すWLSTスクリプトを作成できます。
オンライン・コマンドとは、それが機能するためにはOracle WebLogic Serverが実行されていることが必要なコマンドです。後述のコマンドはすべて、ファイルベースであるかLDAPベースであるかに関係なく、コマンドが使用可能になる直前に接続していたドメイン資格証明ストアに対して機能します。
読取り専用コマンドは、モニター、オペレータ、コンフィギュレータまたはAdminというロールに属すユーザーのみが実行できます。読取り-書込みコマンドは、Adminまたはコンフィギュレータというロールに属すユーザーのみが実行できます。すべてのWLSTコマンドは、Oracle WebLogic Serverをインストールすれば、追加設定なしで使用できます。
特に明記のないかぎり、後述のコマンドはインタラクティブ・モードでもスクリプト・モードでも実行できます。インタラクティブ・モードの場合は、コマンドライン・プロンプトにコマンドを入力すると、応答が即座に表示されます。スクリプト・モードの場合、コマンドはテキスト・ファイル(ファイル名拡張子は.py)に記述されるので、シェル・スクリプトのディレクティブのように入力なしで実行できます。
重要: シェル内でセキュリティ関連のWLSTコマンドを起動する前に、次のサンプルで説明するように、wlst.sh スクリプトを実行する必要があります。
> sh $ORACLE_HOME/common/bin/wlst.sh これにより、必要なJARがクラスパスに確実に追加されるようになります。新しいシェル内で前述のコマンドを実行しないと、WLSTコマンドが使用できない状態になります。 オンライン・コマンドを実行する前に、次のようにサーバーに接続します。 >java weblogic.WLST >connect(' |
WLSTでは、資格証明を管理するために次のコマンドがサポートされています。これらのコマンドは、modifyBootStrapCredential
を除いてすべてオンライン・コマンドです。
コマンドlistCred
によって、ドメイン資格証明ストア内の、指定したマップ名とキー名を持つ資格証明の属性値のリストが返されます。このコマンドでは、パスワード・タイプの資格証明にカプセル化されたデータのみがリストされます。
スクリプト・モード構文
listCred.py -map mapName -key keyName
インタラクティブ・モード構文
listCred(map="mapName", key="keyName")
引数(すべて必須)の意味は、次のとおりです。
map
では、マップ名(フォルダ)を指定します。
key
では、キー名を指定します。
使用例
次の呼出しでは、マップ名myMap
およびキー名myKey
を持つ資格証明内のすべての情報(ユーザー名、パスワード、説明など)が返されます。
listCred.py -map myMap -key myKey
コマンドupdateCred
によって、ドメイン資格証明ストア内の、指定したマップ名およびキー名を持つ資格証明のタイプ、ユーザー名およびパスワードが変更されます。このコマンドでは、パスワード・タイプの資格証明にカプセル化されたデータのみが更新されます。インタラクティブ・モードのみがサポートされています。
インタラクティブ・モード構文
updateCred(map="mapName", key="keyName", user="userName", password="passW", [desc="description"])
引数(オプションの引数は、大カッコで囲んであります)の意味は、次のとおりです。
map
では、資格証明ストアのマップ名(フォルダ)を指定します。
key
では、キー名を指定します。
user
では、資格証明のユーザー名を指定します。
password
では、資格証明のパスワードを指定します。
desc
では、資格証明を説明する文字列を指定します。
使用例
次の呼出しでは、マップ名myMap
およびキー名myKey
を持つパスワード資格証明のユーザー名、パスワードおよび説明が更新されます。
updateCred(map="myMap", key="myKey", user="myUsr", password="myPassw")
コマンドcreateCred
によって、ドメイン資格証明ストア内に、指定したマップ名、キー名、ユーザー名およびパスワードを持つ資格証明が作成されます。このコマンドで作成できるのは、パスワード・タイプの資格証明のみです。インタラクティブ・モードのみがサポートされています。
createCred(map="mapName", key="keyName", user="userName", password="passW", [desc="description"])
引数(オプションの引数は、大カッコで囲んであります)の意味は、次のとおりです。
map
では、資格証明のマップ名(フォルダ)を指定します。
key
では、資格証明のキー名を指定します。
user
では、資格証明のユーザー名を指定します。
password
では、資格証明のパスワードを指定します。
desc
では、資格証明を説明する文字列を指定します。
使用例
次の呼出しでは、指定したデータでパスワード資格証明が作成されます。
createCred(map="myMap", key="myKey", user="myUsr", password="myPassw")
コマンドdeleteCred
によって、指定したマップ名およびキー名を持つ資格証明が、ドメイン資格証明ストアから削除されます。
スクリプト・モード構文
deleteCred.py -map mapName -key keyName
インタラクティブ・モード構文
deleteCred(map="mapName",key="keyName")
引数(すべて必須)の意味は、次のとおりです。
map
では、マップ名(フォルダ)を指定します。
key
では、キー名を指定します。
使用例
次の呼出しでは、マップ名myMap
およびキー名myKey
を持つ資格証明が削除されます。
deleteCred.py -map myMap -key myKey
オフライン・コマンドmodifyBootStrapCredential
によって、デフォルトのjps-contextで構成されているブートストラップ資格証明が変更されます。このコマンドは通常、次のシナリオで使用されます。ドメイン・ポリシー・ストアおよびドメイン資格証明ストアがLDAPベースであり、LDAPストア(LDAPサーバーに格納)にアクセスするための資格証明が変更されたとします。その場合、このコマンドを使用して、ブートストラップ資格証明ストアにそれらの変更をシードできます。
このコマンドは、ドメイン管理者が実行する必要があります。また、インタラクティブ・モードでのみ使用可能です。
インタラクティブ・モード構文
modifyBootStrapCredential(jpsConfigFile="pathName", username="usrName", password="usrPass")
引数(すべて必須)の意味は、次のとおりです。
jpsConfigFile
では、このコマンドを実行する場所を基準とした相対パスでファイルjps-config.xml
の場所を指定します。
username
では、LDAPストアでのユーザーの識別名を指定します。
password
では、ユーザーのパスワードを指定します。
使用例
LDAPストアで、cn=orcladmin
という識別名のユーザーのパスワードがwelcome1
に変更されたとします。また、構成ファイルjps-config.xml
は現在のディレクトリにあるとします。この場合、次の呼出しでは、ブートストラップ資格証明ストアにあるパスワードがwelcome1
に変更されます。
modifyBootStrapCredential(jpsConfigFile='./jps-config.xml', username='cn=orcladmin', password='welcome1')
監査サービスに関する出力は無視してかまいません。