Cassandra Security: Créer un utilisateur & Authentification avec JMX

Table des matières:

Anonim

Il existe deux types de sécurité dans Apache Cassandra et Datastax Enterprise.

  • Authentification interne
  • Autorisation

Dans ce tutoriel, vous apprendrez,

  • Qu'est-ce que l'authentification et l'autorisation internes
  • Configurer l'authentification et l'autorisation
  • Se connecter
  • Créer un nouvel utilisateur
  • Autorisation
  • Configurer le pare-feu
  • Activation de l'authentification JMX

Qu'est-ce que l'authentification et l'autorisation internes

L'authentification interne valide essentiellement la connexion de l'utilisateur. L'utilisateur est authentifié avec un identifiant et un mot de passe. Tous les comptes utilisateurs sont gérés dans Cassandra en interne.

L'autorisation interne concerne l'autorisation de l'utilisateur. Il traite des actions que l'utilisateur peut effectuer. Par exemple, nous pouvons donner l'autorisation à l'utilisateur, par exemple quel utilisateur n'a que l'autorisation de lecture de données, quel utilisateur a l'autorisation d'écriture de données et quel utilisateur a l'autorisation de suppression de données.

Cependant, l'authentification peut également être contrôlée en externe avec Kerberos (Kerberos est utilisé pour gérer les informations d'identification en toute sécurité) et LDAP (LDAP est utilisé pour conserver des informations faisant autorité sur les comptes, telles que ce à quoi ils sont autorisés à accéder).

L'authentification externe est l'authentification prise en charge avec Kerberos et LDAP. Apache Cassandra ne prend pas en charge l'authentification externe.

Seule l'entreprise datastax prend en charge l'authentification externe avec Kerberos et LDAP. Alors que l'authentification interne est prise en charge à la fois dans Apache Cassandra et Datastax Enterprise.

Configurer l'authentification et l'autorisation

Dans Cassandra, les options d'authentification et d'autorisation par défaut sont désactivées. Vous devez configurer le fichier Cassandra.yaml pour activer l'authentification et l'autorisation.

Ouvrez le fichier Cassandra.yaml et supprimez les commentaires des lignes qui traitent de l'authentification et de l'autorisation internes.

  • Dans le fichier Cassandra.yaml, par défaut, la valeur de l'authentificateur est «AllowAllAuthenticator». Remplacez cette valeur d'authentificateur de «AllowAllAuthenticator» par «com.datastax.bdp.cassandra.auth.PasswordAuthenticator».
  • De même, dans le fichier Cassandra.yaml, par défaut, la valeur de l'autorisation sera «AllowAllAuthorizor». Remplacez cette valeur d'autorisation par «AllowAllAuthorizor» par «com.datastax.bdp.cassandra.auth.CassandraAuthorizor».

Se connecter

Maintenant l'authentification est activée, si vous essayez d'accéder à n'importe quel espace de clés, Cassandra renverra une erreur.

Par défaut, Cassandra fournit au super compte le nom d'utilisateur «cassandra» et le mot de passe «cassandra». En vous connectant au compte «Cassandra», vous pouvez faire ce que vous voulez.

Voyons la capture d'écran ci-dessous pour cela, où elle ne vous permettra pas de vous connecter si vous n'utilisez pas le "nom d'utilisateur" et le "mot de passe" Cassandra par défaut.

Maintenant, dans la deuxième capture d'écran, vous pouvez voir qu'après avoir utilisé les informations de connexion par défaut de Cassandra, vous pouvez vous connecter.

Vous pouvez également créer un autre utilisateur avec ce compte. Il est recommandé de changer le mot de passe par défaut. Voici l'exemple de connexion de l'utilisateur Cassandra et de modification du mot de passe par défaut.

alter user cassandra with password 'newpassword';

Créer un nouvel utilisateur

De nouveaux comptes peuvent être créés avec le compte «Cassandra».

Pour créer un nouvel utilisateur, connectez-vous, le mot de passe est spécifié avec si l'utilisateur est super utilisateur ou non. Seul le super utilisateur peut créer de nouveaux utilisateurs.

create user robin with password 'manager' superuser;create user robin with password 'newhire';

Vous pouvez obtenir une liste de tous les utilisateurs à l'aide de la syntaxe suivante.

list users;

Les utilisateurs peuvent être supprimés par la syntaxe suivante.

drop user laura;

Autorisation

L'autorisation est l'attribution de l'autorisation aux utilisateurs sur l'action qu'un utilisateur particulier peut effectuer.

Voici la syntaxe générique pour attribuer des autorisations aux utilisateurs.

GRANT permission ON resource TO user

Les types d'autorisation suivants peuvent être accordés à l'utilisateur.

  1. TOUT
  2. MODIFIER
  3. AUTORISER
  4. CRÉER
  5. LAISSEZ TOMBER
  6. MODIFIER
  7. SÉLECTIONNER

Voici des exemples d'attribution d'une autorisation à l'utilisateur.

Create user laura with password 'newhire';grant all on dev.emp to laura;revoke all on dev.emp to laura;grant select on dev.emp to laura;

Un nouvel utilisateur «laura» est créé avec le mot de passe «newhire».

Voici l'exemple où l'utilisateur 'laura' tente d'accéder à la table emp_bonus. Laura n'a que l'autorisation d'accéder à dev.emp et aucune autorisation sur cette table dev.emp_bonus, c'est pourquoi une erreur a été renvoyée.

select* form emp_bonus;

Vous pouvez obtenir une liste de toutes les autorisations attribuées à l'utilisateur. Voici l'exemple d'obtention d'informations d'autorisation.

list all permissions of laura;

Vous pouvez également répertorier toutes les autorisations sur la ressource. Voici l'exemple d'obtention de l'autorisation d'une table.

list all permissions on dev.emp;

Configurer le pare-feu

Si le pare-feu est en cours d'exécution, les ports suivants doivent être ouverts pour la communication entre les nœuds, y compris certains ports Cassandra. Si les ports Cassandra ne sont pas ouverts, les nœuds Cassandra agiront en tant que serveur de base de données autonome plutôt que de rejoindre le cluster de bases de données.

Ports du client Cassandra

Numéro de port

Description

9042

Port client Cassandra

9160

Cassandra Client Port Thrift

Ports entre-nœuds Cassandra

Numéro de port

Description

7000

Communication de cluster entre nœuds Cassandra

7001

Communication de cluster entre nœuds Cassandra SSL

7199

Port de surveillance Cassandra JMX

Ports publics

Numéro de port

Description

22

Port SSH

8888

Site Web OpsCenter. Requête http du navigateur.

Ports Cassandra OpsCenter

Numéro de port

Description

61620

Port de surveillance OpsCenter.

61621

Port d'agent Opscenter

Activation de l'authentification JMX

Avec les paramètres par défaut de Cassandra, JMX n'est accessible qu'à partir de l'hôte local. Si vous souhaitez accéder à JMX à distance, modifiez le paramètre LOCAL_JMX dans Cassandra-env.sh et activez l'authentification ou SSL.

Après avoir activé l'authentification JMX, assurez-vous que OpsCenter et nodetool sont configurés pour utiliser l'authentification.

Procédure

Les étapes suivantes permettent d'activer l'authentification JMX.

  1. Dans le fichier cassandra-env.sh, ajoutez ou mettez à jour les lignes suivantes.
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

Modifiez également le paramètre LOCAL_JMX dans Cassandra-env.sh

LOCAL_JMX=no
  1. Copiez le modèle jmxremote.password.template de / jdk_install_location / lib / management / vers / etc / cassandra / et renommez-le en jmxremote.password.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. Remplacez la propriété de jmxremote.password par l'utilisateur avec lequel vous exécutez Cassandra et changez l'autorisation en lecture seule
chown cassandra:cassandra /etc/cassandra/jmxremote.passwordchmod 400 /etc/cassandra/jmxremote.password
  1. Modifiez jmxremote.password et ajoutez l'utilisateur et le mot de passe pour les utilitaires compatibles JMX:
monitorRole QEDcontrolRole R&Dcassandra cassandrapassword
  1. Ajoutez l'utilisateur Cassandra avec l'autorisation de lecture et d'écriture à /jdk_install_location/lib/management/jmxremote.access
monitorRole readonlycassandra readwritecontrolRole readwrite \create javax.management.monitor.,javax.management.timer. \unregister
  1. Redémarrez Cassandra
  2. Exécutez nodetool avec l'utilisateur et le mot de passe Cassandra.
$ nodetool status -u cassandra -pw cassandra

Résumé:

Ce didacticiel explique la sécurité dans Cassandra et la configuration du fichier Cassandra.yaml pour activer la sécurité. En plus de cela, il explique également comment un nouveau compte utilisateur peut être créé, l'attribution d'une autorisation, la configuration du pare-feu, etc.