ヘッダーをスキップ
Oracle® Fusion Middlewareアプリケーション・セキュリティ・ガイド
11g リリース1(11.1.1)
B56235-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

10 資格証明ストアの管理

資格証明には、ユーザー名、パスワードおよびチケットを格納できます。資格証明は暗号化できます。資格証明は、認証の際、プリンシパルをサブジェクトに移入するときに使用し、さらに認可時には、サブジェクトが実行できるアクションを決定するときに使用します。

Oracle Platform Security Servicesは資格証明ストア・フレームワーク(CSF)を備えています。これは、アプリケーションで資格証明を安全に作成、読取り、更新および管理する際に使用できる一連のAPIです。資格証明ストアは、データベースやLDAPベースのリポジトリなどの外部システムにアクセスするためのユーザー名およびパスワードの格納に使用します。

この章の内容は次のとおりです。

10.1 資格証明のタイプ

OPSSでは、そこに置かれたデータに応じて次のタイプの資格証明がサポートされています。

CSFでは、資格証明は、マップ名およびキー名によって一意に識別されます。通常、マップ名は、アプリケーションの名前に対応しており、同じマップ名を持つすべての資格証明により、資格証明の論理グループ(そのアプリケーションによって使用される資格証明など)が定義されます。マップ名とキー名のペアは、資格証明ストアにあるすべてのエントリで一意である必要があります。

Oracle Walletはデフォルトのファイルベース資格証明ストアであり、X.509証明書を格納できます。本番環境では通常、Oracle Internet Directory LDAPベースまたはRDBMS DBベースの資格証明ストアを使用します。

10.2 資格証明の暗号化

OPSSでは、ファイルベースおよびLDAPベースの資格証明ストアでの暗号化データの格納がサポートされています(DBベースの資格証明ストアでは、データは常に暗号化されます)。OPSSでは、暗号化鍵を使用して、資格証明ストアでの読み書き時にデータの暗号化と復号化を行います。ファイルベースまたはLDAPベースのストアでの資格証明の暗号化を有効にするには、jps-config.xmlファイルの資格証明ストア・サービス・インスタンスで次のプロパティを設定します。

<property name="encrypt" value="true" />

デフォルトでは、資格証明はクリアテキストで格納されます。

暗号化鍵

前述のプロパティが設定されていると、ドメインの再起動時にOPSSによってランダムな256ビットのAESキーが自動的に生成されます。生成されるキーは毎回異なるため、ドメインは一意の暗号化鍵を使用することになります。最初に生成される暗号化鍵に加え、その他のキー(ロールオーバー・キー)もその後自動的に生成され、データの暗号化と復号化に使用されます。ロールオーバー・キーを取得する唯一の方法は、ドメインを再起動することです。

新しいロールオーバー・キーが生成されても、資格証明ストア内のデータは新しいキーでただちに再暗号化されるわけではありません。データは書き込まれたときにのみ(新しいキーで)再暗号化されます。つまり、すべてのデータが同じ暗号化鍵を使用するようにするには、すべての資格証明を読み取ってから書き込む必要があります。

資格証明ストアを共有するドメイン

2つ以上のドメインが資格証明ストアを共有し、そのストアで暗号化が有効になっている場合、各ドメインは同じ暗号化鍵を使用する必要があります。これは、資格証明ストアのタイプ(LDAPまたはDB)にかかわらず当てはまります。このために、OPSSにはドメイン・ブートストラップ・ウォレット内でキーをエクスポート、インポートおよびリストアするためのオフライン・スクリプトが用意されています。これにより、1つのドメインで生成された暗号化鍵を、資格証明ストアを共有する他のすべてのドメインに引き継ぐことができます。これらのコマンドの詳細は、「OPSSスクリプトによる資格証明の管理」を参照してください。

次のシナリオは、Domain1とDomain2という2つのドメインから構成されるクラスタで資格証明の暗号化を設定する方法を示しています(ドメインが3つ以上がある場合は、各追加ドメインを次の説明にあるDomain2として扱ってください)。


注意:

次のシナリオでは資格証明ストアがLDAPベースであることを前提としていますが、(データが常に暗号化されている)DBベースの資格証明ストアでも、exportEncryptionKeyおよびexportEncryptionKeyを使用してドメイン間でキーをインポートおよびエクスポートできます。


シナリオ1

Domain1はLDAPベースの資格証明ストアに再関連付けされており、Domain2はそのストアにまだ結合していないものとします。そのストア上で資格証明の暗号化を有効にするには、次の手順を実行します。

  1. Domain1のjps-config.xmlファイルでencryptプロパティをtrueに設定し、ドメインを再起動します。

  2. OPSSスクリプトexportEncryptionKeyを使用して、Domain1のブートストラップ・ウォレットからewallet.p12ファイルにキーを抽出します。スクリプトに渡した引数keyFilePasswordの値は、後でそのキーを別のドメインにインポートするときに使用する必要があります。

  3. Domain2のjps-config.xmlファイルでencryptプロパティをtrueに設定します。

その後、この手順は次の2つのいずれかの方法で完了できます。どちらもOPSSスクリプトreassociateSecurityStoreを使用しますが、構文が異なります。このスクリプトの詳細は、第9.3.29項「reassociateSecurityStore」を参照してください。

1つ目の方法は次のとおりです。

  1. OPSSスクリプトreassociateSecurityStoreを使用して、Domain2の資格証明ストアをDomain1で使用されている資格証明ストアに再関連付けします。引数joinを使用し、引数keyFilePasswordkeyFilePath使用しないでください

  2. OPSSスクリプトimportEncryptionKeyを使用して、抽出されたewallet.p12をDomain2のブートストラップ・ウォレットに書き込みます。引数keyFilePasswordの値は、ewallet.p12ファイルの生成時に使用されたものと同じでなければならないことに注意してください。

  3. Domain2のサーバーを再起動します。

2つ目の方法は次のとおりです。

  1. OPSSスクリプトreassociateSecurityStoreを使用して、Domain2の資格証明ストアをDomain1で使用されている資格証明ストアに再関連付けします。引数joinkeyFilePasswordおよびkeyFilePathを使用します。

  2. Domain2のサーバーを再起動します。

シナリオ2

Domain1はLDAPベースの資格証明ストアに再関連付けされており、Domain2はそのストアにすでに結合しているものとします。そのストア上で資格証明の暗号化を有効にするには、次の手順を実行します。

  1. Domain1のjps-config.xmlファイルでencryptプロパティをtrueに設定し、ドメインを再起動します。

  2. OPSSスクリプトexportEncryptionKeyを使用して、Domain1のブートストラップ・ウォレットからewallet.p12ファイルにキーを抽出します。スクリプトに渡した引数keyFilePasswordの値は、後でそのキーを別のドメインにインポートするときに使用する必要があります。

  3. Domain2のjps-config.xmlファイルでencryptプロパティをtrueに設定します。

  4. OPSSスクリプトimportEncryptionKeyを使用して、抽出されたewallet.p12をDomain2のブートストラップ・ウォレットに書き込みます。引数keyFilePasswordの値は、ewallet.p12ファイルの生成時に使用されたものと同じでなければならないことに注意してください。

  5. Domain2のサーバーを再起動します。


重要事項:

暗号化が有効になっている資格証明ストアを複数のドメインで共有している場合、これらのドメインのいずれかでロールオーバー・キーが生成されるたびに、管理者はOPSSスクリプトexportEncryptionKeyおよびimportEncryptionKeyを使用して、クラスタ内の他の各ドメインにそのキーをインポートする必要があります


10.3 資格証明ストアの管理

資格証明をプロビジョニング、取得、変更または削除できるのは、適切な管理ロールのユーザーのみに限られます。次の項では、管理者がFusion Middleware ControlページまたはOPSSスクリプトを使用して資格証明を管理する方法、およびコードからCSF内のデータにアクセスする方法を説明します。

10.4 Fusion Middleware Controlを使用した資格証明の管理

この項では、Fusion Middleware Controlを使用して資格証明を管理する方法について説明します。

  1. Fusion Middleware Controlにログインし、「ドメイン」→「セキュリティ」→「資格証明」(アプリケーションがOracle WebLogic Serverにデプロイされている場合)、または「セル」→「セキュリティ」→「アプリケーション・ポリシー」(WebSphere Application Serverにデプロイされている場合)と移動して、「資格証明」ページを表示します(次の図にページの一部を示します)。

    資格証明ストア・ページ

    資格証明ストア・プロバイダ」領域は読取り専用です。それを開くと、ドメインまたはセルで現在使用している資格証明ストア・プロバイダが表示されます。

  2. 指定したキー名と一致する資格証明を表示するには、「資格証明キー名」ボックスに一致対象の文字列を入力し、青いボタンをクリックします。検索結果がページの下部の表に表示されます。

  3. 項目はいつでも削除できます。削除するには、項目を選択して「削除」ボタンをクリックします。同様に、この表の項目を選択して「編集」ボタンをクリックすると、その項目の内容を変更できます。資格証明マップを削除すると、そのマップにあるすべてのキーが削除されます。

資格証明マップを作成する手順は、次のとおりです。

  1. マップの作成」をクリックして、「マップの作成」ダイアログ・ボックスを表示します。

  2. このダイアログ・ボックスで、作成する資格証明のマップの名前を入力します。

  3. OK」をクリックして「資格証明」ページに戻ります。新しい資格証明マップ名が、マップ・アイコンとともに表に表示されます。

資格証明マップにキーを追加する手順は、次のとおりです。

  1. キーの作成」をクリックして、「キーの作成」ダイアログ・ボックスを表示します。

  2. このダイアログで、「マップの選択」メニューから作成しているキーのマップを選択し、「キー」ボックスにキーを入力して、「タイプ」プルダウン・メニューからタイプ(「パスワード」または「汎用」)を選択します。選択したタイプに応じてダイアログの外観が変わります。

    「パスワード」を選択した場合は、必須フィールド(「キー」、「ユーザー名」、「パスワード」、「パスワードの確認」)に入力します。

    「汎用」を選択した場合は、「キー」必須フィールドに入力し、「テキストとして入力」ラジオ・ボタンを選択して資格証明情報をテキストとして入力するか、「プロパティ名と値のペアのマップを入力」ラジオ・ボタンを選択してキーと値のペアのリストの形式でキーと値のペアを追加します。「行の追加」をクリックして、追加した行にプロパティ名、値、および値の確認を入力します。

    図10-1は、パスワード・キーの作成に使用されるダイアログを示しています。

  3. OK」をクリックして「資格証明」ページに戻ります。新しいキーが、選択したマップに対応するマップ・アイコンの下に表示されます。

    図10-1「キーの作成」ダイアログ

    図10-1については周囲のテキストで説明しています。

キーを編集する手順は次のとおりです。

  1. 表からキーを選択します。

  2. 編集」をクリックして、「キーの編集」ダイアログを表示します。

  3. このダイアログで、必要に応じてキーのデータを変更します。汎用キーを編集する場合は、行の横の赤のXを使用すると、対応するプロパティと値のペアが削除されます。

    図10-2は、汎用キーの編集に使用されるダイアログを示しています。

  4. OK」をクリックして変更内容を保存して、「資格証明」ページに戻ります。

ADFアプリケーションに固有の考慮事項については、Oracle Fusion Middleware Oracle Application Development Framework管理者ガイドのアプリケーションを使用してデプロイする資格証明の編集方法に関する項を参照してください。

図10-2「キーの作成」ダイアログ

図10-2については周囲のテキストで説明しています。

10.5 OPSSスクリプトによる資格証明の管理

OPSSスクリプトは、Oracle WebLogic ServerのコンテキストではWLSTスクリプトであり、WebSphere Application ServerのコンテキストではWASAdminスクリプトです。この項に記載されたスクリプトは、WebLogic Application ServerとWebSphere Application Serverの両プラットフォームに適用されます。

オンライン・スクリプトとは、実行中のサーバーとの接続が必要なスクリプトです。特に指定がないかぎり、この項に記載されたスクリプトはオンライン・スクリプトで、ベースがファイル、LDAP、DBのいずれであるかにかかわりなくポリシー・ストアで動作します。動作にサーバーの実行を必要としないオフラインのスクリプトもいくつか存在します。

読取り専用スクリプトは、モニター、オペレータ、コンフィギュレータまたはAdminというWebLogicグループに属するユーザーのみが実行できます。読取り-書込みスクリプトは、AdminまたはコンフィギュレータのWebLogicグループに属するユーザーのみが実行できます。WLSTスクリプトはすべて、Oracle WebLogic Serverをインストールすれば、追加設定なしで使用できます。

WLSTスクリプトは、インタラクティブ・モードでもスクリプト・モードでも実行できます。インタラクティブ・モードの場合は、コマンドライン・プロンプトにスクリプトを入力すると、応答が即座に表示されます。スクリプト・モードの場合は、スクリプトをテキスト・ファイル(ファイル名拡張子は.py)に記述して、シェル・スクリプトのディレクティブのように入力なしで実行できます。

WASAdminスクリプトは、インタラクティブ・モードでのみ実行できます。詳細は、Oracle Fusion Middlewareサード・パーティ・アプリケーション・サーバー・ガイドを参照してください。

OPSSスクリプトを実行する場合のプラットフォーム固有の要件は、「重要事項」を参照してください。

OPSSにはサポートされているすべてのプラットフォームで資格証明の管理に使用できる次のスクリプトが用意されています(特に指定がないかぎりこのスクリプトはすべてオンラインです)。

10.5.1 listCred

スクリプトlistCredでは、資格証明ストア内の、指定したマップ名とキー名を持つ資格証明の属性値のリストが返されます。このスクリプトでは、パスワード・タイプの資格証明にカプセル化されたデータのみがリストされます。

スクリプト・モード構文

listCred.py -map mapName -key keyName

インタラクティブ・モード構文

listCred(map="mapName", key="keyName")

引数(すべて必須)の意味は、次のとおりです。

  • mapでは、マップ名(フォルダ)を指定します。

  • keyでは、キー名を指定します。

使用例

次の呼出しでは、マップ名myMapおよびキー名myKeyを持つ資格証明内のすべての情報(ユーザー名、パスワード、説明など)が返されます。

listCred.py -map myMap -key myKey

10.5.2 updateCred

スクリプト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")

10.5.3 createCred

スクリプト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") 

10.5.4 deleteCred

スクリプトdeleteCredでは、指定したマップ名およびキー名を持つ資格証明が、資格証明ストアから削除されます。

スクリプト・モード構文

deleteCred.py -map mapName -key keyName

インタラクティブ・モード構文

deleteCred(map="mapName",key="keyName")

引数(すべて必須)の意味は、次のとおりです。

  • mapでは、マップ名(フォルダ)を指定します。

  • keyでは、キー名を指定します。

使用例

次の呼出しでは、マップ名myMapおよびキー名myKeyを持つ資格証明が削除されます。

deleteCred.py -map myMap -key myKey

10.5.5 modifyBootStrapCredential

オフライン・スクリプト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')

監査サービスに関する出力は無視してかまいません。

10.5.6 addBootStrapCredential

オフライン・スクリプトaddBootStrapCredentialでは、jps 構成ファイルのデフォルトのjps contextで構成されているブートストラップ資格証明に指定のマップ、キー、ユーザー名、ユーザー・パスワードを持つパスワード資格証明が追加されます。

このスクリプトは、インタラクティブ・モードでのみ実行できます。

インタラクティブ・モード構文

addBootStrapCredential(jpsConfigFile="pathName", map="mapName", key="keyName", username="usrName", password="usrPass")

引数(すべて必須)の意味は、次のとおりです。

  • jpsConfigFileでは、このスクリプトを実行する場所を基準とした相対パスでファイルjps-config.xmlの場所を指定します。

  • mapでは、追加する資格証明のマップを指定します。

  • keyでは、追加する資格証明のキーを指定します。

  • usernameでは、追加する資格証明のユーザーの名前を指定します。

  • passwordでは、追加する資格証明のユーザーのパスワードを指定します。

使用例

次の呼出しでは、ブートストラップ資格証明ストアに資格証明が追加されます。

addBootStrapCredential(jpsConfigFile='./jps-config.xml', map='myMapName', key='myKeyName', username='myUser', password='myPassword')

10.5.7 exportEncryptionKey

オフライン・スクリプトexportEncryptionKeyは、暗号化鍵をドメインのブートストラップ・ウォレットからewallet.p12ファイルに抽出します。

インタラクティブ・モード構文

exportEncryptionKey(jpsConfigFile="pathName", keyFilePath="dirloc" ,keyFilePassword="password")

引数(すべて必須)の意味は、次のとおりです。

  • jpsConfigFileでは、このスクリプトを実行する場所を基準とした相対パスでファイルjps-config.xmlの場所を指定します。

  • keyFilePathでは、ewallet.p12ファイルが作成されるディレクトリを指定します。このファイルの内容は暗号化され、keyFilePasswordに渡される値により保護されます。

  • keyFilePasswordでは、ewallet.p12ファイルを保護するためのパスワードを指定します。このファイルのインポート時には、この同じパスワードを使用する必要があります。

10.5.8 importEncryptionKey

オフライン・スクリプトimportEncryptionKeyは、暗号化鍵をewallet.p12ファイルからドメインのブートストラップ・ウォレットに書き込みます。

インタラクティブ・モード構文

importEncryptionKey(jpsConfigFile="pathName", keyFilePath="dirloc" ,keyFilePassword="password")

引数(すべて必須)の意味は、次のとおりです。

  • jpsConfigFileでは、このスクリプトを実行する場所を基準とした相対パスでファイルjps-config.xmlの場所を指定します。

  • keyFilePathでは、ewallet.p12が置かれているディレクトリを指定します。

  • keyFilePasswordでは、ewallet.p12ファイルの生成時に使用されるパスワードを指定します。

10.5.9 restoreEncryptionKey

オフライン・スクリプトrestoreEncryptionKeyは、最後に使用したキーをブートストラップ・ウォレットにリストアします。

インタラクティブ・モード構文

restoreEncryptionKey(jpsConfigFile="pathName")

引数(必須)の意味は、次のとおりです。

  • jpsConfigFileでは、このスクリプトを実行する場所を基準とした相対パスでファイルjps-config.xmlの場所を指定します。