Configurar o TLS para o Cassandra

Este tópico explica como configurar a autenticação para a comunicação entre os nós do Cassandra e entre os clientes e os nós do Cassandra.

Como configurar o TLS para o Cassandra no plano de tempo de execução

O Cassandra oferece uma comunicação segura entre uma máquina cliente e um cluster de base de dados, bem como entre nós num cluster. A ativação da encriptação garante que os dados em trânsito não são comprometidos e são transferidos de forma segura. No Apigee hybrid, o TLS está ativado por predefinição para qualquer comunicação entre nós do Cassandra e entre clientes e nós do Cassandra.

Pode configurar a autenticação através de combinações de nome de utilizador/palavra-passe colocadas diretamente no ficheiro de substituições ou adicionadas a um segredo do Kubernetes, conforme explicado neste tópico.

Acerca da autenticação de utilizadores do Cassandra

A plataforma híbrida usa o Cassandra como o armazenamento de dados de back-end para dados do plano de tempo de execução. Por predefinição, qualquer comunicação do cliente com o Cassandra requer autenticação. Existem três utilizadores usados pelos clientes que comunicam com o Cassandra. São fornecidas palavras-passe predefinidas para estes utilizadores e não é necessário alterá-las.

Estes utilizadores, incluindo um utilizador predefinido, estão descritos abaixo:

  • Utilizador DML: usado pela comunicação do cliente para ler e escrever dados no Cassandra (KMS, KVM, cache e quota).
  • Utilizador DDL: usado pelo MART para qualquer uma das tarefas de definição de dados, como a criação, a atualização e a eliminação de keyspaces.
  • Utilizador administrador: usado para quaisquer atividades administrativas realizadas no cluster do Cassandra.
  • Utilizador predefinido do Cassandra: o Cassandra cria um utilizador predefinido quando a autenticação está ativada e o nome de utilizador é cassandra

Alterar as palavras-passe predefinidas no ficheiro de substituições

O Apigee Hybrid fornece palavras-passe predefinidas para os utilizadores do Cassandra. Se quiser alterar as palavras-passe predefinidas dos utilizadores, pode fazê-lo no ficheiro overrides.yaml. Adicione a seguinte configuração, altere as palavras-passe predefinidas ("iloveapis123") como quiser e aplique a alteração ao seu cluster.

cassandra:
   auth:
     default:  ## the password for the new default user (static username: cassandra)
       password: "iloveapis123"
     admin: ## the password for the admin user (static username: admin_user)
       password: "iloveapis123"
     ddl: ## the password for the DDL User (static username: ddl_user)
       password: "iloveapis123"
     dml: ## the password for the DML User (static username: dml_user)
       password: "iloveapis123"

Tenha em conta o seguinte:

  • A rotação da autoridade de certificação (AC) não é suportada.
  • Não é suportado um certificado de servidor gerado com uma frase secreta.

Definir nomes de utilizador e palavras-passe num secret do Kubernetes

Esta secção explica como configurar o Cassandra para usar segredos do Kubernetes para autenticação.

Crie o Secret

Use o seguinte modelo para configurar o segredo do Kubernetes. Guarde o modelo num ficheiro e edite os atributos obrigatórios. Tenha em atenção que, se usar esta opção, tem de fornecer os nomes de utilizador com cada palavra-passe.

apiVersion: v1
kind: Secret
metadata:
  name: $SECRET_NAME
  namespace: $APIGEE_NAMESPACE
type: Opaque
data:
  default.password: $PASSWORD   #base64-encoded string
  admin.user: $USERNAME   #base64-encoded string
  admin.password: $PASSWORD   #base64-encoded string
  dml.user: $USERNAME   #base64-encoded string
  dml.password: $PASSWORD   #base64-encoded string
  ddl.user: $USERNAME   #base64-encoded string
  ddl.password: $PASSWORD   #base64-encoded string

Em que $SECRET_NAME é o nome que escolhe para o Secret, $APIGEE_NAMESPACE é o espaço de nomes onde os pods do Apigee são implementados (o predefinido é apigee) e $USERNAME e $PASSWORD são os nomes de utilizador e as palavras-passe de cada utilizador. Tenha em atenção que o nome de utilizador e a palavra-passe têm de estar codificados em Base64.

Aplique o segredo ao cluster. Por exemplo:

kubectl apply -f $SECRET_FILE

Adicione o segredo ao ficheiro de substituições:

cassandra:
  auth:
    secret: $SECRET_NAME

Aplique a substituição do Cassandra atualizada ao cluster:

$APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml -c cassandra

Verifique os registos do Cassandra

Verifique os registos assim que o Cassandra for iniciado. O registo abaixo mostra que as ligações do cliente Cassandra estão encriptadas.

kubectl logs apigee-cassandra-2 -n apigee -f

INFO  00:44:36 Starting listening for CQL clients on /10.0.2.12:9042 (encrypted)...
INFO  00:44:36 Binding thrift service to /10.0.2.12:9160
INFO  00:44:36 enabling encrypted thrift connections between client and server
INFO  00:44:36 Listening for thrift clients...