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

Para ativar a criptografia entre nós do Cassandra, siga o procedimento abaixo em todos os nós na aglomerado. Você precisa distribuir certificados públicos de cada nó para todos eles. Depois disso, cada nó terá certificados node0.cer, node1.cer etc. no truststore. Cada nó só vai contém a própria chave privada um repositório de chaves de acesso. Por exemplo, node0 conterá apenas node0.pem no um repositório de chaves de acesso. Você precisa ativar a criptografia em cada nó, um de cada vez.

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