Technique

Comment éviter une intrusion sur le serveur Elasticsearch

Si vous travaillez dans le domaine technologique, vous avez déjà probablement rencontré l'expression « intrusion dans le serveur ». Si vous travaillez dans un autre domaine, vous avez certainement eu vent de violations de serveur ou de données et de failles de sécurité ayant permis à des utilisateurs malveillants d'accéder à des données privées et personnelles. Parmi ces données, des coordonnées de carte bancaire, des numéros de sécurité sociale et d'autres informations que vous préféreriez garder pour vous-même et que vous n'avez pas envie de voir traîner sur le dark web.

Un logiciel, quel qu'il soit, peut être confronté à une violation ou une attaque. Cela s'applique notamment à Elasticsearch, un projet logiciel open source développé par Elastic. Il y a eu des exemples de données qui n'était pas stockées de façon sécurisée dans Elasticsearch et qui ont fuité, ont été perdues, ou volées.

Comment éviter une intrusion sur le serveur Elasticsearch

Dans cet article, nous allons voir comment les violations de données surviennent et comment les utilisateurs peuvent mieux s'en protéger dans Elasticsearch. Commençons par quelques informations de base. Si vous préférez, toutefois, vous pouvez accéder directement à la section : Comment sécuriser Elasticsearch ?

Qu'est-ce qu'Elasticsearch ?

Elasticsearch est un moteur d'analyse et de recherche open source, ainsi qu'un datastore. Avec plusieurs centaines de millions de téléchargements, c'est un moteur extrêmement populaire. Sa vitesse, son scaling et sa pertinence de recherche sont des atouts précieux. Mais s'il est aussi populaire, c'est aussi en grande partie grâce à sa facilité d'utilisation, sa capacité à prendre en charge tout type de données (textuelles, numériques, géospatiales, etc.), son ensemble robuste de fonctionnalités et le fait que n'importe qui puisse suggérer un correctif à un bug ou une amélioration (étant donné qu'il s'agit d'un moteur open source).

Pour illustrer ce propos, imaginez que vous disposiez d'une feuille de calcul ayant des milliards de ligne, et que vous soyez toujours capable de rechercher un élément et d'effectuer un calcul en une fraction de seconde. C'est ainsi que fonctionne Elasticsearch. Et il est très bon dans ce qu'il fait ! C'est pourquoi un grand nombre d'entreprises utilisent Elasticsearch pour différentes raisons, que ce soit pour booster la recherche sur leurs sites d'e-commerce, pour analyser les données envoyées depuis des rovers sur Mars ou encore pour s'assurer qu'un covoiturage arrivera à l'heure.

Qui est Elastic ? Est-ce que vous détenez mes données ?

Elastic est l'entreprise qui développe Elasticsearch, ainsi que d'autres produits de la Suite Elastic (Kibana, Beats, Logstash, etc.). Et Elasticsearch constitue la colonne vertébrale d'un grand nombre de solutions, parmi lesquelles Search, Observability, Security, et bien plus encore.

Et pour répondre à votre question de façon courte, non, nous ne détenons pas vos données. Nous développons Elasticsearch, que d'autres entreprises exécutent ensuite en local ou dans une infrastructure cloud. 

Pour répondre de manière un peu plus détaillée, peut-être. Certaines entreprises utilisent Elastic Cloud, notre offre Elasticsearch gérée. C'est à nous qu'il incombe d'assurer la maintenance des données que nos clients placent dans Elastic Cloud, et notamment de les sécuriser. C'est pourquoi l'ensemble de nos déploiements d'Elasticsearch Service sont sécurisés par défaut.

Où Elasticsearch conserve-t-il ses données ?

Étant donné qu'Elasticsearch est open source (ce qui signifie que n'importe qui peut le télécharger et l'installer gratuitement), il peut être installé presque partout. Certaines entreprises le téléchargent et l'installent sur leurs propres serveurs internes, tandis que d'autres l'installent dans le cloud (sur le fournisseur de leur choix). Certaines entreprises de services cloud proposent également des versions gérées d'Elasticsearch, ce qui signifient qu'elles hébergent et administrent des clusters Elasticsearch (c'est comme ça que nous les appelons) pour des clients. 

À vrai dire, Elastic propose également sa propre version gérée d'Elasticsearch Service sur Elastic Cloud. Avec cette version, nous proposons des services de gestion complets (y compris la sécurité par défaut) et nous vous permettons de choisir un fournisseur cloud parmi ceux que nous avons sélectionnés pour l'infrastructure.

Comment une violation peut-elle se produire sur les serveurs Elasticsearch ?

Il existe bien des façons de compromettre des datastores, que ce soit par des mots de passe volés ou par des actes de malveillance de pirates ou d'employés mécontents. Dans le cas d'Elasticsearch, le scénario de violation le plus courant vient de la mauvaise sécurisation d'un cluster sur Internet, car n'importe qui peut se connecter et accéder aux données sans avoir besoin d'un nom d'utilisateur ni d'un mot de passe. Ces clusters non sécurisés sont souvent identifiés par des chercheurs en sécurité, qui publient alors leurs conclusions, et c'est ainsi que tout le monde sait que les données sont accessibles sur Internet.

Lorsqu'un cluster Elasticsearch est bien sécurisé, il n'est pas plus exposé au risque de violation que n'importe quelle autre base de données. Et c'est pour cette raison que nous fournissons les fonctionnalités (gratuites et par défaut) nécessaires pour sécuriser un cluster Elasticsearch à quiconque télécharge et utilise la Suite Elastic. Voyons quelques actions que les utilisateurs d'Elasticsearch peuvent exécuter pour être sûrs qu'ils utilisent ces fonctionnalités et garantissent la sécurité de leurs clusters.

Comment sécuriser Elasticsearch ?

Nous intégrons les fonctionnalités de sécurité Elasticsearch dans notre distribution gratuite par défaut (niveau Basic), ce qui signifie que n'importe quel utilisateur peut configurer la sécurité de son cluster Elasticsearch pour éviter les fuites de données involontaires. Avant d'aborder ces fonctionnalités plus en détail, voyons d'abord comment déterminer si votre cluster est déjà sécurisé ou non.

Comment vérifier si mon cluster Elasticsearch est sécurisé ou non ?

Si vous êtes un utilisateur ou un administrateur d'Elasticsearch, vous pouvez effectuer au préalable quelques actions pour déterminer si la sécurité est activée et qu'elle fonctionne. 

Le plus simple est d'interroger l'API des paramètres. Si vous émettez la requête suivante :

GET _xpack/usage?filter_path=security

Vous obtiendrez un résultat similaire à celui ci-dessous si la sécurité est désactivée :

{ 
  "security" : { 
    "available" : true, 
    "enabled" : false, // Si la sécurité est désactivée, le paramètre indiqué est "false" 
    "ssl" : { 
      "http" : { 
        "enabled" : false 
      }, 
      "transport" : { 
        "enabled" : false 
      } 
    } 
  } 
}

Ou le résultat suivant si la sécurité fonctionne correctement :

{ 
  "security" : { 
    "available" : true, 
    "enabled" : true, // Lorsque la sécurité est activée, le paramètre indiqué est "true"
    "realms" : { ... }, 
    "roles" : { ... }, 
    "role_mapping" : { ... }, 
    "ssl" : { 
      "http" : { 
        "enabled" : true 
      }, 
      "transport" : { 
        "enabled" : true 
      } 
  }, 
  "token_service" : { ... }, 
  "api_key_service" : { ... }, 
  "audit" : { ... }, 
  "ipfilter" : { ... }, 
  "anonymous" : { ... } 
  } 
}

Comme vous pouvez le constater, les résultats sont assez différents. Selon la version et le niveau de licence que vous avez déployés, ces résultats peuvent varier légèrement.

Comment m'assurer que mon cluster Elasticsearch est sécurisé ?

Voici les deux actions que vous pouvez réaliser pour faire en sorte qu'aucune personne extérieure ne puisse accéder à vos clusters Elasticsearch :

  1. Activer l'authentification, afin que personne ne puisse accéder sans s'authentifier dans Elasticsearch.
  2. Activer le chiffrement TLS, afin que personne ne puisse espionner les données Elasticsearch circulant sur votre réseau.

Nous disposons d'un grand nombre de ressources disponibles (répertoriées à la fin de l'article) qui expliquent comment sécuriser Elasticsearch, et notamment, comment mettre en œuvre facilement les deux recommandations indiquées ci-dessus. Néanmoins, le plus rapide est de consulter notre article de blog Prise en main de la sécurité Elasticsearch (TLS et RBAC) et la vidéo qui l'accompagne, Sécurisation d'Elasticsearch en 7 minutes.

Nous avons aussi un bouton simple pour tout ça dans Elasticsearch Service sur Elastic Cloud. Lorsque vous utilisez Elasticsearch Service, vous pouvez être sûr que la sécurité y est automatiquement configurée pour chaque cluster.

La sécurité est l'affaire de tous

Si vous avez des questions, nous sommes à votre disposition. Il y a de nombreuses façons de prendre part à la communauté Elastic, telles que les forums, les événements locaux et de nombreuses documentations (très nombreuses !). Nous cherchons également à simplifier davantage la sécurisation d'Elasticsearch. Surveillez nos blogs pour connaître les nouveautés à venir et ce que nous vous préparons pour l'avenir. Si vous êtes fan de Spiderman, la réplique suivante vous dira forcément quelque chose : « Un grand pouvoir implique de grandes responsabilités ». Et c'est vrai pour Elastic et pour quiconque utilise Elasticsearch pour stocker des données.

Pour aller plus loin sur la sécurisation d'Elasticsearch

Articles de blog

Vidéos

Documentation

Formation