Setting up Local Encryption Keys
Use dsetool createsystemkey to generate local encryption/decryption key files.
|
To change an encryption key, see Rekeying existing data. |
Setting up local encryption keys for production environments
After installing DSE, create a local encryption key file, distribute it to the same location on all nodes in the cluster, and update the dse.yaml system_key_directory
and config_encryption_key_name properties.
The location of the dse.yaml file depends on the type of installation:
-
Package installations:
/etc/dse/dse.yaml -
Tarball installations:
<installation_location>/resources/dse/conf/dse.yaml
|
To change an encryption key, see Rekeying existing data. |
Prerequisites
To ensure support for all encryption algorithms, enable JCE.
|
Starting in |
Procedure
-
If the directory does not exist, create the
/confdirectory based on your DataStax Enterprise (DSE) installation type:-
Package installation:
/etc/dse/conf -
Tarball installation:
<installation_location>/resources/dse/conf
-
-
Configure the file name and the location of the encryption key in the
dse.yamlfile:-
Set
system_key_directoryproperty to the path where you want to store the encryption keys.system_key_directory: /etc/dse/conf -
Change the directory owner to the DSE account and ensure that the DSE account has read/write permissions.
-
Set the
config_encryption_key_nameto the <key_name>. The default name issystem_key.config_encryption_key_name: system_keyEncryption key files can have any valid Unix name.
-
-
Go to the
system_key_directoryand then create an encryption key using thedsetool createsystemkeycommand:For example:
cd /etc/dse/confdsetool createsystemkey 'AES/ECB/PKCS5Padding' 128 <key_name>Where <key_name> is the name of the key file to create. If no file name is specified, the key file is named
system_key.Encryption key files can have any valid Unix name.
DSE supports the following
JCEcipher algorithms and correspondinglength:-
cipher_algorithm[/mode/padding]
DSE supports the following
JCEcipher algorithms:-
AES/CBC/PKCS5Padding (valid with length 128, 192, or 256).
-
AES/ECB/PKCS5Padding (valid with length 128, 192, or 256)
-
DES/CBC/PKCS5Padding (valid with length 56)
-
DESede/CBC/PKCS5Padding (valid with length 112 or 168)
-
Blowfish/CBC/PKCS5Padding (valid with length 32-448)
-
RC2/CBC/PKCS5Padding (valid with length 40-128) Default value:
AES/CBC/PKCS5Padding(with length 128).If
config_encryption_activeis set totrueindse.yaml, a warning is generated, but the system key still successfully generates.
-
-
-
Copy the key file to all other nodes in the cluster. Put keys on all nodes in the same directory.
-
Update the
system_key_directoryandconfig_encryption_key_nameindse.yaml.dsetoolreads current values from thedse.yaml. A restart is not required in order to continue setting up encryption. -
Ensure that the DSE account owns the key files and has read/write access on them. If necessary, change the ownership of the file to the DSE user.
chown cassandra /etc/dse/conf/system_key
Setting up local encryption keys to embed in installation package for development environments
You can create a local encryption or decryption key file that can be embedded in a distribution (tarball). In development environments this distribution package can then be used by other users. This strategy is especially helpful when using scripts with IT automation tools such as Ansible.
|
The current user must have write permission to the directory where you want to generate the key files. |
Procedure
-
Specify the key file output directory when you create the encryption key with the
dsetool createsystemkeycommand:For example:
dsetool createsystemkey 'AES/ECB/PKCS5Padding' 128 -d /home/jane/keysResult: A key file
/home/jane/keys/system_keyis created. -
In the distribution tarball, create a directory for the
system keyfile. Use the default location (/etc/dse/conf) or add a new location. -
Locate the
dse.yamlconfiguration file. The location of this file depends on the type of installation:-
Package installations:
/etc/dse/dse.yaml -
Tarball installations:
<installation_location>/resources/dse/conf/dse.yaml
-
-
If you used a new location, then update the
system_key_directoryproperty indse.yamlas appropriate.