Utiliser Datadog CoTerm

Consulter les sessions de terminal enregistrées

Au début et à la fin de chaque session de terminal enregistrée, CoTerm affiche un lien pour consulter la session dans Datadog. Vous pouvez également consulter toutes les sessions de terminal enregistrées.

Structure de commande de la CLI CoTerm

ddcoterm [OPTIONS] [-- <COMMAND>...] [COMMAND]

Exécutez ddcoterm --help pour toutes les options et commandes.

Enregistrer une session de terminal

CoTerm enregistre des sessions de terminal que vous pouvez relire et consulter dans Datadog. Pour votre sécurité, les données sensibles (telles que les mots de passe et les clés d’API) sont automatiquement supprimées. Tous les processus lancés dans la session de terminal sont enregistrés en tant qu’événements.

Lancer et enregistrer une session de terminal interactive

Pour lancer manuellement Datadog CoTerm et enregistrer l’intégralité de votre session de terminal :

ddcoterm

Lorsque vous terminez la session, CoTerm arrête l’enregistrement et envoie les données de processus capturées à Datadog.

Enregistrer la sortie d’une commande

Pour exécuter une commande individuelle et enregistrer sa sortie :

ddcoterm -- datadog-agent status

Cela lance CoTerm et exécute datadog-agent status. Lorsque le processus se termine, CoTerm arrête l’enregistrement et envoie les données de processus capturées à Datadog.

Enregistrer automatiquement une commande

Pour configurer CoTerm afin d’enregistrer automatiquement toutes les invocations futures d’une commande particulière, créez un shim :

ddcoterm shim create datadog-agent

Après avoir créé un shim, redémarrez votre terminal ou sourcez votre profil. (Par exemple, exécutez source ~/.bashrc.) Si vous utilisez un shell autre que Bash ou Zsh, ajoutez path/to/.ddcoterm/overrides à votre PATH manuellement.

Protéger contre les commandes de terminal dangereuses

Pour éviter l’exécution accidentelle de commandes de terminal désignées, vous pouvez configurer CoTerm pour qu’il agisse comme un linter. Pour plus de contrôle, vous pouvez utiliser CoTerm avec la gestion des cas Datadog pour exiger une approbation pour les commandes désignées.

Linter une commande

Lorsque vous essayez d’exécuter une commande désignée (par exemple, kubectl scale), CoTerm peut afficher des avertissements et vous inviter à confirmer.

  1. Créez un shim pour votre commande : ddcoterm shim create kubectl

  2. Configurez une règle de linting dans votre fichier .ddcoterm/config.yaml. Pour plus de détails sur la configuration du linting dans CoTerm, consultez la section Règles de configuration CoTerm.

    .ddcoterm/config.yaml

    process_config:
      commands:
        - command: "kubectl"
          lints:
            - |
              if has_arg("scale") and flags.context == nil then
                return string.format("No kubectl context specified (effective context: '%s'). It is recommended to always explicitly specify the context when running `kubectl scale`.", k8s_context)
              end
       

Avec cette configuration, CoTerm intercepte toute commande kubectl scale sans flag --context.

Interface de ligne de commande. L'utilisateur a exécuté 'kubectl scale foo'. La sortie indique 'Warning from CoTerm: No kubectl context specified (effective context: 'minikube'). It is recommended to always explicitly specify the context when running kubectl scale. Do you want to continue? (y/n)'

Exiger une approbation pour les commandes

Pour les commandes encore plus dangereuses, CoTerm peut exiger une approbation explicite d’un autre membre de l’équipe (via la gestion des cas) avant d’exécuter la commande.

  1. Créez un shim pour votre commande : ddcoterm shim create kubectl

  2. Configurez l’exigence d’approbation dans votre fichier .ddcoterm/config.yaml. Pour plus de détails, consultez la section Règles de configuration CoTerm.

    .ddcoterm/config.yaml

    process_config:
      commands:
        - command: "kubectl"
          rules:
            # Enregistrer et exiger une approbation pour toutes les exécutions de `kubectl scale` dans un contexte de production
            - rule: |
                local applicable = has_arg("scale") and k8s_context:match("prod")
                local user_message = "Proceed with caution. This command may disrupt your Kubernetes cluster setup."
                local approver_message = "Ensure that the user has documented a rollback plan before approving."
                return applicable, user_message, approver_message
              actions: ["record", "logs", "process_info", "approval"]
       

Avec cette configuration, lorsque vous exécutez une commande kubectl scale --context prod, CoTerm crée une demande d’approbation dans la gestion des cas. Si vous choisissez d’associer la demande d’approbation à un incident actif, les autres intervenants en cas d’incident sont automatiquement ajoutés en tant qu’approbateurs. Une fois cette demande approuvée, votre commande s’exécute. Vous pouvez également configurer des règles d’automatisation de cas pour déclencher des workflows en fonction des demandes d’approbation.

Exiger manuellement une approbation

Pour créer une demande d’approbation manuellement, exécutez :

ddcoterm approve

Contourner l’approbation

Pour contourner l’approbation et exécuter votre commande, définissez la variable d’environnement COTERM_BREAK_GLASS.

Exemple :

COTERM_BREAK_GLASS=true kubectl delete foo

Pour aller plus loin