今後は Datadog Agent の APIキー を環境変数に記述することにした
AI 時代の“誤投入リスク”をゼロにする設定方針
Datadog Agent のコンフィグで必ず指定するのが APIキー。APIキーが漏洩してもデータ取得はできないし、利用されてメトリクスを送信されても問題はないが、メトリクス送信の料金に影響したら困る。
今まで問題にはならなかったが、近ごろAIがAPIキーを読んでしまったので、念のためAPIキーをローテーションするようアドバイスされることがしばしばある。
(Before)Agent の datadog.yaml
今まで、Datadog Agent の設定ファイル /etc/datadog-agent/datadog.yaml に直接 API Key を記述していた。
api_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
site: datadoghq.com
hostname: xxxxxxxxxxxx
env: prod
「VS Code + Claude Code」などの生成AIを使っていると、コマンド出力結果をAIプロンプトに貼り付けしたとき、誤ってAPIキーを AI プロンプトへ投入してしまうミスが何度か発生した。
ミスでなくても、AIチャットで docker-compose の設定を調べていたとき、AIが 「重要: 調査中の検索結果に .env の API キー値が出力されました。ログに残る可能性があるため、今回ローテーションしたキーは再ローテーションしてからスクリプトを実行してください。」 のような警告を出したこともある。
そこで、面倒なAPIキーのローテーションをしなくて済むように、設定方式を見直しした。
APIキーは、Datadog用の環境変数ファイルに記述する
結論として、APIキー は datadog.yaml に書かず、環境変数ファイル environment に記述する。
■ Before(datadog.yaml 方式)
-
問題1:org で共通に使っていた APIキー を ローテーションする都度、全てのサーバーの datadog.yaml を書き換える必要があり、数時間を無駄にしていた
-
問題2:コマンド出力を AI に貼り付けた際、APIキー がそのまま AI に流出する事故が起きやすい
■ After(環境変数 environment 方式)
ディレクトリ /etc/datadog-agent/ に environment という中身が空のファイルがあった。
この environmentファイル が Datadog Agent 用の環境変数とのこと。
DD_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxx
そして datadog.yaml には APIキー を書かない
# api_key: <環境変数に記載した>
site: datadoghq.com
hostname: xxxxxxxxxxxx
env: prod
- 解決1.サーバー毎にAPIキーを生成した
- サーバーA用APIキー xxx
- サーバーB用APIキー xxx
- サーバーC用APIキー xxx
これなら、AIプロンプトにAPIキーを誤投入してしまった場合でも、該当サーバー1台だけ APIキー をローテーションすればよい
- 解決2.APIキーを環境変数ファイルに記述すれば、コマンド出力に APIキー が含まれないため、誤投入リスクが減る
設定方法(ステップごとに解説)
1.環境変数ファイルに APIキー を記述する
$ sudo cat /etc/datadog-agent/environment
DD_API_KEY=<APIキーを書く>
2.datadog.yaml から api_key: の行を削除する
/etc/datadog-agent/datadog.yaml のAPIキー api_key:xxxxx を削除する。
3.ファイル権限設定:環境変数ファイルは root と dd-agent のみに読めるようにする
sudo chown root:dd-agent /etc/datadog-agent/environment
sudo chmod 640 /etc/datadog-agent/environment
environmentのファイル権限の Before / After
Before
-rw-r----- 1 dd-agent dd-agent 237 datadog.yaml
-rw-r--r-- 1 root root 46 environment
After
-rw-r----- 1 dd-agent dd-agent 237 datadog.yaml
-rw-r----- 1 root dd-agent 46 environment
4.Agent を再起動し、状態を確認する
sudo systemctl restart datadog-agent
sudo datadog-agent status | grep -i -A3 'api key'
まとめ
生成 AI を使うシーンで「コマンド出力を AI に貼り付ける」ことは日常的に発生する。
うっかり APIキー をコマンド出力してしまうような設定ファイルの記述方式はAIの時代には都合がわるい。
APIキーは、Datadog Agent 用の環境変数 environmentファイルに記述することで、セキュリティと後戻り作業防止とAIプロンプトに誤投入を改善できるはず!