録画されたターミナルセッションの閲覧
すべてのターミナルセッションを録画すると、その冒頭と終了時に、Datadog 上でそのセッションを閲覧できるリンクが CoTerm によって表示されます。また、すべての録画済みターミナルセッションを表示することもできます。
CoTerm CLI のコマンド構造
ddcoterm [OPTIONS] [-- <COMMAND>...] [COMMAND]
すべてのオプションとコマンドを確認するには、ddcoterm --help
を実行してください。
ターミナルセッションを録画する
CoTerm は、ターミナルセッションを録画し、Datadog で再生やレビューを行えるようにします。セキュリティのため、パスワードや API キーなどの機密データは自動的にマスクされます。ターミナルセッション内で起動されたすべてのプロセスはイベントとして記録されます。
対話型ターミナルセッションの起動と録画
Datadog CoTerm を手動で起動し、ターミナルセッション全体を録画するには、以下の操作を行います:
セッションを終了すると、CoTerm は録画を停止し、収集したプロセスデータを Datadog に送信します。
コマンドの出力を録画する
個別のコマンドを実行して、その出力を録画するには以下を行います:
ddcoterm -- datadog-agent status
この操作により CoTerm が起動し、datadog-agent status
を実行します。プロセスが完了すると、CoTerm は録画を停止して収集したプロセスデータを Datadog に送信します。
コマンドを自動的に録画する
特定のコマンドを将来すべて自動的に録画するよう CoTerm を設定するには、まず shim を作成します:
ddcoterm shim create datadog-agent
shim を作成したら、ターミナルを再起動するか、プロファイルを再読み込みしてください (例: source ~/.bashrc
)。Bash や Zsh 以外のシェルを使用している場合は、手動で path/to/.ddcoterm/overrides
を PATH に追加します。
危険なターミナルコマンドから保護する
誤って指定したターミナルコマンドを実行しないようにするため、CoTerm をリントツールとして構成できます。より詳細な制御が必要な場合は、Datadog Case Management と連携し、特定のコマンドに承認を必須とすることも可能です。
コマンドをリントする
指定したコマンド (例: kubectl scale
) を実行しようとすると、CoTerm は警告を表示し、確認を求めるプロンプトを出すことができます。
コマンド用の shim を作成します: ddcoterm shim create kubectl
その後、.ddcoterm/config.yaml
ファイルでリントルールを設定します。CoTerm でのリント設定方法の詳細は CoTerm 設定ルールを参照してください。
process_config:
commands:
- command: "kubectl"
lints:
- |
if has_arg("scale") and flags.context == nil then
return string.format("kubectl のコンテキストが指定されていません (有効なコンテキスト: '%s')。`kubectl scale` を実行する際には、常にコンテキストを明示的に指定することを推奨します。", k8s_context)
end
この構成により、--context
フラグなしで実行される kubectl scale
コマンドを CoTerm がインターセプトします。
コマンドに承認を必須とする
さらに危険なコマンドに対しては、CoTerm でコマンドを実行する前に (Case Management を通じて) チームメンバーの明示的な承認を必要とさせることができます。
コマンド用の shim を作成します: ddcoterm shim create kubectl
.ddcoterm/config.yaml
ファイルで承認必須の設定を行います。詳細は CoTerm 設定ルールを参照してください。
process_config:
commands:
- command: "kubectl"
rules:
# すべての `kubectl scale` を本番環境で実行する際に記録と承認を必須にする
- rule: |
local applicable = has_arg("scale") and k8s_context:match("prod")
local user_message = "注意して進めてください。このコマンドは Kubernetes クラスターのセットアップを破壊する可能性があります。"
local approver_message = "承認前に、ユーザーがロールバックプランを明確に記載していることを確認してください。"
return applicable, user_message, approver_message
actions: ["record", "logs", "process_info", "approval"]
この構成では、kubectl scale --context prod
コマンドを実行すると、CoTerm が Case Management 内に承認リクエストを作成します。アクティブなインシデント に承認リクエストを関連付ける場合、他のインシデント対応者が承認者として自動的に追加されます。リクエストが承認された後、コマンドは実行されます。また、承認リクエストに基づいてワークフローをトリガーするケース自動化ルールを構成することも可能です。
承認を手動で要求する
手動で承認リクエストを作成するには、以下を実行します:
承認をバイパスする
承認をバイパスしてコマンドを実行するには、COTERM_BREAK_GLASS
環境変数を設定します。
例:
COTERM_BREAK_GLASS=true kubectl delete foo
参考資料