3 Oracle Sharding環境のセキュリティ

Oracle Shardingでの透過的データ暗号化の使用

Oracle Shardingでは透過的データ暗号化(TDE)がサポートされますが、TDEを有効にした状態でシャード・データベース内のチャンクを正常に移行できるように、すべてのシャードが暗号化された表領域に対する同じ暗号化キーを共有して使用する必要があります。

シャード・データベースは、複数の独立したデータベースと1つのカタログ・データベースで構成されます。特にシャード間でデータを移動するときにTDEが正しく機能するように、一定の制限が適用されます。データが暗号化されているときにシャード間のチャンク移動が正常に機能するためには、すべてのシャードで同じ暗号化キーを使用する必要があります。

これを実現するには、次の2つの方法があります。

  • シャード・カタログから暗号化キーを作成してエクスポートし、すべてのシャードに個々にキーをインポートしてアクティブ化します。

  • ウォレットを共有の場所に格納し、シャード・カタログおよびすべてのシャードで同じウォレットを使用します。

シャードDDLを有効にしたシャード・カタログで次のTDE文を実行すると、その操作がシャードに自動的に伝播されます。

  • alter system set encryption wallet open/close identified by password

  • alter system set encryption key

  • administer key management set keystore [open|close] identified by password

  • administer key management set key identified by password

  • administer key management use key identified by password

  • administer key management create key store identified by password

制限事項

Oracle ShardingでのTDEの使用には、次の制限事項が適用されます。

  • MOVE CHUNKが正常に機能するには、すべてのシャード・データベース・ホストが同じプラットフォームに存在する必要があります。

  • MOVE CHUNKでは、データ転送中にパフォーマンスに影響を及ぼす可能性がある圧縮を使用できません。

  • 表領域レベルでの暗号化のみがサポートされます。特定の列に対する暗号化はサポートされません。

関連項目:

TDEの詳細は、『Oracle Database Advanced Securityガイド』を参照してください。

すべてのシャードに対する単一の暗号化キーの作成

シャード・データベース構成内のすべてのデータベースに単一の暗号化キーを伝播するには、シャード・カタログでマスター暗号化キーを作成し、ウォレットをエクスポートしてシャードにインポートし、キーをアクティブ化する必要があります。

ノート:

この手順は、キーストア・パスワードとウォレット・ディレクトリ・パスがシャード・カタログおよびすべてのシャードで同じであることを前提としています。異なるパスワードとディレクトリ・パスが必要な場合は、各シャードとシャード・カタログで、シャードDDLを無効化し、シャードの独自のパスワードとパスを使用して、すべてのコマンドを個別に発行する必要があります。

次のステップは、データの暗号化を実行する前に行う必要があります。

  1. シャード・カタログで暗号化キーを作成します。

    シャードDDLを有効にして、次の文を発行します。

    ADMINISTER KEY MANAGEMENT CREATE KEYSTORE wallet_directory_path IDENTIFIED BY
     keystore_password;
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY keystore_password;

    ウォレットのオープンおよびクローズ・コマンドをカタログから一元的に発行する場合は、keystore_passwordが同じである必要があります。

    ノート:

    ウォレット・ディレクトリ・パスは、対応するsqlnet.oraのENCRYPTION_WALLET_LOCATIONと一致する必要があります。

    ENCRYPTION_WALLET_LOCATIONパラメータは非推奨です。かわりに、WALLET_ROOT静的初期化パラメータおよびTDE_CONFIGURATION動的初期化パラメータを使用することをお薦めします。

    シャードDDLを無効にして、次の文を発行します。

    ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY keystore_password WITH BACKUP;

    シャード・カタログ・データベースのウォレットに暗号化キーが作成され、アクティブ化されます。

    DDLを有効にしてこの文を発行すると、各シャードのウォレットにもカタログのキーとは異なる暗号化キーが作成されます。データ移動を正常に実行するには、各シャード上の異なる暗号化キーを使用しないでください。

  2. シャード・カタログのキーストアからマスター・キーのIDを取得します。
    SELECT KEY_ID  FROM V$ENCRYPTION_KEYS 
    WHERE ACTIVATION_TIME =
     (SELECT MAX(ACTIVATION_TIME) FROM V$ENCRYPTION_KEYS
      WHERE ACTIVATING_DBID = (SELECT DBID FROM V$DATABASE));
  3. シャードDDLを無効にして、カタログの暗号化キーを含むウォレットをエクスポートします。
    ADMINISTER KEY MANAGEMENT EXPORT ENCRYPTION KEYS WITH SECRET secret_phrase TO
     wallet_export_file IDENTIFIED BY keystore_password;
    (オプション)ここでステップの結果を入力します。
  4. ウォレット・ファイルを各シャード・ホストの対応するウォレット・エクスポート・ファイルの場所に物理的にコピーするか、すべてのシャードがアクセスできる共有ディスクに格納します。
  5. シャードDDLを無効にして、各シャードにログオンし、キーを含むウォレットをインポートします。
    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY keystore_password;
    ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS WITH SECRET secret_phrase FROM
     wallet_export_file IDENTIFIED BY keystore_password WITH BACKUP;
  6. シャード・データベースを再起動します。
  7. すべてのシャード上のキーをアクティブ化します。

    カタログでシャードDDLを有効にして、次のコマンドを実行します。

    ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY keystore_password;
    ADMINISTER KEY MANAGEMENT USE KEY master_key_id IDENTIFIED BY keystore_password
     WITH BACKUP;

これで、すべてのシャードとシャード・カタログ・データベースで同じ暗号化キーがアクティブ化され、データの暗号化に使用する準備が完了しました。シャード・カタログで、(シャードDDLを有効にして)次のようなTDE DDLを発行できます。

  • 暗号化された表領域および表領域セットを作成します。

  • 暗号化された表領域を使用してシャード表を作成します。

  • 暗号化された列を含むシャード表を作成します(制限があります)。

すべてのシャード上のキーIDがシャード・カタログ上のIDと一致していることを検証します。

SELECT KEY_ID  FROM V$ENCRYPTION_KEYS 
WHERE ACTIVATION_TIME =
 (SELECT MAX(ACTIVATION_TIME) FROM V$ENCRYPTION_KEYS
  WHERE ACTIVATING_DBID = (SELECT DBID FROM V$DATABASE));

Oracle Sharding用のSSL/TLSを使用したTCP/IPの構成

「Oracle Sharding用のSSL/TLSを使用したTCP/IPの構成」での手順は、シャードを実行する予定のデータベースのタイプによって異なります。

このセキュリティ機能の構成については、シャードを実行する予定のデータベースのタイプに基づいてドキュメントを参照してください。

詳細は、「Oracle Databaseのネイティブ・ネットワーク暗号化とデータ整合性の構成」およびSecure Sockets Layer認証の構成にも記載されています。