ローカル暗号化キーを使用した暗号化

ローカルに格納されている暗号化キーを使用してデータを暗号化するには、dseコマンドを使用して、暗号化用のシステム・キーを作成します。

ローカルに格納されている暗号化キーを使用してデータを暗号化する手順の概要は、次のとおりです。
  1. dseコマンドを使用して、暗号化用のシステム・キーを作成します。
  2. 次に、システム・キーをクラスター内の別のノードにコピーします。
クラスター全体は、システム・キーを使用して、リペアなどの操作用のSSTableを復号化します。壊れた可能性のあるSSTableのアップグレード中と復元中にもシステム・キーを使用します。
dse.yamlファイルの場所は、インストールのタイプによって異なります。
Installer-Services /etc/dse/dse.yaml
パッケージ・インストール /etc/dse/dse.yaml
Installer-No Services install_location/resources/dse/conf/dse.yaml
tarボール・インストール install_location/resources/dse/conf/dse.yaml

手順

ローカルに格納されている暗号化キーを使用してデータを暗号化するには、以下の手順に従います。

  1. SSTableのバックアップを作成します。
  2. dse.yamlファイルのsystem_key_directoryプロパティを設定します。
    • パッケージでインストールした場合は、デフォルトのsystem_key_directory: /etc/dse/confを受け入れます。次のステップに移動し、ディレクトリーのパーミッションを設定します。
    • tarボールでインストールする場合は、クラスターの各ノードについてディレクトリーを/etc/dse/confから別のディレクトリーに変更するか、このステップをスキップして、次のステップで説明するようにパーミッションを調整することもできます。アクセスするパーミッションがあるディレクトリーにキーを再配置するには、システム・キーのパスを構成する必要があります。
      • install-directory/resources/dse/confに移動します。
      • dse.yamlファイルを開き、編集します。
      • system_key_directoryのパスをアクセスするためのパーミッションがあるディレクトリーのパスに変更します。
  3. dse.yamlファイルのsystem_key_directoryプロパティに設定されているディレクトリーのパーミッションを、DataStax Enterpriseを実行しているユーザー/グループにのみキータブ・ファイルを変更する権限を付与するように設定します。これらのパーミッションの設定は、JNAが行います。
  4. データを暗号化するユーザーに、暗号化するデータが格納されているテーブルのALTERパーミッションが付与されていることを確認します。ユーザーに付与されているパーミッションは、LISTパーミッションを使用して表示できます。
  5. dsetool createsystemkeyコマンドを使用して、システム・キーを作成します。
    例:
    $ dsetool createsystemkey 'AES/ECB/PKCS5Padding' 128 system_key
  6. クラスターを再起動します。
  7. dse.yamlファイルのsystem_key_directoryプロパティに設定されているディレクトリーへの作成されたキーをクラスター内のすべてのノードにコピーします。
  8. テーブルを作成するか、既存のテーブルを変更するときに、暗号化オプションを設定します
    Cassandraによってディスク上のテーブルがSSTableとして格納されると、テーブルが暗号化されます。
  9. ディスク上のテーブルを直ちに格納するには、nodetool upgradesstables --include-all-sstablesを使用して、すべてのSSTableを再度書き込みます。
  10. 暗号化されたSSTableがディスクにフラッシュされたら、dse_system keyspaceとencrypted_keysテーブルが存在することを次のように確認できます。
    cqlsh:mykeyspace> DESCRIBE KEYSPACES;
    
    system  dse_system  mykeyspace  system_traces

    すべてのノードで、システム・キーがdse_system.encrypted_keysテーブルから選択されると表示されます。

    cqlsh:mykeyspace> SELECT * FROM dse_system.encrypted_keys;
     
    key_file   | cipher | strength | key_id        | key
    -----------+--------+----------+---------------+-----------
    system_key |    AES |      128 | 2e4ea4a0-...| uyBEGhX...