Configurer le protocole TLS pour Cassandra

Cet article explique comment configurer l'authentification pour la communication entre les nœuds Cassandra et entre les clients et les nœuds Cassandra.

Procédure de configuration du protocole TLS pour Cassandra dans le plan d'exécution

Cassandra assure une communication sécurisée entre une machine cliente et un cluster de base de données, et entre les nœuds d'un cluster. L'activation du chiffrement garantit que les données en cours de transfert ne sont pas compromises et sont transférées en toute sécurité. Dans Apigee hybride, TLS est activé par défaut pour toute communication entre les nœuds Cassandra et entre les clients et les nœuds Cassandra.

Vous pouvez configurer l'authentification à l'aide de combinaisons nom d'utilisateur/mot de passe placées directement dans le fichier de remplacement ou ajoutées à un secret Kubernetes, comme expliqué dans cette rubrique.

À propos de l'authentification des utilisateurs Cassandra

La plate-forme hybride utilise Cassandra comme datastore backend pour les données du plan d'exécution. Par défaut, toute communication client vers Cassandra nécessite une authentification. Les clients communiquent avec Cassandra par le biais de trois utilisateurs. Les mots de passe par défaut sont fournis à ces utilisateurs, et vous n'êtes pas obligé de les modifier.

Ces utilisateurs, y compris un utilisateur par défaut, sont décrits ci-dessous :

  • Utilisateur LMD : permet à la communication du client de lire et d'écrire des données sur Cassandra (KMS, KVM, Cache et Quota).
  • Utilisateur LDD : utilisé par MART pour toutes les tâches de définition de données telles que la création, la mise à jour et la suppression d'espace de clés.
  • Utilisateur administrateur : utilisé pour toutes les activités d'administration effectuées sur le cluster cassandra.
  • Utilisateur par défaut Cassandra : Cassandra crée un utilisateur par défaut lorsque l'authentification est activée et que le nom d'utilisateur est cassandra.

Modifier les mots de passe par défaut dans le fichier de remplacement

Apigee hybride fournit des mots de passe par défaut pour les utilisateurs Cassandra. Si vous souhaitez modifier les mots de passe utilisateur par défaut, vous pouvez le faire dans le fichier overrides.yaml. Ajoutez la configuration suivante, modifiez les mots de passe par défaut ("loveapis123") comme vous le souhaitez et appliquez la modification à votre 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"

Veuillez noter les points suivants :

  • La rotation de l'autorité de certification (CA) n'est pas prise en charge.
  • Un certificat de serveur généré avec une phrase secrète n'est pas accepté.

Définir les noms d'utilisateur et les mots de passe dans un secret Kubernetes

Cette section explique comment configurer Cassandra pour utiliser les secrets Kubernetes pour l'authentification.

Créer le secret

Utilisez le modèle suivant pour configurer le secret Kubernetes. Enregistrez le modèle dans un fichier et modifiez les attributs requis. Notez que si vous utilisez cette option, vous devez fournir les noms d'utilisateur pour chaque mot de 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

$SECRET_NAME est le nom que vous choisissez pour le secret, $APIGEE_NAMESPACE est l'espace de noms dans lequel les pods Apigee sont déployés (par défaut, apigee), $USERNAME et $PASSWORD sont les noms d'utilisateur et les mots de passe de chaque utilisateur. Notez que les noms d'utilisateur et les mots de passe doivent être encodés en base64.

Appliquez le secret au cluster. Exemple :

kubectl apply -f $SECRET_FILE

Ajoutez le secret à votre fichier de remplacement :

cassandra:
  auth:
    secret: $SECRET_NAME

Appliquez au cluster le remplacement Cassandra mis à jour :

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

Vérifier les journaux Cassandra

Vérifiez les journaux dès le démarrage de Cassandra. Le journal ci-dessous indique que les connexions client Cassandra sont chiffrées.

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...