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 :
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.
Créez un shim pour votre commande : ddcoterm shim create kubectl
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.
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.
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.
Créez un shim pour votre commande : ddcoterm shim create kubectl
Configurez l’exigence d’approbation dans votre fichier .ddcoterm/config.yaml. Pour plus de détails, consultez la section Règles de configuration CoTerm.
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 :
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
Documentation, liens et articles supplémentaires utiles: