12 Oracleウォレットの作成および管理

Oracleウォレットを使用して、WebLogic Serverデータ・ソース定義のデータベース資格証明を格納します。

Oracleウォレットとは

Oracleウォレットにより、複数のドメインにわたりデータベース資格証明を管理する簡単な方法が提供されます。多くのデータ・ソース定義を変更するかわりに、ウォレットを更新することでデータベース資格証明を更新できます。更新は、ウォレット内のエントリにより解決される、データ・ソース定義内のデータベース接続文字列を使用することで実現します。

また、Oracle TNS (Transparent Network Substrate)管理ファイルを使用して、データ・ソース定義のデータベース接続文字列の詳細(ホスト名、ポート番号およびサービス名)を非表示にし、かわりに別名を使用することでも、この機能をより簡単にできます。接続情報を変更する場合は、tnsnames.oraファイルを変更するだけです。

この方法を使用すると、暗号化されたパスワードをデータ・ソース・ディスクリプタから削除して、ドメイン間で移植できるようにし、同じウォレットおよびtnsnames.oraファイルを複数のドメイン間で共有できます。これには、2つの異なるWebLogic Serverドメインが含まれるか、WebLogic Serverとデータベースの間で資格証明を共有します。ウォレットを正しく使用すると、データ・ソース構成でパスワードを保持する必要はなくなります。

ウォレットを保持する場所

ウォレットの場所はデータベース環境で作成および管理することをお薦めします。そこで、$ORACLE_HOME/oracle_common/bin/mkstoreコマンドなど、必要なすべてのコマンドおよびライブラリを提供します。多くの場合、ウォレットの記憶域はデータベース管理者によって管理され、クライアントが使用するために提供されます。構成済のウォレットは、安全なウォレット・ディレクトリに格納された2つのファイル、cwallet.ssoおよびewallet.p12で構成されます。

ノート:

または、Oracle Client Runtimeパッケージをインストールして、ウォレットの作成および管理に必要なコマンドおよびライブラリを用意することもできます。

外部パスワード・ストアの作成方法

Oracleウォレットには自動ログイン機能があり、クライアントはパスワードを入力せずにウォレットのコンテンツにアクセスできます。この機能を使用することで、クリア・テキストのパスワードがクライアントに公開されることを防ぎます。

クライアントで、次の構文を使用してウォレットを作成します。

mkstore -wrl <wallet_location> -create

ここで、wallet_locationは、ウォレットを作成して格納するディレクトリのパスです。

このコマンドにより、指定した場所にウォレットが作成され、自動ログイン機能が使用可能になります。自動ログインにより、クライアントは、パスワードを入力しなくてもウォレットの内容にアクセスでき、クライアントのクリア・テキスト・パスワードが露出されるのを回避できます。

mkstoreコマンドでは、後続コマンドに使用されるパスワードを要求するプロンプトが表示されます。パスワードは、8文字以上で、アルファベットと、数字または特殊文字の組合せを含んでいる必要があります。たとえば:

mkstore -wrl /tmp/wallet –create 
Enter password: mysecret 
PKI-01002: Invalid password. 
Enter password: mysecret1  (not echoed) 
Enter password again: mysecret1 (not echoed)

ノート:

ウォレットを使用すると、データ・ソース構成ファイル内のクリア・テキスト・パスワードのかわりにウォレット・ファイル内の暗号化パスワードが使用され、セキュリティの脆弱性が取り除かれます。ウォレット・ファイルは安全な場所に保管してください。

1つのクライアント・ウォレットに、複数のデータベースの複数の資格証明を格納できます。同じウォレットに、同じデータベースの(複数のスキーマにログインするための)複数の資格証明は格納できません。同じデータベースに対する複数のログイン資格証明がある場合、別のウォレットに格納する必要があります。

既存のクライアント・ウォレットにデータベース・ログイン資格証明を追加するには、次のコマンドを指定します。

mkstore -wrl <wallet_location> -createCredential <db_connect_string> <username> <password>

説明:

  • wallet_locationは、ウォレットを作成したディレクトリのパスです。

  • db_connect_stringは、データ・ソース定義で使用されるURLで指定する接続文字列(@の後の文字列部分)と同一である必要があります。短い形式または長い形式のURLを使用できます。たとえば:

    myhost:1521/myserviceまたは

    (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myhost-scan)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=myservice)))

    ノート:

    シェルから特殊文字をエスケープするために、この値は引用符で囲む必要があります。通常、この名前は長く複雑な値であるため、かわりにTNS別名を使用します。「DB接続文字列のかわりにTNS別名を使用」を参照してください。

  • usernamepasswordは、データベース・ログイン資格証明です。

この手順を、WebLogicデータ・ソースで使用するデータベースごとに繰り返します。

自動ログインの使用およびウォレット・パスワードのメンテナンスの詳細は、『Oracle Database Advanced Security管理者ガイド』を参照してください。

ウォレットを使用するWebLogic Serverデータ・ソースの定義

Oracleウォレットを使用するようにWebLogic Serverのデータ・ソースを構成するには、Walletファイルをクライアント・マシンのセキュア・ディレクトリにコピーして、データ・ソース構成ファイルを更新します。

ウォレットを使用するようにWebLogic Serverデータ・ソースを構成するには、次の手順を使用します。

ウォレット・ファイルのコピー

ウォレット・ファイルのcwallet.ssoewallet.p12をデータベース・マシンからクライアント・マシンにコピーし、安全なディレクトリに配置します。

データ・ソース構成の更新

Oracleウォレットを使用するようにWebLogicデータ・ソースを構成するには、次のステップを使用します。

  1. データ・ソースを作成するとき、または既存のデータ・ソースからこれらを削除するときは、WebLogicリモート・コンソールでユーザー名またはパスワードを入力しないでください。ユーザー名、パスワードまたは暗号化パスワードが構成に含まれる場合、それらによりOracleウォレット値はオーバーライドされます。
  2. oracle.net.wallet_location=wallet_directoryを接続プロパティに追加します。

    wallet_directory「ウォレット・ファイルのコピー」で説明されている安全なディレクトリの場所である場合、このようになります。もうひとつは、-Doracle.net.wallet_locationシステム・プロパティを使用し、JAVA_OPTIONSに追加する方法です。

    ノート: 接続プロパティを使用することをお薦めします。

DB接続文字列のかわりにTNS別名を使用

URLおよびOracleウォレットで一致するデータベース接続文字列を指定するかわりに、URL情報をマップする別名を作成できます。接続文字列情報は、関連する別名とともにtnsnames.oraファイルに格納されます。別名はURLとウォレットの両方で使用されます。
TNS別名を作成するには、次のステップを実行します。
  1. oracle.net.tns_admin=tns_directoryを「接続プロパティ」に指定します。ここで、tns_directoryは、tnsnames.oraファイルのディレクトリの場所です。または、サーバー内のすべてのデータ・ソースの値が同じ場合は、-Doracle.net.tns_admin=<tns_directory>tnsnames.oraファイルの場所とともに使用します。
  2. tns_directoryで指定されているディレクトリ内にtnsnames.oraファイルを作成します。または、このファイルを変更します。エントリの形式を次に示します。

    alias=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=port))(CONNECT_DATA=(SERVICE_NAME=service)))

    ここで、hostはデータベース・リスナーのURL、portはデータベース・リスナーのポート、serviceは接続する先のデータベースのサービス名です。

    構成できる追加属性については、『Database Net Servicesリファレンス』ローカル・ネーミング・パラメータ(tnsnames.ora)に関する項を参照してください。単一行に文字列を入力することをお薦めします。

  3. 接続文字列を別名に置き換えることで、データ・ソース定義URLで別名を使用します。たとえば、リモート・コンソールの「接続プール」ページで「URL」属性をjdbc:oracle:thin:@aliasに変更します。

別名の作成後、別名またはデータ・ソース定義を再変更する必要はありません。ユーザー資格証明を変更するには、ウォレットを更新します。接続情報を変更するには、tnsnames.oraファイルを更新します。どちらの場合も、データ・ソースを再デプロイする必要があります。データ・ソースを再デプロイする最も簡単な方法は、WebLogicリモート・コンソールでデータ・ソースをターゲット指定解除し、ターゲット指定する方法です。この構成は、Oracleリリース10.2以降のドライバでサポートされます。

移植性のためのDBClientDataモジュールの使用

14.1.2.0.0では、OCIでのWLSの統合を強化し、OCI Databaseサービスへの接続を容易にするDBClientDataモジュールを使用できます。

DBClientDataモジュールは、OCIからダウンロードしたtnsnames.oraおよびOracleウォレット・ファイルを、WebLogicドメインが実行されているマシンまたはKubernetesポッドに転送する方法を提供します。

DBClientDataモジュールとは

DBClientDataモジュールは、tnsnames.oraファイル、ウォレット・ファイル、キーストアおよびトラストストア・ファイルです。基本的に、新しいタイプのデプロイメント・モジュールに配置された、データ・ソースで使用されるすべてのデータベース・クライアント接続データです。

DBClientDataモジュールは、これらのデータを使用するデータ・ソース・インスタンスの構成に依存しないスタンドアロン・デプロイメント・モジュールです。単一のDBClientDataモジュールを複数のデータ・ソースで参照でき、単一のDBClientDataモジュールを複数のドメインで使用できます。

DBClientDataモジュールを使用する理由

DBClientDataモジュールを使用すると、tnsnames.oraファイルおよびOracleウォレット・ファイルを含むデータベース・クライアント・データを管理し、ドメイン内のすべてのサーバーのファイル・システムに移動するのが簡単になります。

最大可用性アーキテクチャ(MAA)環境(マルチ・データ・センター・アーキテクチャでディザスタ・リカバリと高可用性を提供する)および移行シナリオでは、ドメインが移動できるように、これらのファイルをドメインに含めることが重要です。データベースが異なる場合でも、構成を変更する必要はありません。

WebLogicデプロイメント・ツールを使用して、DBClientDataモジュールをデプロイ、配布、アンデプロイおよび再デプロイできます。WebLogic Server管理サーバー上のDBClientDataモジュール・ファイルの更新は、ドメイン内のすべてのサーバーに伝播されます。DBClientDataモジュール・ファイルは、ドメイン・ホーム・ディレクトリのconfigディレクトリの下にあります。これにより、ドメインの移動にpackおよびunpack操作を使用するときに、データベース・クライアント・データがドメインとともに移動します。

DBClientDataモジュールの管理

DBClientDataモジュールは、weblogic.Deployer、WLSTオンライン、REST API、WebLogicリモート・コンソール、WebLogic Deploy Tooling (WDT)などの既存のWebLogicデプロイメント・ツールを使用して管理できます。DBClientDataモジュールのソースは、tnsnames.oraおよびウォレット・ファイルを含むZIPファイルまたは展開されたアーカイブ・ディレクトリです。

ノート:

DBClientDataモジュールを管理するために、新しいオプションであるdbClientdataが既存のデプロイ、再デプロイ、配布およびアンデプロイAPIに追加されました。DBClientDataモジュールに指定されている場合、targetsパラメータは、ドメイン内のすべてのサーバーに常にデプロイ、再デプロイ、配布およびアンデプロイされるため、無視されます

WLSTを使用した各管理タスクの詳細情報および例は、次の各項を参照してください。weblogic.Deployerの例は、『Oracle WebLogic Serverへのアプリケーションのデプロイ』JDBCモジュール用のOracleウォレット・ファイルのデプロイに関する項を参照してください。

DBClientDataモジュールのデプロイ

DBClientDataモジュールをデプロイすると、次のアクションが実行されます。
  • DBClientDataファイル(たとえば、tnsnames.oraおよびOracleウォレット・ファイル)を、管理サーバーの$DOMAIN_HOME/config/dbclientdata/<mydbclientdata>の下のディレクトリにアップロードまたはコピーします。
    • ソースは、ZIPファイルまたは展開されたアーカイブ・ディレクトリです。
    • ソースがZIPファイルの場合は、アップロードまたはコピー後に展開されます。
  • $DOMAIN_HOME/config/dbclientdata/<mydbclientdata>を指すsourcePath属性を持つDBClientDataDirectoryMBeanを生成します。
  • オプションで、すべての管理対象サーバーの同じディレクトリにファイルを伝播します。
    • デプロイメント操作の実行時に管理対象サーバーが実行されている場合、伝播はすぐに行われます。
    • デプロイメント操作の実行時に管理対象サーバーがダウンしている場合、伝播はサーバーの起動時に行われます。

構文:

deploy(name,path,[options])

次の例では、WLSTを使用してDBClientDataモジュールを、デフォルトの場所である$DOMAIN_HOME/config/dbclientdataにアップロードおよびデプロイします。その結果、Users/joesmith/myWallet.zipが、$DOMAIN_HOME/config/dbclientdata/myDBDataディレクトリにデプロイされます。

例:

deploy('myDBData', '/Users/joesmith/myWallet.zip', upload='true', dbClientData='true');

-dbClientDataUploadPathオプションを使用して、DBClientDataモジュールを、ドメイン構成ディレクトリを基準にしたカスタムの場所にアップロードしてデプロイします。

次の例では、/Users/joesmith/myWallet.zipを、$DOMAIN_HOME/config/myDBClientData/myDBDataディレクトリと$DOMAIN_HOME/config/myClientData/myDBClientData/myDBDataディレクトリにそれぞれデプロイします。

deploy('myDBData', '/Users/joesmith/myWallet.zip', upload='true', dbClientDataUploadPath='myDBClientData', dbClientData='true');
deploy('myDBData', '/Users/joesmith/myWallet.zip', upload='true', dbClientDataUploadPath='myClientData/myDBClientData', dbClientData='true');
DBClientDataモジュールの配布

DBClientDataモジュール・ファイルが管理サーバーのdbClientDataDirにすでに存在する場合、WLSデプロイメント・ツールの1つを使用して、ドメイン内のすべての管理対象サーバーにそれらのファイルを配布できます。
  • 配布操作の実行時に管理対象サーバーが稼働していない場合、伝播はサーバーの起動時に行われます。
  • 管理対象サーバーでデプロイメントのdbClientDataDirが空でない場合、配布操作の実行時に、既存のコンテンツが新しいコンテンツに完全に置き換えられます。

構文:

distributeApplication(path,[options])

次の例では、WLSTを使用してDBClientDataモジュールを管理対象サーバーに伝播します。このファイルは、管理サーバーの予期されるディレクトリですでに使用可能です。

例:

distributeApplication('/mydomain/config/dbclientdata/demoDBCD/myWallet.zip', dbClientData='true');

次の例では、WLSTを使用してDBClientDataモジュールを管理サーバーにアップロードし、管理対象サーバーへ伝播します。

例:

distributeApplication('/Users/joesmith/myWallet.zip', upload='true', dbClientData='true');

ノート:

DBClientDataモジュールの場合、distributeApplication WLSTコマンドはアプリケーション・パスからアプリケーション名を導出します。前述の2つの例では、導出されたアプリケーション名はそれぞれ"demoDBCD"および"myWallet"です。
DBClientDataモジュールの再デプロイ

DBClientDataモジュールはバージョン管理されないため、再デプロイ操作は、アンデプロイ操作とそれに続くデプロイ操作と同じです。再デプロイ時に、すべてのサーバー上の現在のdbClientDataDirのコンテンツは、新しいDBClientDataモジュール・ソースのコンテンツに置き換えられます。

構文:

redeploy(name,[options])

次の例では、WLSTを使用してDBClientDataモジュールを再デプロイします。

例:

redeploy('demoDBCD', dbClientData='true')

-dbClientDataUploadPathオプションを使用して、DBClientDataモジュールを、ドメイン構成ディレクトリの下のカスタムの場所にアップロードして再デプロイします。

redeploy('demoDBCD', upload='true', dbClientDataUploadPath='myDBClientData', dbClientData='true');

DBClientDataモジュールを使用するためのデータ・ソースの構成

DBClientDataモジュールのデプロイ後、次の各項で説明するのと同じステップを使用して、DBClientDataモジュールを使用するようにWebLogicサーバー・データ・ソースを構成します。

ノート:

対応するtnsnames.oraおよびウォレット・ファイルが配置されているdbClientDataDirを指す必要があります。
  • デフォルトのファイル・システムの場所は$DOMAIN_HOME/config/dbclientdata/<dbclientDatamodulename>です。
  • ただし、DBClientDataモジュールが、WebLogic Deploy Toolingを使用して作成または更新されたドメインに含まれている場合、そのデフォルトの場所は異なります。
    • $DOMAIN_HOME/config/wlsdeploy/dbWallets/<dbclientmodulename>
    • ノート: WDTのデフォルトの場所が変更される可能性があります。詳細は、WebLogic Deploy Toolingのドキュメントにあるアーカイブ・ファイルに関する項を参照してください。
  • DBClientDataモジュールまたはデータ・ソース構成のいずれかのデータが変更されている場合は、更新されたデータを使用するためにデータ・ソースを再起動する必要があることに注意してください。