Datadogの認証情報について調べたこと
Datadogの設定をTerraformで行うにあたって、application keyとapi keyが求められるのですが、そもそもDatadogにおいてのこれらは一体何なのかよくわかっていなかったことに気付かされました。
以下は調べたことのまとめです。
Application Key
- API Keyと合わせて使うと、datadogプログラムにapi経由でアクセスできる
- ユーザーアカウントに紐づき、ユーザーアカウントの権限と同じ権限を持つ
- 自分が作ったものしかkey valueを確認できない
- ユーザーのアカウントが無効になった場合はキーも削除される
API Key
- メトリクスとイベントをdatadogに送信するには、datadogエージェントがAPIキーを必要とする
- 組織に固有で、管理者ユーザーのみが作れる(5つまでしか作れない。引き上げも可能)
- 作成者以外のユーザーもkey valueを参照できる
- ユーザーのアカウントが無効にされても引き続き使える
ベストプラクティス
これらのキーはどう運用していくのがベストなのか。
公式docsでは、ユーザー間で使いまわすことは想定せず、紐付くユーザーが退職したら新しく作り直すことを推奨していました。そうすることで退職ユーザーがキーにアクセスできないようにするためです。
とはいえグループのメールアドレスを用いたサービスアカウントのような使い方も一応想定しているようでした。(認証情報を安全に保管して必要最小限のメンバーのみがアクセスできるよう気をつけてねといったことが書かれていた)
なので例えばTerraformで管理する時なんかは、アプリケーションキーはサービスアカウントで発行したものを用いるようにし、それをリポジトリのCICDの環境変数に設定することで、その設定にアクセスできる権限を持った人しか値が見れないようにできます。そういう形になるのかな、やっぱり🤔