Azure Active Directory のプロビジョニング ログ

Azure Active Directory (Azure AD) は複数のサードパーティ サービスと統合され、テナントにユーザーをプロビジョニングします。 プロビジョニングされたユーザーに関する問題を解決する必要がある場合、Azure AD プロビジョニング ログで記録された情報を利用して解決策を見つけることができます。

テナントの正常性を監視するには、他にも次の 2 つのアクティビティ ログを使用できます。

  • サインイン - サインインとユーザーのリソース使用状況に関する情報。
  • 監査 - ユーザーやグループの管理、テナントのリソースに適用された更新など、テナントに適用された変更に関する情報。

この記事では、プロビジョニング ログの概要を説明します。

このサービスでできること

プロビジョニング ログを使うと、次のような疑問を解決することができます。

  • ServiceNow で正常に作成されたグループ

  • Adobe から正常に削除されたユーザー

  • Active Directory で正常に作成された Workday のユーザー

プロビジョニング ログにアクセスするにはどうすればよいですか?

プロビジョニング ログを閲覧するには、ご利用のテナントに、Azure AD Premium ライセンスが関連付けられている必要があります。 Azure AD エディションをアップグレードするには、「Azure Active Directory Premium の概要」を参照してください。

アプリケーション所有者は所有するアプリケーションのログを確認できます。 プロビジョニング ログを表示するには、次のロールが必要です。

  • レポート閲覧者
  • セキュリティ閲覧者
  • セキュリティ オペレーター
  • セキュリティ管理者
  • アプリケーション管理者
  • クラウド アプリケーション管理者
  • グローバル管理者
  • provisioningLogs アクセス許可を持つカスタム ロールのユーザー

プロビジョニング ログ データにアクセスするには、次の方法があります。

  • Azure AD の [監視] セクションから [プロビジョニング ログ] を選びます。

  • プロビジョニング ログを Azure Monitor にストリーミングします。 この方法を使用すると、データ保持期間を延長でき、カスタムのダッシュボード、アラート、クエリを作成できます。

  • Microsoft Graph API のクエリを実行して、プロビジョニング ログを見つけます。

  • プロビジョニング ログを CSV または JSON ファイルとしてダウンロードします。

プロビジョニング ログの表示

プロビジョニング ログをより効果的に表示するには、少し時間を取って、ニーズに合うようにビューをカスタマイズします。 含める列を指定し、データをフィルター処理して、表示内容を絞り込むことができます。

レイアウトのカスタマイズ

プロビジョニング ログには既定のビューがありますが、列をカスタマイズできます。

  1. ログの上部にあるメニューで、[列] を選択します。
  2. 表示する列を選択し、ウィンドウの下部にある [保存] を選択します。

列をカスタマイズするためのボタンを示すスクリーンショット。

この領域で、追加のフィールドの表示または既に表示されているフィールドの削除ができます。

結果をフィルター処理する

プロビジョニング データをフィルター処理する場合、一部のフィルター値はテナントに基づいて動的に入力されます。 たとえば、テナントに "作成" イベントがない場合は、[作成] のフィルター オプションはありません。

ID フィルターを使用すると、関心のある名前または ID を指定できます。 この ID は、ユーザー、グループ、ロール、またはその他のオブジェクトの場合があります。

オブジェクトの名前または ID で検索できます。 ID はシナリオによって異なります。

  • "Azure AD から SalesForce に" オブジェクトをプロビジョニングする場合、ソース ID は Azure AD 内のユーザーのオブジェクト ID です。 ターゲット ID は Salesforce のユーザーの ID です。
  • "Workday から Azure AD に" プロビジョニングする場合、ソース ID は Workday ワーカーの従業員 ID です。 ターゲット ID は Azure AD のユーザーの ID です。

注意

ユーザーの名前が必ずしも ID 列に存在するとは限りません。 常に 1 つの ID が存在します。

[日付] フィルターでは、返されるデータの期間を定義できます。 次のいずれかの値になります。

  • 1 か月
  • 7 日間
  • 30 日
  • 24 時間
  • カスタム時間間隔 (開始日と終了日を構成する)

[状態] フィルターでは、次のいずれかを選択できます。

  • All
  • Success
  • 障害
  • スキップ

[アクション] フィルターでは、これらのアクションをフィルター処理できます。

  • 作成
  • 更新
  • 削除
  • Disable
  • その他

既定のビューのフィルターに加えて、次のフィルターを設定できます。

  • ジョブ ID:プロビジョニングを有効にした各アプリケーションに、一意のジョブ ID が関連付けられます。

  • サイクル ID:サイクル ID は、プロビジョニング サイクルを一意に識別します。 この ID を製品サポートと共有して、このイベントが発生したサイクルを調べることができます。

  • 変更 ID:変更 ID は、プロビジョニング イベントの一意の識別子です。 この ID を製品サポートと共有して、プロビジョニング イベントを調べることができます。

  • ソース システム:ID のプロビジョニング元となる場所を指定できます。 たとえば、Azure AD から ServiceNow にオブジェクトをプロビジョニングする場合、ソース システムは Azure AD です。

  • ターゲット システム:ID のプロビジョニング先となる場所を指定できます。 たとえば、Azure AD から ServiceNow にオブジェクトをプロビジョニングする場合、ターゲット システムは ServiceNow です。

  • アプリケーション:特定の文字列が含まれている表示名を持つアプリケーションのレコードのみを表示できます。

プロビジョニング ログを分析する

プロビジョニング リスト ビューで項目を選択すると、ユーザーのプロビジョニング手順や問題の解決に関するヒントなど、この項目の詳細が表示されます。 詳細は次のタブにグループ化されています。

  • 手順:オブジェクトをプロビジョニングするために実行される手順の概要が示されます。 オブジェクトのプロビジョニングは次の 4 つの手順で構成されます。

    1. オブジェクトをインポートする。
    2. オブジェクトがスコープ内にあるかどうかを判断する。
    3. ソースとターゲットの間でオブジェクトを一致させる。
    4. オブジェクト (作成、更新、削除、または無効化) をプロビジョニングする。

    [手順] タブのプロビジョニング手順を示すスクリーンショット。

  • トラブルシューティングと推奨事項: エラー コードと理由が表示されます。 エラー情報は、障害が発生した場合にのみ利用できます。

  • 変更されたプロパティ:古い値と新しい値が表示されます。 古い値が存在しない場合、その列は空白になります。

  • 概要:ソースとターゲットのシステムのオブジェクトの発生内容の概要と識別子が表示されます。

ログを CSV または JSON としてダウンロードする

Azure portal のログに移動して [ダウンロード] を選択することで、プロビジョニング ログを後で使用するためにダウンロードできます。 ファイルは、選択したフィルター条件に基づいてフィルター処理されます。 ダウンロードのサイズと時間を削減するために、フィルターはできるだけ具体的に指定してください。

CSV のダウンロードには、次の 3 つのファイルが含まれます。

  • ProvisioningLogs:プロビジョニングの手順と変更されたプロパティを除く、すべてのログをダウンロードします。
  • ProvisioningLogs_ProvisioningSteps:プロビジョニングの手順と変更 ID を含みます。 変更 ID を使用すると、イベントを他の 2 つのファイルと結合できます。
  • ProvisioningLogs_ModifiedProperties:変更された属性と変更 ID を含みます。 変更 ID を使用すると、イベントを他の 2 つのファイルと結合できます。

JSON ファイルを開く

JSON ファイルを開くには、Microsoft Visual Studio Code などのテキスト エディターを使用します。 Visual Studio Code では構文の強調表示があるため、ファイルが読み取りやすくなります。 Microsoft Edge などのブラウザーを使用して、編集不可の形式で JSON ファイルを開くこともできます。

JSON ファイルを読みやすくする

JSON ファイルは、ダウンロードのサイズを削減するために、縮小された形式でダウンロードされます。 この形式では、ペイロードが読みにくくなる場合があります。 ファイルを読みやすくするための 2 つの方法を確認してください。

  • Visual Studio Code を使用して JSON を書式設定する。

  • PowerShell を使用して JSON を書式設定する。 このスクリプトによって、JSON はタブとスペースを含む形式で出力されます。

    $JSONContent = Get-Content -Path "<PATH TO THE PROVISIONING LOGS FILE>" | ConvertFrom-JSON

    $JSONContent | ConvertTo-Json > <PATH TO OUTPUT THE JSON FILE>

JSON ファイルを解析する

ここでは、PowerShell を使用して JSON ファイルを操作するためのサンプル コマンドをいくつか紹介します。 使い慣れた任意のプログラミング言語を使用できます。

まず、このコマンドを実行して JSON ファイルを読み取ります

$JSONContent = Get-Content -Path "<PATH TO THE PROVISIONING LOGS FILE>" | ConvertFrom-JSON

これで、自分のシナリオに従ってデータを解析できます。 いくつかの例を次に示します。

  • JSON ファイル内のすべてのジョブ ID を出力します。

    foreach ($provitem in $JSONContent) { $provitem.jobId }

  • アクションが "create" であったイベントのすべての変更 ID を出力します。

    foreach ($provitem in $JSONContent) { if ($provItem.action -eq 'Create') { $provitem.changeId } }

知っておくべきこと

レポートのプロビジョニングに関するヒントと考慮事項をここに示します。

  • 報告されたプロビジョニング データは、Premium Edition の場合は 30 日間、Free Edition の場合は 7 日間、Azure portal に保存されます。 30 日を過ぎても保持する場合は、プロビジョニング ログを Log Analytics に発行できます。

  • 変更 ID 属性を一意の識別子として使用できるので、製品サポートとやり取りするときに役立ちます。

  • スコープに含まれていないユーザーの場合、スキップされたイベントが表示されることがあります。 この動作は、同期スコープがすべてのユーザーとグループに設定されているときに予想されます。 このサービスでは、スコープ外であっても、テナント内のすべてのオブジェクトが評価されます。

  • プロビジョニング ログには、ロールのインポートは表示されません (AWS、Salesforce、Zendesk に適用されます)。 ロールのインポートのログは、監査ログで確認できます。

エラー コード

次の表を利用して、プロビジョニング ログに記録されているエラーの解決方法をより深く理解してください。 記載されていないエラー コードがあった場合は、このページの下部にあるリンクを使用してフィードバックをお送りください。

エラー コード 説明
Conflict、
EntryConflict
Azure AD またはアプリケーションで、競合している属性値を修正してください。 または、競合しているユーザー アカウントが一致し、取って代わられたと思われるかどうか、一致する属性の構成を確認します。 一致する属性の構成の詳細については、このドキュメントを確認してください。
TooManyRequests ターゲット アプリは過負荷になり多すぎる要求を受け取っているため、ユーザーを更新するこの試行を拒否しました。 行うことは何もありません。 この試行は自動的に中止されます。 Microsoft もこの問題について通知されています。
InternalServerError ターゲット アプリから予期しないエラーが返されました。 ターゲット アプリケーションに関するサービスの問題によって、その動作が妨げられている可能性があります。 この試行は 40 分で自動的に再試行されます。
InsufficientRights、
MethodNotAllowed、
NotPermitted、
権限がありません
Azure AD はターゲット アプリケーションによって認証されましたが、更新を実行する権限がありませんでした。 ターゲット アプリケーションによって提供された手順と、それぞれのアプリケーションのチュートリアルを確認してください。
UnprocessableEntity ターゲット アプリケーションが予期しない応答を返しました。 ターゲット アプリケーションの構成が正しくないか、ターゲット アプリケーションに関するサービスの問題によって、その動作が妨げられている可能性があります。
WebExceptionProtocolError ターゲット アプリケーションへの接続時に HTTP プロトコル エラーが発生しました。 行うことは何もありません。 この試行は 40 分で自動的に再試行されます。
InvalidAnchor プロビジョニング サービスによって以前作成または照合されたユーザーは存在しなくなりました。 そのユーザーが存在することを確認してください。 すべてのユーザーの新たな照合を強制するには、Microsoft Graph API を使用してジョブを再起動します。

プロビジョニングを再開すると初期サイクルがトリガーされ、完了するまで時間がかかる場合があります。 また、プロビジョニングを再開することで、プロビジョニング サービスによって操作に使用されるキャッシュも削除されます。 これは、テナント内のすべてのユーザーとグループを再評価する必要があること、および特定のプロビジョニング イベントが削除される可能性があることを意味します。
NotImplemented ターゲット アプリから予期しない応答が返されました。 アプリの構成が正しくないか、ターゲット アプリに関するサービスの問題によって、その動作が妨げられている可能性があります。 ターゲット アプリケーションによって提供された手順と、それぞれのアプリケーションのチュートリアルを確認してください。
MandatoryFieldsMissing、
MissingValues
必須の値がないため、ユーザーを作成できませんでした。 ソース レコード内の不足している属性値を修正するか、一致する属性の構成を調べて、必須フィールドが省略されていないことを確認してください。 一致する属性の構成に関する詳細を確認してください。
SchemaAttributeNotFound ターゲット アプリケーションに存在しない属性が指定されたため、操作を実行できませんでした。 属性のカスタマイズに関するドキュメントを参照し、構成が正しいことを確認してください。
InternalError Azure AD プロビジョニング サービス内で内部サービス エラーが発生しました。 行うことは何もありません。 この試行は 40 分で自動的に再試行されます。
InvalidDomain 属性値に無効なドメイン名が含まれているため、操作を実行できませんでした。 ユーザーのドメイン名を更新するか、ターゲット アプリケーションの許可リストにそのドメイン名を追加します。
タイムアウト ターゲット アプリケーションが応答するのに時間がかかりすぎたため、操作を完了できませんでした。 行うことは何もありません。 この試行は 40 分で自動的に再試行されます。
LicenseLimitExceeded このユーザーが使用できるライセンスがないため、ターゲット アプリケーションでユーザーを作成できませんでした。 ターゲット アプリケーションの追加ライセンスを購入してください。 または、ユーザーの割り当てと属性マッピングの構成を調べて、正しい属性で正しいユーザーが割り当てられていることを確認してください。
DuplicateTargetEntries ターゲット アプリケーションの複数のユーザーに、構成済みの一致する属性があると検出されたため、操作を完了できませんでした。 重複しているユーザーをターゲット アプリケーションから削除するか、属性マッピングを再構成してください。
DuplicateSourceEntries 複数のユーザーに、構成済みの一致する属性があると検出されたため、操作を完了できませんでした。 重複しているユーザーを削除するか、属性マッピングを再構成してください。
ImportSkipped システムでは、各ユーザーが評価されるときに、ソース システムからのそのユーザーのインポートが試みられます。 このエラーが発生するのは一般的に、インポートされるユーザーが、属性マッピングで定義されている一致するプロパティを持っていない場合です。 一致する属性のユーザー オブジェクトに値が指定されていない場合、システムではスコープ、一致、またはエクスポートの変更を評価することはできません。 このエラーが発生したとしても、ユーザーのスコープをまだ評価していないため、このユーザーがスコープ内にあることを示すものではありません。
EntrySynchronizationSkipped プロビジョニング サービスによってソース システムに対するクエリが正常に実行され、ユーザーが識別されました。 ユーザーに対してこれ以上の操作は行われず、スキップされました。 ユーザーがスコープ外にあるか、ユーザーがターゲット システムに既に存在していて、それ以上の変更は必要でない可能性があります。
SystemForCrossDomainIdentity
ManagementMultipleEntriesInResponse
ユーザーまたはグループを取得する GET 要求に対し、複数のユーザーまたはグループが応答で受信されました。 システムでは、1 つのユーザーまたはグループだけを応答で受信することが想定されています。 たとえば、[グループの取得] 要求を実行してグループを取得し、メンバーを除外するフィルターを指定し、クロスドメイン ID 管理システム (SCIM) エンドポイントからメンバーが返された場合、このエラーを受け取ります。
SystemForCrossDomainIdentity
ManagementServiceIncompatible
Azure AD プロビジョニング サービスは、サード パーティ アプリケーションからの応答を解析できません。 アプリケーション開発者と協力して、SCIM サーバーが Azure AD SCIM クライアントと互換性があることを確認してください。
SchemaPropertyCanOnlyAcceptValue ターゲット システムのプロパティは、1 つの値のみを受け入れることができますが、ソース システムのプロパティには複数の値があります。 エラーをスローしているプロパティに 1 つの値の属性をマップするか、ソースの値を単一の値になるように更新するか、マッピングから属性を削除してください。

次のステップ