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
/conf
directory 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.yaml
file:-
Set
system_key_directory
property 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_name
to the <key_name>. The default name issystem_key
.config_encryption_key_name: system_key
Encryption key files can have any valid Unix name.
-
-
Go to the
system_key_directory
and then create an encryption key using thedsetool createsystemkey
command:For example:
cd /etc/dse/conf
dsetool 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
JCE
cipher algorithms and correspondinglength
:-
cipher_algorithm[/mode/padding]
DSE supports the following
JCE
cipher 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_active
is set totrue
indse.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_directory
andconfig_encryption_key_name
indse.yaml
.dsetool
reads 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 createsystemkey
command:For example:
dsetool createsystemkey 'AES/ECB/PKCS5Padding' 128 -d /home/jane/keys
Result: A key file
/home/jane/keys/system_key
is created. -
In the distribution tarball, create a directory for the
system key
file. Use the default location (/etc/dse/conf
) or add a new location. -
Locate the
dse.yaml
configuration 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_directory
property indse.yaml
as appropriate.