Activer l'authentification Cassandra

Par défaut, Cassandra installe l'application sans authentification activée. Cela signifie que tout le monde peut accéder à Cassandra. Vous pouvez activer l'authentification après l'installation de Edge ou dans le cadre du processus d'installation.

Vous pouvez ajouter, supprimer et modifier des rôles à l'aide des instructions Cassandra CREATE/ALTER/DROP ROLES. Pour en savoir plus, consultez les ressources suivantes :

Considérations générales

  • Lorsque vous activez l'authentification Cassandra, un super-utilisateur par défaut cassandra (avec le mot de passe cassandra) est créé automatiquement par Cassandra. Il s'agit d'un super-utilisateur très connu. Vous ne devez pas l'utiliser pour vos besoins de production. De plus, l'authentification via ce super-utilisateur nécessite la cohérence du quorum. Par conséquent, toutes les connexions à Cassandra qui s'authentifient via cet utilisateur nécessitent une cohérence plus stricte, ce qui ralentit les performances et réduit la tolérance aux pannes.
  • Un workflow type consiste à activer l'authentification dans Cassandra tout en transmettant un nom d'utilisateur et un mot de passe personnalisés via le fichier de configuration. L'utilisateur et le mot de passe personnalisés seront ainsi créés, que vous pourrez utiliser en toute sécurité selon vos besoins. L'authentification via ces utilisateurs ne sera pas soumise à des restrictions de cohérence du quorum.
  • N'oubliez pas que même si un utilisateur personnalisé a été créé, Cassandra crée toujours le super-utilisateur cassandra par défaut et que votre cluster Cassandra est accessible via le super-utilisateur. Une fois que l'authentification Cassandra a été correctement activée dans Apigee, vous devez généralement utiliser la commande ALTER ROLE pour remplacer le mot de passe de cet utilisateur cassandra par un autre mot de passe par défaut que cassandra par défaut. Gardez une trace de ce mot de passe pour le retrouver plus tard.
  • Vous ne devez PAS modifier le mot de passe du rôle utilisé par les composants edge-* pour l'authentification, car cela entraînerait immédiatement une interruption de service. À la place, vous devez créer un nouvel utilisateur, modifier les composants edge-* pour utiliser le nouvel utilisateur et, une fois l'opération terminée, supprimer l'ancien utilisateur à l'aide de la commande DROP ROLE.
  • Pour modifier le rôle utilisé par les composants edge-* pour l'authentification Cassandra, procédez comme suit :
    1. Suivez la procédure décrite dans la section Activer l'authentification pour créer un utilisateur. Notez que si l'authentification est déjà activée dans votre cluster et que vous avez modifié le mot de passe de l'utilisateur cassandra, vous devez transmettre la combinaison nom d'utilisateur/mot de passe d'un utilisateur existant via CASS_EXISTING_USERNAME et CASS_EXISTING_PASSWORD.
    2. Une fois l'opération terminée, vérifiez à l'aide de cqlsh que vous pouvez vous connecter à Cassandra via l'ancien et le nouvel utilisateur.
    3. Faites pointer tous les composants edge-* pour que l'utilisateur nouvellement créé se connecte à Cassandra en suivant les instructions de la section Mettre à jour les composants Edge qui se connectent à Cassandra.
    4. Enfin, lorsque tous les composants utilisent le nouvel utilisateur pour communiquer avec Cassandra, vous pouvez supprimer l'ancien utilisateur à l'aide de la commande DROP ROLE. Notez que le rôle cassandra par défaut ne doit pas être supprimé. Vous pouvez supprimer tous les rôles personnalisés qui ne sont pas utilisés par les composants edge-* pour communiquer avec Cassandra.
  • N'oubliez pas de mettre à jour le nom d'utilisateur et le mot de passe fonctionnels Cassandra dans le fichier de configuration que vous utilisez pour installer ou mettre à niveau les composants Edge. Cela permet d'éliminer ou de minimiser les perturbations lors des opérations en périphérie.

Activer l'authentification Cassandra pendant l'installation

Vous pouvez activer l'authentification Cassandra au moment de l'installation.

Pour activer l'authentification Cassandra au moment de l'installation, incluez la propriété CASS_AUTH dans le fichier de configuration pour tous les nœuds Cassandra:

CASS_AUTH=y # The default value is n.

Les composants Edge suivants accèdent à Cassandra:

  • Serveur de gestion
  • Processeurs de messages
  • Routeurs
  • Serveurs Qpid
  • Serveurs Postgres

Lorsque vous installez ces composants, vous devez définir un nom d'utilisateur et un mot de passe dans le fichier de configuration:

CASS_USERNAME=cassandra_username
CASS_PASSWORD=cassandra_password

Vous pouvez modifier les identifiants Cassandra après l'avoir installé. Toutefois, si vous avez déjà installé le serveur de gestion, les processeurs de messages, les routeurs, les serveurs Qpid ou les serveurs Postgres, vous devez également mettre à jour ces composants pour qu'ils utilisent les nouveaux identifiants.

Pour modifier les identifiants Cassandra après l'installation de Cassandra:

  1. Connectez-vous à n'importe quel nœud Cassandra à l'aide de l'outil cqlsh et des identifiants par défaut. Il vous suffit de modifier le mot de passe sur un seul nœud pour qu'il soit diffusé sur tous les nœuds Cassandra de l'anneau :
    /opt/apigee/apigee-cassandra/bin/cqlsh cassIP 9042 -u cassandra_username -p cassandra_password

    Où :

    1. cassIP est l'adresse IP du nœud Cassandra.
    2. 9042 est le port Cassandra par défaut.
  2. Exécutez la commande suivante lorsque l'invite cqlsh> s'affiche pour mettre à jour le mot de passe :
    ALTER ROLE <username> WITH PASSWORD='';
  3. Quittez l'outil cqlsh, comme indiqué dans l'exemple suivant :
    exit
  4. Si vous n'avez pas encore installé le serveur de gestion, les processeurs de messages, les routeurs, les serveurs Qpid ou les serveurs Postgres, définissez les propriétés suivantes dans le fichier de configuration, puis installez ces composants :
    CASS_USERNAME=cassandra_username
    CASS_PASSWORD=new_cassandra_password
  5. Si vous avez déjà installé le serveur de gestion, les processeurs de messages, les routeurs, les serveurs Qpid ou les serveurs Postgres, consultez la section Réinitialisation des mots de passe périphériques pour connaître la procédure permettant de mettre à jour ces composants afin d'utiliser le nouveau mot de passe.

Activer l'authentification Cassandra après l'installation

Pour activer l'authentification après une installation:

Mettre à jour les composants Edge qui se connectent à Cassandra

Procédez comme suit pour mettre à jour tous les composants Edge qui communiquent avec Cassandra avec les nouveaux identifiants. Notez que vous devez effectuer cette étape avant de mettre à jour les identifiants Cassandra:

  1. Sur le nœud du serveur de gestion, exécutez la commande suivante :
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server
      store_cassandra_credentials -u cassandra_username -p cassandra_password

    Si vous le souhaitez, vous pouvez transmettre à la commande un fichier contenant le nouveau nom d'utilisateur et le nouveau mot de passe:

    apigee-service edge-management-server store_cassandra_credentials  -f configFile

    configFile contient les éléments suivants:

    CASS_USERNAME=cassandra_username # Default is cassandra
    CASS_PASSWORD='cassandra_password' # Default is cassandra; wrap in single quotes if it includes special chars

    Cette commande redémarre automatiquement le serveur de gestion.

  2. Répétez l'étape 1 pour chacun des services suivants :
    • Tous les processeurs de messages
    • Tous les routeurs
    • Tous les serveurs Qpid (edge-qpid-server)
    • Serveurs Postgres (edge-postgres-server)

    Lorsque vous répétez l'étape 1 pour chaque service, remplacez edge-management-server dans la commande ci-dessus par le nom de service approprié. Par exemple, lorsque vous exécutez l'étape pour un service de routeur, utilisez la commande suivante:

    /opt/apigee/apigee-service/bin/apigee-service edge-router
      store_cassandra_credentials -u cassandra -p cassandra

Activer l'authentification

Procédez comme suit pour activer l'authentification Cassandra et définir le nom d'utilisateur et le mot de passe:

  1. Créez un fichier de configuration silencieuse avec le contenu présenté ci-dessous :
    # Specify IP address or DNS name of cassandra node
    IP1=192.168.1.1
    IP2=192.168.1.2
    IP3=192.168.1.3
    # Must resolve to IP address or DNS name of host
    HOSTIP=$(hostname -i)
    # Set to ‘y’ to enable Cassandra authentication.
    CASS_AUTH=y # Possible values are ‘y/n’
    # Cassandra username. If it does not exist, this user would be created as a SUPERUSER
    CASS_USERNAME=cassandra_username # Default value is cassandra - don't use for production
    # Cassandra Password. If CASS_USERNAME does not exist, create SUPERUSER with this as password
    CASS_PASSWORD=cassandra_password # Default value is cassandra - don't use for production
    # Space-separated IP/DNS names of the Cassandra hosts
    CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1"
    
    # Username of an existing C* user. Only needed if you have disabled or changed details of the default cassandra user(‘cassandra’)
    CASS_EXISTING_USERNAME=existing_cassandra_username
    # Password of an existing C* user. Only needed if you have disabled or change password of the default cassandra user(‘cassandra’)
    CASS_EXISTING_PASSWORD=existing_cassandra_password
    # Cassandra port
    CASS_PORT=9042 # The default port is 9042.
  2. Connectez-vous au premier nœud Cassandra et exécutez la commande suivante:

    apigee-service apigee-cassandra enable_cassandra_authentication -f CONFIG

    Vous pouvez éventuellement transmettre les propriétés au script en tant qu'arguments de commande, comme illustré dans l'exemple suivant :

    CASS_AUTH=y HOSTIP=$(hostname -i) CASS_PORT=9042 CASS_EXISTING_USERNAME=existing_cassandra_username CASS_EXISTING_PASSWORD=existing_cassandra_password CASS_USERNAME=cassandra_username CASS_PASSWORD=cassandra_password  CASS_HOSTS="192.168.1.1:1,1 192.168.1.2:1,1 192.168.1.3:1,1" apigee-service apigee-cassandra enable_cassandra_authentication

    Remarques :

    • Pour les identifiants Cassandra par défaut, la commande ci-dessus active l'authentification Cassandra et redémarre Cassandra.
    • Pour les identifiants autres que ceux par défaut, la commande modifie également le facteur de réplication, crée un super-utilisateur et exécute une réparation sur system_auth keyspace.
  3. Répétez les étapes 1 et 2 sur tous les nœuds Cassandra.