- 重要な情報
- はじめに
- 用語集
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Datadog Developer Platform はベータ版です。アクセス権をお持ちでない場合は、apps@datadoghq.com までご連絡ください。
このページでは、機密クライアントを作成した後、アプリケーションに OAuth プロトコルをエンドツーエンドで実装する方法を順を追って説明しています。
Developer Platform で OAuth クライアントを作成し、構成します。
ユーザーがインテグレーションをインストールした後、インテグレーションタイルの Configure タブにある Connect Accounts ボタンをクリックしてアカウントを接続することができます。
ユーザーがこのボタンをクリックすると、OAuth クライアント作成プロセスの一部として提供した onboarding_url
に誘導されます。このページは、プラットフォームのサインインページであるべきです。
ユーザーがサインインしたら、適切な URL パラメーターを指定して OAuth2 Authorization エンドポイントにリダイレクトします。この URL パラメーターには、アプリケーションで生成した code_challenge
パラメーターが追加されています。
code_challenge
パラメーターの導出方法については、 PKCE のセクションを参照してください。アプリケーションは、ステップ 5 のトークンリクエストのために code_verifier
を保存する必要があります。
onboarding_url
へのリダイレクトで提供される site
クエリパラメーターを使用します。site
は https://app.datadoghq.com
、https://app.datadoghq.eu
、https://us5.datadoghq.com
の場合もあれば、https://<custom_subdomain>.datadoghq.com
のように、説明しなければならないカスタムサブドメインを持っている場合もあります。authorize
パスを付加します。ユーザーが Authorize をクリックすると、Datadog は認可エンドポイントに POST リクエストを作成します。ユーザーは、OAuth クライアントを設定する際に、クエリコンポーネントの認可パラメータ ー code
で指定した redirect_uri
にリダイレクトされます。
redirect_uri
から、Datadog トークンエンドポイントに POST リクエストを行い、ステップ 4 の認可コード、ステップ 3 の code_verifier
、OAuth クライアント ID、クライアントシークレットを含むようにします。
redirect_uri
へのリダイレクトで提供される site
クエリパラメーターを使用します。site
は https://app.datadoghq.com
、https://app.datadoghq.eu
、https://us5.datadoghq.com
の場合もあれば、https://<custom_subdomain>.datadoghq.com
のように、説明しなければならないカスタムサブドメインを持っている場合もあります。token
パスを付加します。成功すると、レスポンス本文で access_token
と refresh_token
を受け取ります。アプリケーションには、You may now close this tab
というメッセージを含む確認ページが表示されるはずです。
Datadog API エンドポイントを呼び出すには、リクエストの認可ヘッダーの一部として access_token
を使用します: headers = {"Authorization": "Bearer {}".format(access_token)}
https://api.datadoghq.eu/api/v1/events
で、US1 にいるユーザーの場合、イベントのエンドポイントは https://api.datadoghq.com/api/v1/events
になります。エンドポイントによっては、API キーが必要な場合もあり、以下のステップ 8 で作成します。API Key Creation エンドポイントを呼び出し、Datadog ユーザーの代わりにデータを送信するための API キーを生成します。
API_KEYS_WRITE
スコープがクライアントに追加されていない場合、このステップは失敗します。このエンドポイントでは、一度だけ表示される API キーを生成します。この値は安全なデータベースまたは場所に保存してください。
クライアントの作成と公開については、Datadog インテグレーションのための OAuth を参照してください。
Datadog の認可プロセスは、インテグレーションタイルの Connect Accounts をクリックするか、インテグレーションの外部 Web サイトから開始することができます。例えば、Datadog のユーザーが使用する必要があるインテグレーション構成ページが Web サイトにある場合、そこから認可プロセスを開始するオプションをユーザーに提供することができます。
サードパーティーロケーション (Datadog インテグレーションタイルの外) から認可を開始する場合、認可フローでユーザーをルーティングし、authorization
と token
エンドポイント用の URL を構築する際に Datadog サイト (EU、US1、US3、US5 など) を考慮しなければなりません。
ユーザーが正しいサイトで認可していることを確認するために、常に US1 Datadog サイト (app.datadoghq.com
) に誘導し、そこから地域を選択するようにします。認可フローが完了したら、後続の API コールでは、クエリパラメーターとして redirect_uri
が返される正しいサイトを使用するようにします (OAuth プロトコルの実装のステップ 5 を参照)。
ユーザーが Datadog インテグレーションタイルから認可を開始する場合、要求されたすべてのスコープに対応する権限を持っていることが必要です。インテグレーションタイル以外の場所から認可を開始した場合、必要なすべての権限を持たないユーザーが認可を完了することがあります (ただし、インテグレーションタイルに戻ったときに適切な権限で再認可するよう促されます)。これを避けるには、サードパーティのプラットフォームから Datadog インテグレーションタイルにユーザーを誘導し、認可を開始する必要があります。
OAuth2 プロトコルはいくつかの付与フローをサポートしていますが、PKCE による認可コード付与フローは、ユーザーが一度明示的に同意し、クライアントの資格を安全に保存できる長期的なアプリケーションに推奨する付与タイプです。
この付与タイプでは、アプリケーションが一意の認可コードを安全に取得し、それをアクセストークンと交換することで、Datadog API へのリクエストを行うことができます。認可コードの付与フローは、3 つのステップで構成されています。
Proof key for code exchange (PKCE) は、OAuth2 の認可コード付与フローを拡張して、OAuth2 クライアントを傍受攻撃から保護するための拡張機能です。攻撃者がフローを傍受し、アプリケーションに返される前の認可コードにアクセスした場合、アクセストークンを取得し、Datadog の API にアクセスすることができます。
このような攻撃を軽減するために、PKCE 拡張機能では、認可リクエストとトークンリクエストをグラントフロー全体で安全に関連付けるために、以下のパラメーターが用意されています。
パラメーター | 定義 |
---|---|
Code Verifier | 動的に生成される暗号用乱数文字列。 |
Code Challenge | コードベリファイアの変形。 |
Code Challenge Method | code_challenge を code_verifier から導出するために使用するメソッド。code_challenge の計算には SHA-256 を使用しなければなりません。 |
PKCE プロトコルは、以下のアクションを完了することで、認可コードの付与フローとインテグレーションします。
アプリケーションは code_verifier
というランダムな文字列を生成し、それに対応する code_challenge
を code_challenge_method
を用いて導出します。
アプリケーションは Datadog に対して、code_challenge
と code_challenge_method
のパラメーターで認可リクエストを送信し、認可コードを取得することができます。
アプリケーションはアクセストークンを取得するために、認可コードと code_verifier
を指定して Datadog にトークンリクエストを送信します。トークンエンドポイントは code_verifier
を code_challenge_method
を使って変換し、元の code_challenge
の値と比較することで認可コードを検証します。
お役に立つドキュメント、リンクや記事: