Vault

Supported OS Linux Mac OS Windows

Présentation

Ce check surveille la santé du cluster Vault et les changements de leader.

Configuration

Installation

Le check Vault est inclus avec le package de l’Agent Datadog. Vous n’avez donc rien d’autre à installer sur votre serveur.

Prérequis

  1. Vérifiez que vous avez activé les métriques Prometheus dans la configuration de Vault.

  2. Pour garantir le bon fonctionnement du check Vault, vous devez activer l’accès non authentifié aux métriques Vault (Vault 1.3.0+) ou fournir un token client Vault :

    Pour activer l’accès non authentifié, définissez le paramètre unauthenticated_metrics_access de Vault sur true. Cette opération permet d’accéder sans authentification à l’endpoint /v1/sys/metrics.

    Remarque : pour recueillir des métriques, l’endpoint /sys/metrics requiert Vault 1.1.0 ou ultérieur.

    Pour utiliser un token client Vault, suivez l’exemple ci-dessous reposant sur la méthode d’authentification JWT. Vous pouvez toutefois utiliser d’autres méthodes d’authentification.

L’intégration Vault nécessite la configuration suivante :

 Contenu de `metrics_policy.hcl` :
path "sys/metrics*" {
  capabilities = ["read", "list"]
}
  Rôle et stratégie de configuration :
$ vault policy write metrics /path/to/metrics_policy.hcl
$ vault auth enable jwt
$ vault write auth/jwt/config jwt_supported_algs=RS256 jwt_validation_pubkeys=@<CHEMIN_VERS_PEM_PUBLIC>
$ vault write auth/jwt/role/datadog role_type=jwt bound_audiences=<AUDIENCE> user_claim=name token_policies=metrics
$ vault agent -config=/path/to/agent_config.hcl

Contenu de agent_config.hcl :

exit_after_auth = true
pid_file = "/tmp/agent_pid"

auto_auth {
  method "jwt" {
    config = {
      path = "<CHEMIN_CLAIM_JWT>"
      role = "datadog"
    }
  }

  sink "file" {
    config = {
      path = "<CHEMIN_TOKEN_CLIENT>"
    }
  }
}

vault {
  address = "http://0.0.0.0:8200"
}

Configuration

Host

Pour configurer ce check lorsque l’Agent est exécuté sur un host :

  1. Modifiez le fichier vault.d/conf.yaml dans le dossier conf.d/ à la racine du répertoire de configuration de votre Agent pour commencer à recueillir vos données de performance vault. Consultez le fichier d’exemple vault.d/conf.yaml pour découvrir toutes les options de configuration disponibles.

    Configuration pour faire fonctionner l’intégration sans token (avec le paramètre de configuration Vault unauthenticated_metrics_access défini sur true) :

    init_config:
    
    instances:
        ## @param api_url - string - required
        ## URL of the Vault to query.
        #
      - api_url: http://localhost:8200/v1
    
        ## @param no_token - boolean - optional - default: false
        ## Attempt metric collection without a token.
        #
        no_token: true
    

    Configuration pour faire fonctionner l’intégration avec un token client :

    init_config:
    
    instances:
        ## @param api_url - string - required
        ## URL of the Vault to query.
        #
      - api_url: http://localhost:8200/v1
    
        ## @param client_token - string - optional
        ## Client token necessary to collect metrics.
        #
        client_token: <CLIENT_TOKEN>
    
        ## @param client_token_path - string - optional
        ## Path to a file containing the client token. Overrides `client_token`.
        ## The token will be re-read after every authorization error.
        #
        # client_token_path: <CLIENT_TOKEN_PATH>
    
  2. Redémarrez l’Agent.

Environnement conteneurisé

Consultez la documentation relative aux modèles d’intégration Autodiscovery pour découvrir comment appliquer les paramètres ci-dessous à un environnement conteneurisé.

ParamètreValeur
<NOM_INTÉGRATION>vault
<CONFIG_INIT>vide ou {}
<CONFIG_INSTANCE>{"api_url": "http://%%host%%:8200/v1"}

INSTANCE_CONFIG doit être personnalisé en fonction de votre configuration d’authentification Vault. Pour consulter un exemple de configuration, reportez-vous à la section Host ci-dessus.

Collecte de logs

Disponible à partir des versions > 6.0 de l’Agent

  1. La collecte de logs est désactivée par défaut dans l’Agent Datadog. Vous devez l’activer dans datadog.yaml :

    logs_enabled: true
    
  2. Configurez Vault de façon à activer les logs d’audit et serveur.

    • Les logs d’audit doivent être activés par un utilisateur disposant des privilèges et des stratégies nécessaires. Consultez la section Enabling audit devices (en anglais) pour en savoir plus.

      vault audit enable file file_path=/vault/vault-audit.log
      
    • Assurez-vous que les logs serveur sont écrits dans un fichier. Vous pouvez configurer les logs serveur statiques dans le script de lancement systemd de Vault. Le script suivant permet d’écrire les logs dans /var/log/vault.log.

      ...
      [Service]
      ...
      ExecStart=/bin/sh -c '/home/vagrant/bin/vault server -config=/home/vagrant/vault_nano/config/vault -log-level="trace" > /var/log/vault.log
      ...
      
  3. Ajoutez ce bloc de configuration à votre fichier vault.d/conf.yaml pour commencer à recueillir vos logs Vault :

    logs:
      - type: file
        path: /vault/vault-audit.log
        source: vault
        service: "<SERVICE_NAME>"
      - type: file
        path: /var/log/vault.log
        source: vault
        service: "<SERVICE_NAME>"
    

Validation

Lancez la sous-commande status de l’Agent et cherchez vault dans la section Checks.

Données collectées

Métriques

Événements

vault.leader_change : Cet événement se déclenche en cas de changement de leader du cluster.

Checks de service

vault.can_connect :
Renvoie CRITICAL si l’Agent ne parvient pas à se connecter à Vault. Si ce n’est pas le cas, renvoie OK.

vault.unsealed :
Renvoie CRITICAL si Vault est scellé. Si ce n’est pas le cas, renvoie OK.

vault.initialized :
Renvoie CRITICAL si Vault n’est pas encore initialisé. Si ce n’est pas le cas, renvoie OK.

vault.prometheus.health :
Renvoie CRITICAL si le check ne parvient pas à se connecter à l’endpoint de métriques. Si ce n’est pas le cas, renvoie OK.

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.

Pour aller plus loin

Documentation, liens et articles supplémentaires utiles :

PREVIEWING: may/embedded-workflows