Configurer Transport Layer Security (TLS/SSL) dans Elasticsearch - 7.1

Guide d'installation de Talend Real-Time Big Data Platform pour Windows

EnrichVersion
7.1
EnrichProdName
Talend Real-Time Big Data Platform
task
Installation et mise à niveau
EnrichPlatform
Studio Talend
Talend Activity Monitoring Console
Talend Administration Center
Talend Artifact Repository
Talend CommandLine
Talend Data Preparation
Talend Data Stewardship
Talend DQ Portal
Talend ESB
Talend Identity and Access Management
Talend Installer
Talend JobServer
Talend Log Server
Talend Repository Manager
Talend Runtime
Talend SAP RFC Server

Si vous avez une licence ,hors version d'essai, et que vous voulez utiliser les fonctionnalités de sécurité de X-Pack, vous devez configurer le TLS pour la communication entre les nœuds.

Procédure

  1. Créez une autorité de certification/de signature :
    1. Par exemple, lancez la commande suivante :
      elasticsearch-6.1.2/bin/x-pack/certgen --dn 'CN=MyExample Global CA' --pass --days 3650 --keysize 4096 --out elk_ca/ELK_CA.zip
      Pour plus d'informations, consultez la documentation de certgen : https://www.elastic.co/guide/fr/elasticsearch/reference/6.x/certgen.html (en anglais).
    2. Lorsque vous y êtes invité, saisissez le mot de passe sélectionné ou généré.
      Enregistrez le mot de passe car vous ne pourrez pas le récupérer par la suite. Ce mot de passe est utilisé pour signer les certificats.
      Cette commande produit en sortie un fichier zip qui contient le certificat public et la clé privée de votre autorité de certification racine.
    3. Dézippez le fichier zip généré à l'étape précédente.

      Seul le fichier ca/ca.crt est distribué. Le fichier ca/ca.key doit être stocké à un autre emplacement pour des raisons de sécurité, ainsi que le mot de passe généré précédemment. Vous en aurez besoin pour déchiffrer le fichier ca/ca.key.

  2. Générez les certificats de serveurs :
    1. Créez un nouveau fichier instance.yml.
      instances:
        - name: 'node1'
          dns: [ 'node1.local' ]
        - name: 'my-kibana'
          dns: [ 'kibana.local' ]
        - name: 'logstash'
          dns: [ 'logstash.local' ]

      Cet exemple générera le certificat public et la clé privée pour le nœud Elasticsearch node, Kibana et Logstash. Pour utiliser ces certificats, vous aurez besoin d'un nom de DNS correctement configuré.

    2. Vous pouvez modifier le fichier /etc/hosts pour rendre les noms de DNS valides à des fins de tests, comme suit :
      127.0.0.1 localhost node1.local  kibana.local logstash.local
    3. Lancez la commande suivante pour générer des certificats qui seront valides pendant trois ans pour chacune des instances :
      elasticsearch-6.1.2/bin/x-pack/certutil ca elasticsearch-6.1.2/bin/x-pack/certgen --days 1095 --cert elk_ca/ca/ca.crt --key elk_ca/ca/ca.key --pass --in  instances.yml --out certs.zip
      Cette commande utilise le certificat et la clé nécessaires pour la signature, créés précédemment. L'option --pass demandera le mot de passe nécessaire pour déchiffrer la clé privé de l'autorité de signature.
    4. Dézippez le fichier certs.zip généré.
  3. Activez le TLS sur les nœuds Elasticsearch :
    1. Créez un sous-dossier certs dans le dossier config d'Elasticsearch.
    2. Copiez le fichier ca/ca.crt, la clé privée du nœud et le certificat public dans le dossier config/certs.
    3. Modifiez le fichier config/elasticsearch.yml comme suit :
      node.name: node1
      network.host: node1.local
      xpack.ssl.key: certs/node1.key
      xpack.ssl.certificate: certs/node1.crt
      xpack.ssl.certificate_authorities: certs/ca.crt
      xpack.security.transport.ssl.enabled: true
      xpack.security.http.ssl.enabled: true
      discovery.zen.ping.unicast.hosts: [ 'node1.local']
      node.max_local_storage_nodes: 1
    4. Lancez la commande suivante pour démarrer le nœud Elasticsearch :
      ES_PATH_CONF=config ./bin/elasticsearch
    5. Lancez la commande suivante pour vérifier la valeur du paramètre vm.max_map_count sur la machine hôte Docker :
      sysctl vm.max_map_count
    6. Si la valeur est inférieure à 262144, lancez la commande suivante :
      sysctl -w vm.max_map_count=262144
    7. Ouvrez une invite de commande et allez dans le dossier d'Elasticsearch :
      cd ~/tmp/cert_blog/elasticsearch-6.0.0-beta2
      $ bin/x-pack/setup-passwords auto -u "https://node1.local:9200"
    8. Lorsque vous y êtes invité, saisissez y pour poursuivre et enregistrez les mots de passe pour les utilisateurs elastic, kibana, logstash_system.
  4. Lancez la commande suivante pour vérifier que les nœuds sont bien listés dans le cluster :
    curl --cacert elk_ca/ca/ca.crt -u elastic 'https://node1.local:9200/_cat/nodes'
    127.0.0.1 42 100 14 1.91   mdi * node1

    Ajoutez ?v à la fin de l'URL pour obtenir le nom des colonnes. Pour plus d'informations, consultez https://www.elastic.co/guide/fr/elasticsearch/reference/6.x/cat.html#verbose.