テーブルごとの暗号化(TDE)の構成
透過的なデータ暗号化(TDE)をテーブルごと、またはクラスター全体ごとに構成します。暗号化は、圧縮の有無にかかわらず構成できます。
透過的なデータ暗号化(TDE)をテーブルごと、またはクラスター全体ごとに指定します。暗号化を使用すると、アプリケーションは異なる暗号化アルゴリズムを使用するSSTableの読み取り/書き込みや、暗号化を一切使用しないSSTableの読み取り/書き込みを行うことができます。データを暗号化するには、スーパーユーザーとしてログインする必要があります。例:
cqlsh -u cassandra -p cassandra
システム・キーの概要
- dsetool createsystemkeyコマンドを使用して、任意の数のシステム・キーを作成できます。
- すべてのシステム・キーは、dse.yamlのsystem_key_directoryプロパティで設定された場所のクラスター全体で一貫している必要があります。
- システム・キーには、そのユーザーの読み取り/書き込みパーミッションがある必要があります。
- テーブルごとに異なるシステム・キーを使用できます。
- テーブルで特定のシステム・キーを使用するには、CREATE TABLE文またはALTER TABLE文で
'system_key_file':'system_key_filename'
サブプロパティを指定する必要があります。 'system_key_file':'system_key_filename'
サブプロパティが指定されていない場合は、DataStax Enterpriseクラスターのデフォルトのグローバル・システム・キーが使用されます。- グローバル・システム・キーとは、dse.yamlファイルでsystem_key_directoryプロパティ用に指定された場所に作成する暗号化キーです。
- グローバル・キー・ファイルには、任意の名前を使用できます。
dsetool createsystemkey
コマンドでキー名を指定するには、fileオプションを使用します。例:dsetool createsystemkey file globalsystemkey ....
キー名を指定しない場合のデフォルトのキー名は、system_keyです。デフォルトのキー名は変更できません。
テーブルごとに暗号化を構成する例
sudo dsetool createsystemkey 'AES/ECB/PKCS5Padding' 128 system_key $ sudo dsetool createsystemkey 'AES/ECB/PKCS5Padding' 128 system_key_2システム・キーに読み取りおよび書き込みパーミッションがあることを確認します。
la -l -rw------- 1 cassandra cassandra 50 May 19 10:54 system_key -rw------- 1 cassandra cassandra 50 May 19 11:20 system_key_2この特定のテーブルの暗号化キーとしてsystem_key_2ファイル使用するように指定するテーブルを作成します。
create table users (name text PRIMARY key, bio text )
with compression = { 'sstable_compression' :'EncryptingSnappyCompressor',
'cipher_algorithm' :'AES/ECB/PKCS5Padding',
'secret_key_strength' : 128,
'chunk_length_kb' : 128,
'system_key_file':'system_key_2' };
テーブル・データを暗号化および圧縮を用いて暗号化する
CREATE TABLE users
...
WITH compression =
{ 'sstable_compression' :'EncryptingSnappyCompressor',
'cipher_algorithm' :'AES/ECB/PKCS5Padding',
'secret_key_strength' : 128,
, 'chunk_length_kb' : 128 };
テーブル・データを暗号化を用いて、圧縮しないで暗号化する
データを圧縮しないで暗号化するように設定するには、chunk_length_kbオプションを可能な最低値に設定します。このオプションを1のような低い値に設定すると、各読み取り操作で復号化する必要があるデータが1KBに制限されるため、読み取りパフォーマンスが向上します。
暗号化/圧縮オプションとサブオプション
暗号化を使用すると、アプリケーションは異なる暗号化アルゴリズムを使用する、または暗号化を一切使用しないSSTableを読み取ったり、書き込んだりすることができます。異なる暗号化アルゴリズムを使用してSSTableデータを暗号化する作業は、異なる圧縮アルゴリズムを使用してデータを圧縮する作業に似ています。
Encryptor | テーブル・データを暗号化します。 |
EncryptingDeflateCompressor | テーブル・データを暗号化し、Deflate圧縮アルゴリズムを使用します。 |
EncryptingSnappyCompressor | テーブル・データを暗号化し、Snappy圧縮アルゴリズムを使用します。 |
DeflateCompressor | テーブル・データを暗号化せずに、Deflate圧縮アルゴリズムを使用します。 |
SnappyCompressor | テーブル・データを暗号化せずに、Snappy圧縮アルゴリズムを使用します。 |
LZ4Compressor(デフォルト) | テーブル・データを暗号化せずに、LZ4圧縮アルゴリズムを使用します。 |
たとえば、cassandra-stressを実行している場合は、: -Xmn1600Mを設定します。暗号化と圧縮のサブオプションは以下のとおりです。
cipher-algorithmサブオプション
Java Cryptography Extension (JCE)がインストールされている場合、cipher_algorithmオプションとアルゴリズムで使用可能なsecret_key_strength値は以下のとおりです。cipher_algorithm | secret_key_strength |
---|---|
AES/CBC/PKCS5Padding | 128、192、または256 |
AES/ECB/PKCS5Padding | 128、192、または256 |
DES/CBC/PKCS5Padding | 56 |
DESede/CBC/PKCS5Padding | 112または168 |
Blowfish/CBC/PKCS5Padding | 32-448 |
RC2/CBC/PKCS5Padding | 40-128 |
- sstable_compression = EncryptingDeflateCompressor
- cipher_algorithm = 'AES/CBC/PKCS5Padding'
- secret_key_strength = 256
- chunk_length_kb = 128
- key_provider = KmipKeyProviderFactory
- kmip_host = kmip_group2
JVMのカスタム・プロバイダーをインストールできます。AES-512は、構成しないと使用できません。
- key_provider
- 暗号化用のKMIPキー・サーバーを使用する場合は、KmipKeyProviderFactoryを使用します。
- kmip_host
- dse.yamlのkmip_hostsセクションで設定されているKMIPキー・サーバー・グループの名前。
- キーの場所のサブオプション
-
dsetool createsystemkeyコマンドを使用してグローバル暗号化キーを作成します。グローバル暗号化キーは、dse.yamlファイルのsystem_key_directoryで指定されている場所に作成できます。このデフォルトのグローバル暗号化キーは、system_key_fileサブプロパティが指定されていない場合に使用されます。
特定の暗号化キーを使用するには、以下のようにします。'system_key_file':'name_of_system_key_file'
- chunk_length_kbサブオプション
-
ディスク上では、SSTableは、(ランダム読み取りを許可するために)ブロックごとに暗号化および圧縮されています。この圧縮サブプロパティは、そのブロックのサイズ(KB)を定義し、2のべき乗で表されます。値をデフォルト値より大きくすると、圧縮率が上がりますが、実際に読み取るときにディスクから読み取るデータの最小サイズが大きくなります。デフォルト値(64)は、テーブルの圧縮に適切ですが、Data Encryption Standard(DES)の最大キー・サイズは64で、その他の暗号化アルゴリズムの最大キー・サイズはすべて128です。暗号化を強化したい場合は、Java Cryptography Extension(JCE)をインストールしてください。
暗号化のみを使用し、圧縮を使用しない場合、SSTableのサイズは圧縮を組み合わせた場合よりも大きくなります。テーブル作成時に、DataStax Enterpriseはdse.yamlで指定されたシステム・キーを検索します。システム・キーが含まれているキータブ・ファイルの場所を指定する必要はありません。
- iv_lengthサブオプション
-
すべてのアルゴリズムでこのサブオプションを設定できるとは限りません。大半のユーザーの苦情は、16バイトに設定されていない場合です。16を使用するか、デフォルトを受け入れます。
サブオプションを使用するための構文は、データ圧縮用に圧縮アルゴリズムを設定するための構文に似ています。
ALTER TABLEユーザー ... WITH compression = { 'sstable_compression' :'EncryptingSnappyCompressor', 'cipher_algorithm' :'AES/ECB/PKCS5Padding', 'secret_key_strength' : 128, 'iv_length' : 16 };
SolrJ Authを使用しての暗号化の実装
SolrJ-Authライブラリを使用して暗号化を実装するには、solrj-auth-README.mdファイルの指示に従ってください。
Debianインストール | /usr/share/doc/dse-libsolr* |
RHELベースのインストール | /usr/share/doc/dse-libsolr |
バイナリー・インストール | resources/solr |
これらのSolrJ-Authライブラリは、DataStax Enterpriseディストリビューションのclientsディレクトリーに含まれています。SolrJ-Authコードはパブリックです。
Debianインストール | /usr/share/dse/clients |
バイナリー・インストール | install_location/clients |