Ativar a criptografia interna do Cassandra

A criptografia entre nós (ou nó para nó) protege os dados que trafegam entre nós em um cluster. usando TLS. Esta página explica como ativar a criptografia de entre nós do Cassandra usando TLS no Edge para de nuvem privada virtual. Para realizar essas etapas, você precisa conhecer os detalhes do seu Cassandra. anel

Ativar a criptografia entre nós do Cassandra

Siga estas etapas para ativar a criptografia entre nós do Cassandra:

  1. Gere certificados do servidor seguindo as etapas do Apêndice para criar uma chave autoassinado e um certificado.

    As etapas a seguir pressupõem que você criou keystore.node0 e truststore.node0, além das senhas do keystore e do truststore, conforme explicado no Apêndice. O keystore e o truststore devem ser criados como etapas preliminares em cada nó antes de prosseguir com as próximas etapas.

  2. Adicione as seguintes propriedades ao /opt/apigee/customer/application/cassandra.properties . Crie o arquivo se ele não existir.
    conf_cassandra_internode_encryption=all
    conf_cassandra_keystore=/opt/apigee/data/apigee-cassandra/keystore.node0
    conf_cassandra_keystore_password=keypass
    conf_cassandra_truststore=/opt/apigee/data/apigee-cassandra/truststore.node0
    conf_cassandra_truststore_password=trustpass
    # Optionally set the following to enable 2-way TLS or mutual TLS
    # conf_cassandra_require_client_auth=true
  3. Verifique se o arquivo cassandra.properties pertence ao usuário da Apigee:
    chown apigee:apigee \
    /opt/apigee/customer/application/cassandra.properties

Execute as etapas a seguir em cada nó do Cassandra, uma de cada vez, para que as alterações entrem em vigor sem causar inatividade para os usuários:

  1. Interrompa o serviço do Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  2. Reinicie o serviço do Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  3. Para determinar se o serviço de criptografia TLS foi iniciado, procure a seguinte mensagem nos registros do sistema:
    Starting Encrypted Messaging Service on TLS port

Executar a rotação de certificados

Para alternar certificados, siga estas etapas:

  1. Adicione o certificado para cada par de chaves exclusivo gerado (consulte o Apêndice). a um Cassandra atual o truststore do nó, de modo que os certificados antigos e os novos certificados existam no mesmo truststore:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE

    em que NEW_ALIAS é uma string exclusiva para identificar a entrada, CERT é o nome do certificado arquivo a ser adicionado e EXISTING_TRUSTSTORE é o nome do truststore existente no nó do Cassandra.

  2. Usar um utilitário de cópia, como o scp, para distribuir o truststore para todos os nós do Cassandra no cluster substituindo o truststore atual em uso por cada nó.
  3. Execute uma reinicialização gradual do cluster para carregar o novo truststore e estabelecer confiança para o novas chaves antes que estejam em vigor:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
  4. Em cada nó do Cassandra no cluster, atualize as propriedades mostradas abaixo para o novo keystore. no arquivo cassandra.properties:
    conf_cassandra_keystore=NEW_KEYSTORE_PATH
    conf_cassandra_keystore_password=NEW_KEYSTORE_PASSOWRD
    
      

    where NEW_KEYSTORE_PATH is the path to the directory where the keystore file is located and NEW_KEYSTORE_PASSWORD is the keystore password set when the certificates were created, as explained in the Appendix.

  5. Stop the Cassandra service:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  6. Reinicie o serviço do Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  7. Quando a comunicação for estabelecida entre todos os nós, prossiga para o próximo Nó do Cassandra. Observação:só prossiga para o próximo nó se a comunicação for bem-sucedida. estabelecida entre todos os nós.

Apêndice

O exemplo a seguir explica como preparar certificados de servidor necessários para realizar a etapas de criptografia entre nós diferentes. Os comandos mostrados no exemplo usam os seguintes parâmetros:

Parâmetro Descrição
node0 Qualquer string exclusiva para identificar o nó.
keystore.node0 Um nome de keystore. Os comandos presumem que este arquivo está no diretório atual.
keypass O keypass precisa ser o mesmo para o keystore e a chave.
dname Identifica o endereço IP de node0 como 10.128.0.39.
-validity O valor definido nessa flag torna o par de chaves gerado válido por 10 anos.
  1. Acesse o seguinte diretório:
    cd /opt/apigee/data/apigee-cassandra
  2. Execute o seguinte comando para gerar um arquivo chamado keystore.node0 no diretório atual:
    keytool -genkey -keyalg RSA -alias node0 -validity 3650 \
    -keystore keystore.node0 -storepass keypass \
    -keypass keypass -dname "CN=10.128.0.39, OU=None, \
    O=None, L=None, C=None"

    Importante:verifique se a senha da chave é a mesma do keystore.

  3. Exporte o certificado para um arquivo separado:
    keytool -export -alias node0 -file node0.cer \
    -keystore keystore.node0
  4. Verifique se o arquivo pode ser lido apenas pelo usuário da Apigee e para ninguém mais:
    $ chown apigee:apigee \
    /opt/apigee/data/apigee-cassandra/keystore.node0
    $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
  5. Importe o certificado gerado node0.cer para o truststore do nó:
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node0

    O comando acima solicita que você defina uma senha. Essa é a senha do truststore e pode ser diferente da senha do keystore que você definiu anteriormente. Se for solicitado que você confie no certificado, digite yes.

  6. Use o openssl para gerar um arquivo PEM do certificado sem chaves. Observe que cqlsh não funciona com o certificado no formato gerado.
    $ keytool -importkeystore -srckeystore keystore.node0 \
    -destkeystore node0.p12 -deststoretype PKCS12 -srcstorepass \
    keypass -deststorepass keypass
    $ openssl pkcs12 -in node0.p12 -nokeys -out node0.cer.pem \
    -passin pass:keypass
    $ openssl pkcs12 -in node0.p12 -nodes -nocerts -out node0.key.pem -passin pass:keypass
  7. Para criptografia de nó para nó, copie o arquivo node0.cer em cada nó e importe-o ao truststore de cada nó.
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node1
  8. Use keytool -list para verificar se há certificados nos arquivos keystore e truststore:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0