12.3 Sécurisation des données dans Elasticsearch

Les nœuds de grappe Elasticsearch sont accessibles à divers clients réseau, notamment les suivants :

  • Sentinel : pour récupérer et présenter les données d'événements dans le tableau de bord de visualisation des événements.

  • Tâches Spark s'exécutant sur les nœuds NodeManager YARN : pour effectuer l'indexation en masse des événements provenant de Kafka. (pour SSDM)

  • Collector Manager : pour effectuer l'indexation en masse d'événements dans Sentinel avec un stockage traditionnel.

  • Autres clients externes : pour effectuer des opérations personnalisées telles que les analyses personnalisées.

Sentinel fournit un plug-in de sécurité pour Elasticsearch nommé elasticsearch-security-plugin qui authentifie et autorise les accès à Elasticsearch.

Le plug-in utilise un jeton SAML ou une liste blanche pour la validation en fonction de la manière dont les clients se connectent :

  • Lorsqu'un client envoie un jeton SAML de pair avec la requête, le plug-in authentifie le jeton par rapport au serveur d'authentification de Sentinel. Une fois l'authentification réussie, le plug-in permet d'accéder uniquement aux événements filtrés pour lesquels le client dispose d'une autorisation.

    Par exemple, le tableau de bord de visualisation des événements (client) affiche uniquement les événements d'Elasticsearch qu'un rôle d'utilisateur est autorisé à afficher.

    Pour plus d'informations sur les rôles et les autorisations, reportez-vous à la section Creating a Role (Création d'un rôle) du Sentinel Administration Guide (Guide d'administration de Sentinel).

  • Lorsqu'un client ne peut pas envoyer de jeton SAML, le plug-in vérifie sa liste blanche de clients autorisés. Si la validation réussit, le plug-in autorise l'accès à tous les événements sans filtrage.

  • Lorsqu'un client n'envoie pas de jeton SAML valide ou n'est pas autorisé par la liste blanche, le plug-in le considère comme étant un client illégitime et lui interdit l'accès.

Cette section fournit des informations sur l'installation et la configuration du plug-in de sécurité Elasticsearch :

12.3.1 Installation du plug-in de sécurité Elasticsearch

Vous devez installer le plug-in de sécurité Elasticsearch sur chaque nœud de la grappe Elasticsearch ainsi que sur le nœud Elasticsearch inclus dans Sentinel.

Pour installer le plug-in de sécurité Elasticsearch sur le nœud Elasticsearch inclus dans Sentinel :

  1. Connectez-vous au serveur SSDM ou Sentinel principal.

  2. Définissez le chemin d'accès pour la variable d'environnement JAVA_HOME comme suit :

    export JAVA_HOME=/<Sentinel_installation_path>/opt/novell/sentinel/jdk/
  3. Installez le plug-in :

    Pour Linux, connectez-vous sous l'identité de l'utilisateur exécutant Elasticsearch et exécutez la commande suivante :

    <sentinel_installation_path>/opt/novell/sentinel/3rdparty/elasticsearch/bin/elasticsearch-plugin install file://localhost/<Sentinel_installation_path>/etc/opt/novell/sentinel/scalablestore/elasticsearch-security-plugin*.zip --verbose

    Lorsque vous êtes invité à poursuivre l'installation, entrez y.

  4. (Conditionnel) Si Elasticsearch n'écoute pas sur le port HTTP par défaut (9200), vous devez mettre à jour le numéro de port Elasticsearch dans chaque entrée du fichier <chemin_installation_sentinel>/opt/novell/sentinel/3rdparty/elasticsearch/plugins/elasticsearch-security-plug-in/elasticsearch-ip-whitelist.txt.

    Pour plus d'informations, reportez-vous à la section Fournir un accès à des clients Elasticsearch à l'aide d'une liste blanche.

  5. Redémarrez les services d'indexation de Sentinel à l'aide de la commande :

    rcsentinel stopSIdb
    rcsentinel startSIdb

Pour installer le plug-in de sécurité Elasticsearch sur des nœuds Elasticsearch externes :

Effectuez les opérations suivantes sur chaque nœud de la grappe Elasticsearch :

  1. Connectez-vous au serveur SSDM ou Sentinel principal.

  2. Copiez le fichier <chemin_installation_sentinel>/etc/opt/novell/sentinel/scalablestore/elasticsearch-security-plugin*.zip à un emplacement temporaire sur chaque nœud de la grappe Elasticsearch.

  3. Installez le plug-in :

    Pour Linux, connectez-vous sous l'identité de l'utilisateur exécutant Elasticsearch et exécutez la commande suivante :

    <elasticsearch_install_directory>/bin/elasticsearch-plugin install file://localhost/<full path of elasticsearch-security-plugin*.zip file> --verbose

    Lorsque vous êtes invité à poursuivre l'installation, entrez y.

  4. (Conditionnel) Si Elasticsearch n'écoute pas sur le port HTTP par défaut (9200), vous devez mettre à jour le numéro de port Elasticsearch dans chaque entrée du fichier <elasticsearch_install_directory>/plugins/elasticsearch-security-plugin/elasticsearch-ip-whitelist.txt.

    Pour plus d'informations, reportez-vous à la section Fournir un accès à des clients Elasticsearch à l'aide d'une liste blanche.

  5. Redémarrez Elasticsearch.

12.3.2 Fournir un accès sécurisé à des clients Elasticsearch supplémentaires

Par défaut, les clients approuvés, tels que le serveur SSDM (pour le tableau de bord de visualisation des événements) et YARN NodeManager, le serveur Sentinel (pour le tableau de bord de visualisation des événements) et RCM ont accès à Elasticsearch. Si vous souhaitez utiliser des clients Elasticsearch supplémentaires, vous devez fournir un accès sécurisé à ces clients supplémentaires à l'aide d'un jeton SAML ou d'une liste blanche.

Fournir un accès à des clients Elasticsearch REST à l'aide d'un jeton SAML

Si vous utilisez un client REST pour accéder à Elasticsearch, vous pouvez inclure un jeton SAML dans l'en-tête de requête comme suit :

  1. Obtenez un jeton SAML à partir du serveur d'authentification Sentinel. Pour plus d'informations, reportez-vous à la documentation de l'API REST disponible dans Sentinel.

    Cliquez sur Help (Aide) > APIs (API) > Tutorial (Didacticiel) > API Security (Sécurité API) > Obtaining a SAML Token (Logon) (Obtenir un jeton SAML (ouverture de session)).

  2. Utilisez le jeton SAML dans les requêtes REST suivantes : incluez le jeton SAML dans l'en-tête d'autorisation de chaque requête effectuée par le client REST. Indiquez le nom d'en-tête Authorization (Autorisation) et la valeur d'en-tête en tant que <jeton SAML> obtenue à l'étape 1.

Fournir un accès à des clients Elasticsearch à l'aide d'une liste blanche

Par défaut, Sentinel remplit automatiquement une liste blanche avec les adresses IP des clients Elasticsearch approuvés, tels que le serveur SSDM (pour le tableau de bord de visualisation des événements) et YARN NodeManager, le serveur Sentinel (pour le tableau de bord de visualisation des événements) et RCM. Le plug-in de sécurité Elasticsearch accorde l'accès à Elasticsearch à tous les clients répertoriés dans sa liste blanche.

Pour accorder un accès à des clients supplémentaires qui n'envoient pas de jeton Sentinel valide, vous devez ajouter l'adresse IP du client et le numéro de port HTTP du serveur Elasticsearch à la liste blanche au format adresse IP:port. Vous devez vous assurer que les clients externes que vous ajoutez à la liste blanche sont légitimes et dignes de confiance pour empêcher tout accès non autorisé.

Pour mettre à jour la liste blanche, procédez comme suit :

  1. Connectez-vous au serveur Sentinel ou au nœud Elasticsearch sous l'identité de l'utilisateur exécutant Elasticsearch.

  2. Ajoutez l'entrée <Elasticsearch_Client_IP>:<Target_Elasticsearch_HTTP_Port> dans le fichier :

    • <chemin_installation_sentinel>/opt/novell/sentinel/3rdparty/elasticsearch/plugins/elasticsearch-security-plugin//elasticsearch-ip-whitelist.txt pour le noeud Elasticsearch inclus dans Sentinel.

    • <elasticsearch_install_directory>/plugins/elasticsearch-security-plugin/elasticsearch-ip-whitelist.txt pour les nœuds Elasticsearch externes.

    S'il existe plusieurs entrées, ajoutez chaque entrée sur une nouvelle ligne et enregistrez le fichier.

  3. Répétez les étapes ci-dessus pour chaque nœud de la grappe Elasticsearch.

12.3.3 Mise à jour de la configuration du plug-in Elasticsearch

Si vous modifiez l'adresse IP/le nom d'hôte et le numéro de port des composants de stockage évolutifs ou le numéro de port et de version Elasticsearch, vous devez mettre à jour les fichiers de configuration du plug-in Elasticsearch en conséquence.

Effectuez les étapes suivantes sur chaque nœud de la grappe Elasticsearch :

  1. Connectez-vous au nœud Elasticsearch sous l'identité de l'utilisateur qui exécute Elasticsearch.

  2. (Conditionnel) Si vous avez modifié les adresses IP de YARN NodeManager, l'adresse IP de SSDM ou du serveur Sentinel, les adresses IP de RCM ou le numéro de port Elasticsearch, mettez à jour la liste blanche en conséquence afin de vous assurer que le plug-in de sécurité Elasticsearch accorde l'accès aux clients Elasticsearch.

    Si vous configurez SSDM ou Sentinel en mode haute disponibilité, ajoutez des entrées pour l'adresse IP physique de chaque nœud actif et nœud passif de la grappe haute disponibilité.

    Si vous modifiez l'adresse IP physique d'un nœud de la grappe haute disponibilité ou ajoutez un nouveau nœud à la grappe haute disponibilité, mettez à jour la liste blanche avec les adresses IP physiques des nœuds qui ont été modifiés ou qui viennent d'être ajoutés.

    Pour plus d'informations, reportez-vous à la section Fournir un accès à des clients Elasticsearch à l'aide d'une liste blanche.

  3. (Conditionnel) Si vous avez modifié l'adresse IP de SSDM, l'adresse IP du serveur ou le numéro de port du serveur Web, mettez à jour les propriétés authServer.host et authServer.port dans les fichiers suivants et redémarrez Elasticsearch :

    • <chemin_installation_sentinel>/opt/novell/sentinel/3rdparty/elasticsearch/plugins/elasticsearch-security-plugin/plugin-configuration.properties pour le noeud Elasticsearch inclus dans Sentinel.

    • <elasticsearch_install_directory>/plugins/elasticsearch-security-plugin/plugin-configuration.properties pour les nœuds Elasticsearch externes.

    Si vous configurez SSDM ou Sentinel en mode haute disponibilité, définissez la propriété authServer.host sur l'adresse IP virtuelle de la grappe haute disponibilité.

    Si vous modifiez l'adresse IP virtuelle de la grappe haute disponibilité, mettez à jour la propriété authServer.host par rapport à l'adresse IP virtuelle modifiée.

  4. (Conditionnel) Si vous avez mis à niveau Elasticsearch vers une version plus récente, mettez à jour la propriété elasticsearch.version dans les fichiers suivants et relancez Elasticsearch :

    • /opt/novell/sentinel/3rdparty/elasticsearch/plugins/elasticsearch-security-plugin/plugin-descriptor.properties pour le nœud Elasticsearch inclus dans Sentinel.

    • <elasticsearch_install_directory>/plugins/elasticsearch-security-plugin/plugin-descriptor.properties pour les nœuds Elasticsearch externes.