Bloquer l'accès non autorisé

La nécessité de contrôler l’accès des utilisateurs

Pour empêcher tout accès non autorisé à votre grappe de recherche élastique, vous devez disposer d’un moyen d’authentifier les utilisateurs. Cela signifie simplement qu’il vous faut un moyen de valider qu’un utilisateur est bien celui qu’il prétend être. Dans de nombreux cas, il ne suffit pas d’authentifier les utilisateurs. Vous devez également pouvoir contrôler les données auxquelles les utilisateurs ont accès et les tâches qu’ils peuvent effectuer. Les fonctions de sécurité d’Elasticsearch vous permettent d’autoriser des utilisateurs, d’attribuer des privilèges d’accès à des rôles et d’assigner ces rôles aux utilisateurs.

Contrôle d’accès basé sur les rôles

Maintenant, examinons les éléments de sécurité. Les dispositifs de sécurité fournissent un mécanisme de contrôle d’accès basé sur les rôles (RBAC). L’utilisateur a accès à plusieurs rôles qui contiennent des autorisations différentes. Chaque permission est un ensemble de privilèges par rapport à une ressource sécurisée. Prenez le temps de comprendre l’architecture suivante et de vous familiariser avec les différentes terminologies :

  • User : l’authentification de l’utilisateur
  • Role : nom pour enregistrer les permissions
  • Permission : Ajout une ou plusieurs permissions (read, write)
  • Privilèges : les actions que peut faire l’utilisateur
  • Ressources sécurisé : les resources comme les aliases, les documents, les champs, les utilisateurs.

image.png

Utilisateurs et rôles intégrés

La fonction de sécurité Elastic Stack fournit un couple d’utilisateurs intégrés. Ils sont stockés dans l’index .security géré par Elasticsearch.

Ces utilisateurs ont un ensemble fixe de rôles, et leurs mots de passe doivent être configurés avant que vous ne les utilisiez. Pour ce faire, vous utilisez un outil dédié appelé elasticsearch-setup-passwords qui se trouve dans le dossier bin. Pour créer manuellement des mots de passe pour tous les utilisateurs intégrés, utilisez le mode interactif.

Examinons tous les utilisateurs intégrés :

Userdescription
elasticLes super-utilisateurs ont un accès complet au cluster. Avant de définir un mot de passe, il utilise un mot de passe d’amorçage par défaut.
kibanaL’utilisateur qui est utilisé par Kibana pour se connecter et communiquer avec Elasticsearch.
logstash_systemL’utilisateur utilisé par Logstash lors du stockage des informations de surveillance dans Elasticsearch.
beats_systemL’utilisateur que les différents Beats utilisent lors du stockage des informations de suivi dans Elasticsearch.
apm_systemL’utilisateur que le serveur APM utilise pour stocker les informations de surveillance dans Elasticsearch.
remote_monitoring_userL’utilisateur utilisé par Metricbeat lors de la collecte et du stockage des informations de suivi dans Elasticsearch.

Authentification classique

Il existe différentes façons d’authentifier les utilisateurs en utilisant différents domaines. Examinons le domaine natif, qui est le moyen le plus simple de gérer et d’authentifier les utilisateurs. Le domaine natif stocke les utilisateurs et les mots de passe dans un index de sécurité dédié.

Il existe également d’autres domaines que vous pouvez utiliser pour authentifier les utilisateurs en vous basant sur des services externes tels que AD ou LDAP. Si vous souhaitez en savoir plus sur les domaines externes, suivez notre cours “Advanced Techniques for Securing Elasticsearch”, qui sera bientôt disponible.

Vous apprendrez ci-dessous deux façons différentes de gérer vos utilisateurs : l’API de sécurité et Kibana.

API de sécurité

Vous pouvez gérer tous vos utilisateurs à l’aide d’une API dédiée. Cette API de sécurité vous permet d’écrire vos propres programmes et scripts qui interagissent avec la sécurité d’Elasticsearch. Toutes les requêtes de l’API de sécurité sont des requêtes HTTP sécurisées, et vous pouvez effectuer les tâches suivantes :

  • Créer et mettre à jour les utilisateurs
  • Créer et mettre à jour les rôles
  • Changer les mots de passe
  • Supprimer les utilisateurs/rôles
  • Désactiver/activer les utilisateurs
  • Obtenir des utilisateurs/rôles

Pour le démontrer, la demande POST suivante crée un nouvel utilisateur, nommé homer avec le mot de passe spécifié et d’autres détails. Notez qu’il existe une section de métadonnées facultative qui peut contenir toute information supplémentaire que vous souhaitez inclure pour vos utilisateurs.

POST /_security/user/homer
{
  "password" : "ilovedonuts123",
  "roles" : [ "safety_inspector"],
  "full_name" : "Homer Simpson",
  "email" : "homer@aol.com",
  "metadata" : {
    "hometown" : "Springfield"
  }
}

Questionnaire

Vous ne pouvez pas changer le mot de passe d’un utilisateur intégré une fois que le mot de passe est initialement configuré.

  • Vrai
  • Faux

Remplissez les blancs avec les termes corrects en faisant glisser chaque description à gauche sur la bonne réponse à droite :

  • Permissions
  • Roles
  • Privileges
  • Un rôle est un ensemble de différents …
  • Un utilisateur peut avoir différentes …
  • Le domaine natif stocke les utilisateurs, les mots de passe et les autorisations dans un fichier texte.

Le domaine natif stocke les utilisateurs, les mots de passe et les autorisations dans un fichier texte.

  • Vrai
  • Faux