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はデフォルトで作成したユーザーと同じすべてのスコープと権限を持つ。
設定方法
- Datadog UI: Organization Settings → Application Keys → キーを作成/編集 → スコープを選択
- 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を作成(権限設定は不可) |