by shigemk2

当面は技術的なことしか書かない

APIキー / アプリケーションキー

Datadogには2種類のキーがあり、権限を設定できるのはアプリケーションキーのみ

2種類のキーの違い

キー 用途 権限設定
API Key データの送信(Agent、メトリクス投入など) 設定不可
Application Key データの読み取り・API操作 設定可能(スコープ)

すべてのDatadog APIリクエストは認証が必要。データを書き込むリクエストにはAPIキーが必要で、データを読み取るリクエストにはAPIキーとApplication Keyの両方が必要。

Application Keyの権限設定(スコープ)

Application Keyの認可スコープを指定するには、Datadog APIまたはUIでApplication Keyを作成・編集する。スコープは現在のユーザーまたはサービスアカウントが所有するApplication Keyに対して指定できる。このフィールドが指定されていない場合、Application Keyはデフォルトで作成したユーザーと同じすべてのスコープと権限を持つ。

設定方法

  1. Datadog UI: Organization Settings → Application Keys → キーを作成/編集 → スコープを選択
  2. API: Application Key作成/編集時にscopesパラメータを指定

設定できるスコープの例

スコープ付きApplication Keyには、任意のDatadog権限を割り当てることができる。最小権限の原則に従い、アプリケーションが意図した通りに機能するために必要な最小限のスコープのみを割り当てるのがベストプラクティス。

dashboards_read      - ダッシュボードの読み取り
dashboards_write     - ダッシュボードの書き込み
monitors_read        - モニターの読み取り
monitors_write       - モニターの書き込み
metrics_read         - メトリクスの読み取り
logs_read            - ログの読み取り
incidents_read       - インシデントの読み取り
users_read           - ユーザー情報の読み取り
...など

API Keyについて

セキュリティ上の理由から、APIキーはブラウザ、モバイル、TVアプリからデータを送信するために使用することはできない(クライアントサイドで公開されてしまうため)。

組織に対して複数のAPIキーを設定することを検討すべき。例えば、様々なデプロイ方法ごとに異なるAPIキーを使用する:AWSのKubernetesにAgentをデプロイする用、Chefでオンプレミスにデプロイする用、ダッシュボードやモニターを自動化するTerraformスクリプト用、ローカルで開発する開発者用など。

→ API Key自体に権限を設定することはできないが、用途ごとに分けて管理し、不要になったら削除するという運用でセキュリティを担保する。

まとめ

やりたいこと 方法
読み取り専用のキーを作りたい Application Keyを作成し、*_read系のスコープのみ付与
特定の機能だけ使えるキーを作りたい Application Keyを作成し、必要なスコープのみ付与
データ送信用のキーを分けたい 用途ごとに複数のAPI Keyを作成(権限設定は不可)

参考リンク