新しいローカル暗号化キーを作成し、テーブル・キー・ファイル名を変更し、新しいキーを使用してSSTableを再度暗号化します。
新しいローカル暗号化キーを作成し、テーブル・キー・ファイル名を変更し、新しいキーを使用してSSTableを再度暗号化します。システム・キーを変更する場合、古いキーを削除する前に、すべての既存のデータを再度暗号化する必要があります。
始める前に
以下の手順を行うには次の権限が必要です。
- DSEリソースおよび構成ディレクトリーに対して読み取り/書き込み/変更パーミッションを持っている、DataStax Enterpriseノード管理者またはスーパーユーザー・アカウント。
- DSEデータベース認証および権限管理が有効な場合、暗号化されたテーブルに対してALTER TABLEパーミッションを持っているデータベース・アカウント。
手順
-
SSTableのバックアップを作成します。
-
新しいローカル暗号化キーを作成し、クラスター内のノードに配布します。
-
のsystem_key_directory設定で指定されているキー・ファイル・ディレクトリーに移動します。
dse.yamlファイルの場所は、インストールのタイプによって異なります。
パッケージ・インストールInstaller-Servicesインストール
|
/etc/dse/dse.yaml |
tarボール・インストールInstaller-No Servicesインストール
|
installation_location/resources/dse/conf/dse.yaml |
-
dsetoolを使用して、キー・ファイル・ディレクトリー内に新しいシステム・キーを作成します。
dsetool createsystemkey 'AES/ECB/PKCS5Padding' 128 new_system_key
警告: 新しいキーと古いキーのどちらも再暗号化には必要です。テーブル・スキーマを変更し、既存のSSTableのキー更新を行うまで、古いキーを削除しないでください。
-
データベース・アカウントに、ファイルに対する読み取りおよび書き込みアクセス権があることを確認します。
la -l
この例では、DSEはデータベースを実行するアカウントです。
-rw------- 1 dse dse 50 May 19 10:54 system_key
-rw------- 1 dse dse 50 May 19 11:20 new_system_key
-
クラスター内のすべてのノードのシステム・キー・ディレクトリーに新しいキーをコピーします。
注: 新しいキーが正しいパーミッションを持っていることを確認してください。
-
テーブル・スキーマ内のキー・ファイル名を変更します。
-
変更する暗号化されたテーブルをすべて含むリストを表示します。
注: キースペース内のすべてのテーブル・プロパティを表示するには、DESC KEYSPACE keyspace_name cqlshコマンドを使用します。
-
新しい暗号化キーを使用する各テーブルについて、テーブル・スキーマ内のキー・ファイル名を変更します。
ALTER TABLE keyspace_name.table_name
WITH compression = { 'sstable_compression' : 'EncryptingSnappyCompressor',
'cipher_algorithm' : 'AES/ECB/PKCS5Padding',
'secret_key_strength' : 128,
'chunk_length_kb' : 128,
'system_key_file':'new_system_key' }
-
スキーマの変更が、クラスター内のすべてのノードにレプリケートされていることを確認します。
nodetool describecluster
以下の例は、3つのノードがすべて同じスキーマを持つ、小さい3つのノード・クラスターを示しています。異なるスキーマを持つノードがある場合は、スキーマの変更が伝搬されるまで待ってから、次のステップに進みます。
Name: Cluster1
Snitch: org.apache.cassandra.locator.DynamicEndpointSnitch
Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
Schema versions:
25743512-6b6f-3f76-96bc-1122d441f539: [node1_IP, node2_IP, node3_IP]
-
nodetool upgradesstablesを使用して、新しいキーを使用する暗号化されたSSTableを再度書き込みます。クラスターのすべてのノードで以下のコマンドを実行します。
- 対象が特定のテーブルのみの場合:
nodetool upgradesstables --include-all-sstables keyspace_name table_name [table_name …]
- 対象が特定のキースペースの場合:
nodetool upgradesstables --include-all-sstables keyspace_name
- 対象がすべてのキースペースとテーブルの場合:
nodetool upgradesstables --include-all-sstables
-
上記の手順を完了したら、古いキーを削除し、テーブルや構成ファイル・プロパティの暗号化に古いキーが使用されていないことを確認します。
注: 古いキーは、最初のステップで作成したSSTableのバックアップにアクセスする際に必要です。