説明
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