次の方法で共有


外部呼び出し

外部呼び出しを使用すると、Microsoft Dynamics 365 Fraud Protection の外部にある API からデータを取り込み、そのデータを使用して情報に基づいた意思決定をリアルタイムで行うことができます。 たとえば、サードパーティのアドレスおよび電話検証サービス、または独自のカスタム スコアリング モデルでは、一部のイベントのリスク レベルを判断するのに役立つ重要な入力が提供される場合があります。 外部呼び出しを使用すると、任意の API エンドポイントに接続し、必要に応じてルール内からそのエンドポイントに要求を行い、そのエンドポイントからの応答を使用して決定を行うことができます。

Note

すべてのイベントにこの追加データが必要な場合は、評価スキーマの一部として送信することもできます。 API 要求の一部としてカスタム データを送信する方法の詳細については、 Custom データサンプルを参照してください。

外部呼び出しで使用できる API の種類

外部呼び出しを作成する前に、次の制限事項について理解しておく必要があります。

  • 不正アクセス防止では現在、 AnonymousAAD の認証方法のみがサポートされています。
  • 不正アクセス防止では、現在、GET および POST の HTTP メソッドのみがサポートされています。

外部呼び出しを作成する

  1. Fraud Protection ポータル左側のナビゲーションで、[External Calls]\(呼び出しを選択し、新しい外部呼び出し選択

  2. 必要に応じて、次のフィールドを確認して設定します。

    • 名前 – ルールからの外部呼び出しを参照するために使用する名前を入力します。 名前には、数字、文字、アンダースコアのみを含めることができます。 数値で始めることはできません。

      Note

      ルールで外部呼び出しを使用した後は、外部呼び出しの名前を変更することはできません。

    • 説明 – チームが外部通話をすばやく識別できるように説明を追加します。

    • Web 要求 – 適切な HTTP メソッド (GET または POST) を選択し、API エンドポイントを入力します。

      Note

      HTTPS エンドポイントのみがサポートされています。

    • 定期的なウォームアップ呼び出しを有効にする - 外部呼び出しエンドポイントへのトラフィックが少なすぎると、接続がコールドになり、外部サービスからの応答の待機時間が長くなる可能性があります。 この問題を軽減するには、 External 呼び出しのセットアップ ページからウォームアップ呼び出しを有効にします。 トグルを使用してウォームアップ呼び出しを有効にします。 有効な GET Keep-alive URL を指定する必要があります。 プライマリ エンドポイントと同様に、キープアライブ エンドポイントも Test 接続を渡す必要があります。 ウォームアップ呼び出しを有効にして外部呼び出しを構成した場合、トラフィック量が少なすぎると、Fraud Protection は GET メソッドのみを使用してキープアライブ エンドポイントへの匿名ウォームアップ呼び出しを自動的に行います。

      Note

      ウォームアップ呼び出しでは、パラメーター、構成、または構成可能なヘッダーを使用できません。

    • 認証 – 受信要求の認証に使用する方法を選択します。

      • Anonymous を選択した場合、承認ヘッダーは送信されません。
      • AAD を選択すると、テナントに Azure Active Directory (Azure AD) トークンが生成され、承認ヘッダーとして Bearer <token> が使用されます。

      認証、承認、および Azure AD トークンの詳細については、この記事で後述する「 認証と承認 」セクションを参照してください。

    • 対象ユーザー - 認証方法として AAD を選択した場合は、対象ユーザーを指定するように求められます。 既存の Azure アプリケーションを対象ユーザーとして使用することも、Fraud Protection ポータル内の統合エクスペリエンスを使用して新しいアプリケーションを作成することもできます。 対象ユーザーが外部通話/サービスにアクセスするアクセス許可を持っていることを確認します。 Azure Active Directory (Azure AD) 認証を構成する方法の詳細については、「azure AD 認証の構成を参照してください。

    • アプリケーション ID – Fraud Protection サブスクリプション テナント内の新規または既存の Azure AD アプリケーションのアプリケーション ID も指定する必要があります。 Azure Key Vault で証明書を生成します。 Fraud Protection アプリには、この Azure Key Vault への読み取りアクセス権が必要です。 この Azure AD アプリケーションに証明書を読み込みます。 Azure AD アプリケーションを作成および管理する方法の詳細については、「 Azure Active Directory アプリケーションの作成」を参照してください。

    • 証明書 URL – Azure Key Vault から証明書識別子の URL を指定します。 これは、前の手順で Azure AD アプリに読み込んだのと同じ証明書です。 Azure Key Vault で証明書を生成する方法の詳細については、「 Azure Key Vault での証明書署名要求の作成とマージ」を参照してください。

    • パラメーターの追加 – パラメーターを使用して、Fraud Protection から API エンドポイントにデータを渡すことができます。 選択した HTTP メソッドに応じて、これらのパラメーターはクエリ文字列または要求本文の一部としてエンドポイントに送信されます。

      各パラメーターのサンプル値を追加できます。 Fraud Protection では、作成前または Test を選択するたびに、これらのパラメーター値を使用してエンドポイントにサンプル呼び出しを行います。

      Note

      すべてのパラメーター値は文字列として解釈されます。

    • サンプル要求 – 外部呼び出しに送信される要求の例を指定します。 要求には、指定したパラメーターの名前と値が反映されている必要があり、編集することはできません。

      GET メソッドの場合、要求 URL が表示されます。 POST メソッドの場合、要求本文が表示されます。

      サンプル要求は、作成前または Test を選択するたびに、エンドポイントへのサンプル呼び出しを行うために使用されます。

    • 応答のサンプル – API エンドポイントからの正常な応答で返されるデータの例を提供します。 このデータは JavaScript Object Notation (JSON) 形式である必要があり、ルールで参照できます。 ここで指定するサンプルは、ルールを作成するときに表示されます。

      Test を選択すると、API からの実際の応答がこのフィールドに自動的に入力されます。

    • タイムアウト – タイムアウトになるまでに要求を待機する時間 (ミリ秒単位) を指定します。1 ~ 5000 の数値を指定する必要があります。

    • 既定の応答 – 要求が失敗した場合、または指定されたタイムアウトを超えた場合に返される既定の応答を指定します。値は有効な JSON オブジェクトまたは JSON 要素である必要があります。

  3. 省略可能: API エンドポイントにサンプル要求を送信し、応答を表示するには、 Test を選択します。 詳細については、次のセクション「 外部呼び出しのテストを参照してください。

  4. 必須フィールドの設定が完了したら、[ 作成を選択します。

外部呼び出しをテストする

Fraud Protection がエンドポイントに接続できることを確認するには、任意の時点で接続をテストします。

  • 新しい外部呼び出しの作成中または既存の外部呼び出しの編集中に接続をテストするには、すべての必須フィールドを設定し、 Test を選択します。

    Fraud Protection では、指定したエンドポイントとパラメーターを使用して、外部呼び出しに要求を送信します。

    • Fraud Protection がターゲット エンドポイントに正常に到達した場合は、接続が成功したことを通知する緑色のメッセージ バーがパネルの上部に表示されます。 完全な応答を表示するには、 [応答の詳細を表示する] を選択します。
    • Fraud Protection がターゲット エンドポイントに到達できない場合、または指定されたタイムアウト前に応答を受信しない場合は、パネルの上部に赤いメッセージ バーが表示され、発生したエラーが表示されます。 エラーの詳細を表示するには、[エラーの詳細を表示を選択します。

外部呼び出しを監視する

不正アクセス防止ポータルで外部呼び出しを監視する

Fraud Protection には、定義した外部呼び出しごとに 3 つのメトリックが含まれるタイルが表示されます。

  • 1 秒あたりの要求数 – 要求の合計数を、選択した期間の合計分数で割った値です。
  • 平均待機時間 – 要求待機時間の合計数を、選択した期間の合計分数で割った値です。
  • 成功率 – 成功した要求の合計数を、作成された要求の合計数で割った値です。

このタイルに表示される数値とグラフには、ページの右上隅にあるドロップダウン リストで選択した期間のデータのみが含まれます。

Note

メトリックは、アクティブなルールで外部呼び出しが使用されている場合にのみ表示されます。

  1. 外部通話に関するデータをさらに詳しく調べるには、タイルの右上隅にある Performance を選択します。

    不正アクセス防止では、メトリックをより詳細に表示する新しいページが表示されます。

  2. 過去 3 か月間の任意の期間のメトリックを表示するには、ページの上部にある Date 範囲 設定を調整します。

前に説明した 3 つのメトリックに加えて、 Error グラフが表示されます。 このグラフには、エラーの種類とコード別のエラーの数が表示されます。 時間の経過に伴うエラー数を表示したり、エラーの分布を表示したりするには、 Pie グラフを選択します。

HTTP クライアント エラー (400、401、403) に加えて、次のエラーが表示される場合があります。

  • 無効なアプリケーション ID – 指定されたアプリケーション ID がテナントに存在しないか、無効です。
  • AAD エラー – Azure AD トークンを取得できませんでした。
  • 定義が見つかりません – 外部呼び出しは削除されましたが、ルールでは引き続き参照されます。
  • Timeout – ターゲットへの要求に、指定されたタイムアウトよりも長い時間がかかりました。
  • 通信エラー – ネットワークの問題またはターゲットが使用できないため、ターゲットに接続できませんでした。
  • サーキット ブレーカー – 外部呼び出しが継続的に失敗し、特定のしきい値を超えた場合、それ以降のすべての呼び出しは短時間中断されます。
  • 不明なエラー – Dynamics 365 の内部エラーが発生しました。

イベント トレースを使用して外部呼び出しを監視する

Fraud Protection のイベント トレース機能を使用して、外部呼び出しに関連するイベントを Azure Event Hubs または Azure Blob Storage の独自のインスタンスに転送できます。 Fraud Protection ポータルの Event Tracing ページで、外部呼び出しに関連する次の 2 つのイベントをサブスクライブできます。

  • FraudProtection.Monitoring.ExternalCalls
  • FraudProtection.Errors.ExternalCalls

外部呼び出しに対して要求が行われるたびに、イベントが FraudProtection.Monitoring.ExternalCalls 名前空間に送信されます。 イベント ペイロードには、呼び出しの待機時間、要求の状態、および要求がトリガーされたルールと句に関する情報が含まれます。

外部呼び出しが失敗すると、イベントが FraudProtection.Errors.ExternalCalls 名前空間に送信されます。 イベント ペイロードには、外部呼び出しに送信された URI 要求と本文、および受信した応答が含まれます。

イベント トレースの詳細、イベントをサブスクライブする方法、およびイベントで実行できる操作については、「 Event トレース」を参照してください。

このデータを組織のワークフローと統合し、カスタムの監視、アラート、レポートを設定する方法については、「event Hubs を使用した Extensibilityを参照してください。

外部呼び出しを管理する

  • 既存の外部通話を編集するには、カード ヘッダーの Edit を選択します。

    Note

    ルールで外部呼び出しを使用した後は、外部呼び出しの名前とパラメーターを変更することはできません。

  • 既存の外部呼び出しを削除するには、省略記号 (...) を選択し、 Delete を選択します。

    Note

    ルールで参照された外部呼び出しは削除できません。

  • 外部呼び出しの詳細なパフォーマンス メトリックを表示するには、 Performance を選択します。

  • Fraud Protection が外部呼び出しに接続できることをテストするには、省略記号 (...) を選択し、 接続のテストを選択します。

ルールで外部呼び出しを使用する

外部呼び出しを使用して意思決定を行うには、ルールから参照します。

たとえば、ルールで myCall という名前の外部呼び出しを参照するには、次の構文を使用します。

External.myCall()

myCall にパラメーター (IPaddress など) が必要な場合は次の構文を使用します。

External.myCall(@"device.ipAddress")

ルールの言語と、ルールで外部呼び出しを使用する方法については、 Language リファレンス ガイドを参照してください。

Note

ルールで外部呼び出しを使用すると、ルールの待機時間が長くなる可能性があります。

認証と承認について

データが安全にアクセスされるようにするために、API は多くの場合、要求の送信者を認証して、データにアクセスするアクセス許可があることを確認します。 Fraud Protection の外部呼び出しでは、 AnonymousAAD の 2 つの認証方法がサポートされます。

Anonymous を選択した場合、ターゲット エンドポイントへの HTTP 要求の承認ヘッダーは空白のままです。 ターゲット エンドポイントに承認ヘッダーが必要ない場合は、このオプションを使用します。 たとえば、エンドポイントで API キーを使用する場合は、 Web Request フィールドに入力した要求 URL の一部としてキーと値のペアを構成します。 その後、ターゲット エンドポイントは、要求 URL の API キーが許可されているかどうかを検証し、アクセス許可を付与するかどうかを決定できます。

AAD を選択した場合、ターゲット エンドポイントへの HTTP 要求の承認ヘッダーにはベアラー トークンが含まれます。 ベアラー トークンは、Azure AD によって発行される JSON Web トークン (JWT) です。 JWT の詳細については、「Microsoft ID プラットフォームアクセス トークン」を参照してください。 Fraud Protection は、次に示すように、要求承認ヘッダーの必要な形式でトークン値をテキスト "Bearer" に追加します。

ベアラー <トークン>

トークン要求

次の表に、Fraud Protection によって発行されるベアラー トークンで期待できる要求の一覧を示します。

Name 要求 説明
テナント ID tid この要求は、Fraud Protection アカウントに関連付けられているサブスクリプションの Azure テナント ID を識別します。 Fraud Protection ポータルでテナント ID を検索する方法については、「 必要な ID と情報を参照してください。 Azure portal でテナント ID を検索する方法については、「 Azure Active Directory テナント ID を検索する方法を参照してください。
対象者 aud この要求は、トークンの目的の受信者を識別します。 この値は、Fraud Protection ポータルで外部呼び出しを構成したときに指定したアプリケーション ID を正確に反映します。
アプリケーション ID アプリID この要求は、Fraud Protection のアプリケーション ID * bf04bdab-e06f-44f3-9821-d3af64fc93a9* です。 この ID は Fraud Protection によってのみ所有され、Microsoft のみがその代わりにトークンを要求できます。

API がトークンを受け取ったら、トークンを開き、上記の各要求がその説明と一致することを検証する必要があります。

次の例は、 JwtSecurityTokenHandler を使用して受信要求を認証する方法を示しています。

string authHeader = "Bearer <token>"; // the Authorization header value
var jwt = new JwtSecurityTokenHandler().ReadJwtToken(token);
string tid = jwt.Claims.Where(c => c.Type == "tid").FirstOrDefault()?.Value;
string aud = jwt.Claims.Where(c => c.Type == "aud").FirstOrDefault()?.Value;
string appid = jwt.Claims.Where(c => c.Type == "appid").FirstOrDefault()?.Value;
if(tid != "<my tenant id>" || aud != "<my application id>" || appid != "bf04bdab-e06f-44f3-9821-d3af64fc93a9")
{
    throw new Exception("the token is not authorized.");
}

外部データプラクティス

お客様は、詐欺防止の外部呼び出し機能を通じて Microsoft に提供するデータ セットに関連するデータ保護法、契約上の制限、ポリシーを含め、適用されるすべての法律および規制を遵守する責任があることを確認します。 さらに、お客様は、不正防止の使用が、支払いトランザクションを続行するかどうかを決定する唯一の要因として Fraud Protection (i) を使用しないことを示す、Microsoft 顧客契約で詳しく説明されている制限を使用する対象となることを認めます。(ii) 個人の財務状態、財務履歴、信用力、または保険、住宅、雇用の資格を決定する要因として、(iii) 法的効果を生み出す、または人に重大な影響を与える意思決定を行う。 また、Fraud Protection の外部呼び出し機能の使用に関連して、機密性の高いデータ型または高度に規制されたデータ型を提供または使用することも禁止されています。 Fraud Protection の外部呼び出し機能で使用する前に、データ セットまたはデータ型を確認して、このプロビジョニングに準拠していることを確認してください。 Microsoft は、お客様がこのプロビジョニングに準拠していることを確認する権利も留保します。

その他のリソース