8 マスター・キーとウォレット方式を使用したデータ暗号化

このデータ暗号化方式を使用するには、マスター・キー・ウォレットを作成してマスター・キーをウォレットに追加します。この方式では、データが証跡内またはTCP/IP間のどちらで暗号化されるかに応じて、次の処理を行います。

  • Oracle GoldenGateで証跡ファイルが作成されるたびに、新しい暗号化キーが自動的に生成されます。この暗号化キーで証跡の内容を暗号化します。マスター・キーは、暗号化キーを暗号化します。この暗号化キーを暗号化するプロセスはキー・ラップと呼ばれています(詳細は、米国標準委員会のANS X9.102標準を参照してください)。

  • Classic Architectureの場合は、ネットワーク間でデータを暗号化するために、Oracle GoldenGateがマスター・キーに基づいた暗号関数を使用してセッション・キーを生成します。ただし、配布サーバーのoggプロトコルでは、この方式はサポートされていません。

Oracle GoldenGateでは、自動ログイン・ウォレット(ファイル拡張子.sso)が使用されます。これは、ユーザーの操作なしで必要なパスワードを提供できる不明瞭化されたコンテナです。

マスター・キーとウォレットを使用したデータ暗号化は、NonStopプラットフォームではサポートされていません。

トピック:

8.1 ウォレットの作成とマスター・キーの追加

ウォレットはプラットフォームに依存しない形式で作成されます。ウォレットは、Oracle GoldenGate環境内のすべてのシステムからアクセス可能な共有ファイル・システム上に格納できます。あるいは、Oracle GoldenGate環境内の各システムで同じウォレットを使用することも可能です。各システム上のウォレットを使用する場合は、1つのシステム(通常はソース・システム)でウォレットを作成し、それをOracle GoldenGate環境内の他のすべてのシステムにコピーする必要があります。マスター・キーを追加、変更または削除するたびに、これを実行する必要があります。

次の手順では、ソース・システムでウォレットを作成し、それをOracle GoldenGate環境内の他のシステムにコピーする方法を説明します。

  1. (オプション)Oracle GoldenGateインストール・ディレクトリのdirwltサブディレクトリ以外の場所にウォレットを格納するには、GLOBALSファイルでWALLETLOCATIONパラメータを使用して目的の場所を指定します。
    WALLETLOCATION directory_path
    
  2. GGSCIでCREATE WALLETコマンドを使用して、マスター・キー・ウォレットを作成します。
  3. 作成したウォレットをOPEN WALLETコマンドで開きます。
  4. ADD MASTERKEYコマンドを使用して、マスター・キーをウォレットに追加します。
  5. INFO MASTERKEYコマンドを発行して、追加したキーが現在のバージョンであることを確認します。新規インストールの場合、バージョンは1です。
  6. VERSIONオプションを指定してINFO MASTERKEYコマンドを発行します(versionには現在のバージョン番号を指定します)。バージョン番号とそのバージョンのAESハッシュ値を記録します。
    INFO MASTERKEY VERSION version
    
  7. 他のすべてのOracle GoldenGateシステムにウォレットをコピーします。
  8. ウォレットをコピーした各システム上で、VERSIONオプションを指定してINFO MASTERKEYコマンドを発行します(versionには記録しておいたバージョン番号を指定します)。各ウォレットで、StatusCurrentになっていることを確認します。すべてのウォレットが同じキー・バージョンを示している必要があります。
    INFO MASTERKEY VERSION version

8.2 パラメータ・ファイルでの暗号化パラメータの指定

次の手順では、証跡内およびネットワーク間のデータをマスター・キーとウォレット方式で暗号化するために必要なパラメータを追加します。

  1. 次に示すパラメータ・ファイルに、次の項目を追加します。
    • 証跡データを暗号化する手順: プライマリExtractグループとデータ・ポンプのパラメータ・ファイルで、暗号化対象の証跡またはファイルを指定するパラメータの前に、ENCRYPTTRAILパラメータ文を追加します。証跡またはファイルを指定するパラメータは、EXTTRAILRMTTRAILEXTFILEおよびRMTFILEです。構文は次のとおりです。

      ENCRYPTTRAIL {AES128 | AES192 | AES256 | BLOWFISH} 
      
    • TCP/IP全体のデータを暗号化する手順: RMTHOSTOPIONS ENCRYPTオプションを使用してパラメータ・ファイルを変更することも、SOCKS5プロキシを使用してネットワークでのデータ配信をSOCKS5プロキシ経由にすることもできます。「暗号化されたデータを配信するためのSOCKS5プロキシの使用」を参照してください。

      データ・ポンプ(ポンプが使用されていない場合はプライマリExtract)のパラメータ・ファイルで、RMTHOSTOPTIONSパラメータのENCRYPTオプションを使用します。構文は次のとおりです。

      RMTHOSTOPTIONS host, MGRPORT port, ENCRYPT {AES128 | AES192 | AES256 | BLOWFISH}
      
      RMTHOSTOPTIONS ENCRYPT {AES128 | AES192 | AES256 | BLOWFISH}
      

    説明:

    • RMTHOSTOPTIONSは、パッシブExtractを含むExtractに使用されます。パッシブExtractの詳細は、「ターゲット・システムからの接続開始の使用」を参照してください。

    • オプションなしのENCRYPTTRAILは、256キー・バイト置換を指定します。このフォーマットは安全ではないため、本番環境では使用しないでください。以前のOracle GoldenGateバージョンとの下位互換性を維持するためにのみ使用します。

    • AES128の場合、AES-128暗号化アルゴリズムで暗号化されます。

    • AES192の場合、AES-192暗号化アルゴリズムで暗号化されます。

    • AES256の場合、AES-256暗号化アルゴリズムで暗号化されます。

    • BLOWFISHの場合、Blowfish暗号化が使用されます(ブロック・サイズは64ビット、キー・サイズは32から128ビットの可変長です)。プラットフォームでサポートされている場合には、AESを使用します。BLOWFISHは、以前のOracle GoldenGateバージョンとの下位互換性を維持するために使用する他、DB2 z/OSおよびDB2 for iで使用します。これらのプラットフォームでは、AESはサポートされていません。

  2. 証跡データを復号化してから出力証跡に書き込む場合は、データ・ポンプでDECRYPTTRAILパラメータを使用します。そうしないと、データ・ポンプで処理が必要なデータは自動的に復号化され、後で再暗号化されてから出力証跡に書き込まれます。(Replicatでは、パラメータ入力なしでデータが自動的に復号化されます。)MAの暗号化プロファイルを構成する方法も参照してください。
    DECRYPTTRAIL

ノート:

受信した証跡データを復号化してから再暗号化して任意の出力証跡またはファイルに書き込むよう、明示的に指定できます。まず、データを復号化するDECRYPTTRAILを入力し、次にENCRYPTTRAILと出力証跡の指定を入力します。DECRYPTTRAILENCRYPTTRAILの前に入力されている必要があります。復号化と再暗号化を明示的に指示することにより、必要に応じてAESアルゴリズムを証跡ごとに変更できます。たとえば、ローカル証跡の暗号化にはAES 128を、リモート証跡の暗号化にはAES 256をそれぞれ使用できます。あるいは、1番目のプロセスと2番目のプロセス間の暗号化にはマスター・キーとウォレット方式を使用し、2番目のプロセスと3番目のプロセス間の暗号化にはENCKEYS方式を使用することも可能です。

8.2.1 暗号化されたデータを配信するためのSOCKS5プロキシの使用

SOCKS5プロトコルでは、プロキシ・サーバーを使用してサーバーとクライアントの間のパケットをルーティングします。このプロトコルでは、クライアントのかわりに別のサーバーへのTCP接続を確立して、クライアントとサーバーの間のトラフィックをルーティングします。このとき、パブリック・ネットワークからクライアントのIDが隠されます。

Oracle GoldenGateでは、RMHOSTOPTIONSパラメータを指定することで、データをネットワークで配信するためにSOCKS5プロキシを使用できます。詳細は、「RMTHOSTOPTIONS」を参照してください。

ネットワークでデータを安全に伝送するためにSSHトンネリングとともにSOCKS5プロキシを作成するには、次のステップを実行します。

  1. Linuxの場合、SOCKS5プロキシは、次のSSHコマンドを使用することで、SSHトンネリングとともに設定できます。

    ssh –i private_key file -v –N –f –D listening IP Address:listening IP port GGCS
          Oracle User@GGCS IP Address socksproxy output file 
    -N: No execution command on remote system
    -D: Dynamic Port Forwarding
    -i: Private Key File
    -f: Run the proxy process in the background
    -v: Verbose Mode
    -C: Compression
次の例は、IPアドレスが129.145.2.34のGoldenGate Cloud Service (GGCS)インスタンスにSSHトンネルで接続するSOCKS5プロキシを示しています。
ssh -N -f -i opc_rsa.ppk -D 127.0.0.1:1080 opc@129.145.2.34 /tmp/ogg_socksproxy.log
SOCKS5プロキシの設定後、次の例に示すように、プロキシ・サーバーからSOCKSPROXYパラメータを使用してGGCSにデータを配信するように、Oracle GoldenGateオンプレミスのポンプを設定できます。
RMTHOST 129.145.2.34, COMPRESS, MGRPORT 1021, SOCKSPROXY 127.0.0.1:1080

8.3 マスター・キーの更新

次の手順では、暗号化キー・ウォレット内のマスター暗号化キーを更新します。マスター・キーを更新すると、キーの新しいバージョンが作成されます。名前は同じままですが、ビット順序が変更されます。セキュリティ・ポリシーの一環として、現在のマスター・キーを定期的に更新し、失効を回避してください。

マスター・キーの更新済バージョンはすべてウォレット内に残ります(ただし、DELETE MASTERKEYコマンドで削除対象とマークされてからPURGE WALLETコマンドでウォレットが消去されるまで)。失効したマスター・キーの削除を参照してください。

ウォレットが共有記憶域で(共有ウォレットとして)一元管理されていない場合、更新されたウォレットは、Oracle GoldenGate構成内でウォレットを使用する他のすべてのシステムにコピーする必要があります。これを行うには、Oracle GoldenGateプロセスを停止する必要があります。次の手順は、これらの作業を正しい順序で実行するステップを含みます。

  1. Extractを停止します。トランザクション・ログから取得するExtractである、TRANLOG Extractグループを停止する必要があります。

    ノート:

    TRANLOG ExtractグループがExtractポンプとしても機能している場合は、該当するものを停止し、データベースに関するすべてのアクティビティも停止する必要があります。
    STOP EXTRACT group
  2. 次の操作を実行して、Extractデータ・ポンプの読取りRBAをExtract証跡のサイズと照合します。
    INFO EXTRACT SHELL ls -l ./dirdat/[trail identifier]*

    読取りRBAが証跡のサイズと一致したら、処理するデータはそれ以上ありません。ExtractポンプまたはExtractによってすべての証跡ファイルがターゲットに送信される場合は、ReplicatがEOFになったときにわかるように、Replicatのチェックを開始する必要があります。

  3. ソース・システムで、データ・ポンプを停止します。
    STOP EXTRACT group
  4. Replicatの読取りRBAをリモート証跡のサイズと照合します。
  5. ターゲット・システム上で、Replicatの読取りRBAがリモート証跡のサイズと一致したら、Replicatを停止します。
    STOP REPLICAT group
  6. ソース・システムで、次のコマンドを発行してウォレットを開きます。
    OPEN WALLET
  7. ソース・システムで、次のコマンドを発行して現在のキーのバージョンを確認します。バージョンを記録します。
    INFO MASTERKEY
  8. ソース・システムで、次のコマンドを発行してマスター・キーを更新します。
    RENEW MASTERKEY
  9. ソース・システムで、次のコマンドを発行して新しいバージョンが現在のものであることを確認します。
    INFO MASTERKEY

    ノート:

    共有ウォレットを使用している場合は、ステップ12に進みます。各システム上のウォレットを使用している場合は、次のステップを続行します。

  10. ソース・システムで、次のコマンドを発行します(versionにはマスター・キーの新しいバージョンを指定します)。ハッシュ値を記録します。
    INFO MASTERKEY VERSION version
  11. すべてのターゲット・システム上で、以前のウォレットと同じ場所に、ソース・システムの更新されたウォレットをコピーします。
  12. 各ターゲットで、次のコマンドを発行します(versionにはマスター・キーの新しいバージョン番号を指定します)。各ウォレットで、StatusCurrentになっていることを確認し、新しいハッシュ値を記録しておいたコピー元の値と比較します。すべてのウォレットで、同じキー・バージョンとハッシュ値が表示される必要があります。
    INFO MASTERKEY VERSION version
  13. Extractを再起動します。
    START EXTRACT group
  14. データ・ポンプを再起動します。
    START EXTRACT group
  15. Replicatを再起動します。
    START REPLICAT group

8.4 失効したマスター・キーの削除

次の手順では、マスター・キーの失効バージョンを削除します。セキュアなOracle GoldenGateウォレットを維持するための全体的なポリシーの一環として、失効したキーは削除してください。ウォレット内で保持するキーのバージョンの数とその保存期間を定めたポリシーを作成しておくことをお薦めします。

ノート:

Oracle GoldenGateの共有ウォレットを使用したデプロイの場合、マスター・キーの古いバージョンは、マスター・キーが更新された後、すべてのプロセスが最新バージョンを使用するまで保持される必要があります。待機する時間は、トポロジ、レイテンシ、およびデプロイのデータ・ロードにより異なります。24時間の最小の待機時間は控えめな見積りですが、すべてのプロセスが新しいキーの使用を開始するのにかかる時間を決定するには、テストを実行する必要がある場合があります。すべてのプロセスが最新バージョンを使用しているかどうかを判定するには、マスター・キーの更新後すぐに各Extractのレポート・ファイルを表示して、古いキーでマイニングされた最後のSCNを確認します。次に、Replicatレポート・ファイルを監視し、このSCNがすべてのReplicatグループにより適用されたことを確認します。この時点で、マスター・キーの旧バージョンを削除できます。

ウォレットが中央の記憶域に配置され、Oracle GoldenGateインストール環境全体でそのウォレットを使用できる場合、次のステップは共有ウォレットに対して1回実行するだけで済みます。Oracle GoldenGateプロセスを停止する必要はありません。

ウォレットが中央の記憶域にない(つまり、各Oracle GoldenGateシステムにコピーが存在する)場合は、次のいずれかを実行します。

  • Oracle GoldenGateプロセスを停止できる場合は、ウォレットの変更ステップを1度だけ実行して、更新されたウォレットを他のシステムにコピーしてから、Oracle GoldenGateプロセスを再起動します。

  • Oracle GoldenGateプロセスを停止できない場合は、必ず各システム上でまったく同じ方法を使用してウォレットの変更ステップを実行する必要があります。

    次のステップには、両方のシナリオに対応する説明が含まれています。

  1. ソース・システムで、次のコマンドを発行して、削除対象のマスター・キーのバージョンを確認します。通常、最も古いバージョンが削除対象です。対象のバージョンを記録します。
    INFO MASTERKEY
    
  2. ソース・システムで、次のコマンドを発行してウォレットを開きます。
    OPEN WALLET
    
  3. 次のコマンドを発行して失効したマスター・キーを削除します。特定のバージョン、指定範囲のバージョン、または現在のものを含むすべてのバージョンを削除するオプションが用意されています。すべてのバージョンを削除するには、トランザクション・アクティビティとOracle GoldenGateプロセスを停止する必要があります。
    DELETE MASTERKEY {VERSION version | RANGE FROM begin_value TO end_value}

    ノート:

    DELETE MASTERKEYは、削除対象のキーのバージョンをマークするだけで、実際の削除は行いません。

  4. DELETE MASTERKEYコマンドから戻されたメッセージを確認し、正しいバージョンが削除対象としてマークされていることを確かめます。間違ってマークされたバージョンのマークを解除するには、次のステップに進む前に、UNDELETE MASTERKEY VERSION versionコマンドを使用します。必要に応じて、INFO MASTERKEYコマンドを実行すると、マークされた削除対象を確認できます。
  5. 正しいバージョンが削除対象としてマークされていることが確認できたら、次のコマンドを発行して、それらをウォレットから消去します。これは永久削除なので、元に戻せません。
    PURGE WALLET
    

    次のステップ:

    • ウォレットが共有記憶域に配置されている場合、ステップはこれで終了です。

    • 各システム上にウォレットが配置され、Oracle GoldenGateプロセスを停止できない場合は、Oracle GoldenGateシステムごとに前のステップを繰り返します。

    • 各システム上にウォレットが配置され、Oracle GoldenGateプロセスを停止できる場合は、次のステップを続行してプロセスを停止し、ウォレットを正しい順序で他のシステムにコピーします。

  6. Extractを停止します。
    STOP EXTRACT group
    
  7. GGSCIで、各データ・ポンプExtracに対して次のコマンドを発行します(At EOFが戻され、ローカル証跡内のすべてのデータが処理されたことが確認されるまで)。
    SEND EXTRACT group STATUS
    
  8. データ・ポンプを停止します。
    STOP EXTRACT group
    
  9. ターゲット・システムで、各Replicatに対して次のコマンドを発行します(At EOFが戻されるまで)。
    SEND REPLICAT group STATUS
    
  10. Replicatグループを停止します。
    STOP REPLICAT group
    
  11. すべてのターゲット・システム上で、以前のウォレットと同じ場所に、ソース・システムの更新されたウォレットをコピーします。
  12. Extractを再起動します。
    START EXTRACT group
    
  13. データ・ポンプを再起動します。
    START EXTRACT group
    
  14. Replicatを再起動します。
    START REPLICAT group