Ansible の既定のログ設定による機密情報の露出

機密情報を扱うタスクの出力に no_log を適用し、デバッグ出力とログ保存先も別途保護してください。

説明

Ansible タスクの入力や結果にパスワード、トークン、鍵が含まれると、実行時の出力や収集したログに残る場合があります。[defaults] の no_log=True は、タスクの詳細の表示とロギングを制限する既定値です。この設定がないだけで、実際の漏えいがあったとは断定できません。

ログは複数の運用担当者が閲覧したり、外部システムに転送したりすることがあります。機密情報が残ると、本来その資格情報にアクセスできないユーザーにも見える可能性があります。

想定される影響

  • パスワード、トークン、鍵が共有された実行出力やログに残る可能性があります。
  • 保存されたログを通じて、インシデント後も資格情報が露出し続けるおそれがあります。

対処方法

  • 機密情報を扱うタスクに no_log: true を適用してください。全体の既定値として [defaults] の no_log=True を使う場合は、問題調査に必要な出力も減る点を考慮してください。
  • no_log はデバッグ出力を保護しません。別のデバッグ出力やアプリケーションログに秘密情報を書き込まないでください。
  • CI とログ保存先のアクセス権限や保存方針を確認し、すでに露出した資格情報を交換してください。

例

ansible.cfg の既定値を比較した抜粋です。他のオプションの対応状況は、インストール済みの Ansible バージョンで確認してください。

変更前

text
[defaults]
action_warnings=True
allow_unsafe_lookups=False
ask_pass=False
ask_vault_pass=False
debug=False
forks=5
gathering=implicit

全体の no_log の既定値を指定していません。実際の露出はタスクごとの設定や出力内容にも左右されます。

変更後

タスクの詳細の出力を既定で制限します。タスクごとの設定や別の出力経路も確認する必要があり、既存のログを削除する設定ではありません。

text
[defaults]
action_warnings=True
allow_unsafe_lookups=False
ask_pass=False
ask_vault_pass=False
debug=False
forks=5
gathering=implicit
no_log=True

参考資料