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 vários utilizadores 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
- Utilizador JMX: usado para autenticar e comunicar com a interface JMX do Cassandra.
- Utilizador do Jolokia: usado para autenticar e comunicar com a API JMX do 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" jmx: username: "jmxuser" ## the username for the JMX User password: "iloveapis123" ## the password for the JMX User jolokia: username: "jolokiauser" ## the username to access jolokia interface password: "iloveapis123" ## the password for jolokia user
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 jmx.user: $USERNAME #base64-encoded string jmx.password: $PASSWORD #base64-encoded string jolokia.user: $USERNAME #base64-encoded string jolokia.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 --datastore
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...