Microsoft Graph 用の Microsoft Identity Manager コネクタ
まとめ
Microsoft Graph 用のMicrosoft Identity Manager コネクタを使用すると、Microsoft Entra ID P1 または P2 のお客様向けの追加の統合シナリオが可能になります。 Microsoft Graph API の V1 とベータ版から取得される MIM 同期メタバース追加オブジェクトで公開されます。
対象となるシナリオ
B2B アカウントのライフサイクル管理
Microsoft Graph 用の Microsoft Identity Manager コネクタに関する最初のシナリオは、外部ユーザーの AD DS アカウント ライフサイクル管理の自動化に役立つコネクタについてです。 このシナリオでは、organizationは、Microsoft Entra Connect を使用して AD DS からMicrosoft Entra IDに従業員を同期し、ゲストを Microsoft Entra ディレクトリに招待しています。 ゲストを招待すると、そのorganizationの Microsoft Entra ディレクトリに外部ユーザー オブジェクトが存在し、organizationの AD DS には含まれません。 その後、organizationは、Microsoft Entra アプリケーション プロキシまたはその他のゲートウェイ メカニズムを介して、これらのゲストにオンプレミスの Windows 統合認証または Kerberos ベースのアプリケーションへのアクセス権を付与することを望みます。 Microsoft Entra アプリケーション プロキシでは、識別と委任を目的として、各ユーザーが独自の AD DS アカウントを持っている必要があります。
MIM 同期を構成してゲストの AD DS アカウントを自動的に作成および維持する方法については、この記事の手順を読んだ後、MIM 2016 および Microsoft Entra アプリケーション プロキシとのビジネス間 (B2B) コラボレーションMicrosoft Entra記事を参照してください。 その記事では、コネクタに必要な同期規則について説明されています。
その他の ID 管理シナリオ
コネクタは、ユーザーとグループの同期からMicrosoft Entra IDへの同期を超えて、Microsoft Entra IDのユーザー、グループ、連絡先オブジェクトの作成、読み取り、更新、削除を含む他の特定の ID 管理シナリオに使用できます。 潜在的なシナリオを評価する場合は、このコネクタをシナリオで操作できないことに注意してください。これにより、データ フローが重複したり、実際の同期がMicrosoft Entra Connect デプロイと競合したりする可能性があります。 Microsoft Entra Connect は、オンプレミスディレクトリからMicrosoft Entra IDにユーザーとグループを同期することで、オンプレミスのディレクトリをMicrosoft Entra IDと統合するための推奨されるアプローチです。 Microsoft Entra Connect にはさらに多くの同期機能があり、MIM によって作成されたオブジェクトでは不可能なパスワードやデバイスライトバックなどのシナリオが可能です。 たとえば、データが AD DS に取り込まれる場合は、それらのオブジェクトをMicrosoft Entra ディレクトリに照合しようとするMicrosoft Entra Connect からデータが除外されていることを確認します。 また、このコネクタを使用して、Microsoft Entra Connect によって作成されたMicrosoft Entra オブジェクトを変更することもできません。
Microsoft Graph 用コネクタを使用する準備を行う
Microsoft Entra ディレクトリ内のオブジェクトを取得または管理するためのコネクタの承認
コネクタでは、Microsoft Graph を介してMicrosoft Entra オブジェクトを操作するための適切なアクセス許可を使用して承認できるように、Web アプリ/API アプリケーションをMicrosoft Entra IDで作成する必要があります。
図 1. [新しいアプリケーションの登録]
Azure portal で、作成されたアプリケーションを開き、後で MA の接続ページで使用するためにアプリケーション ID をクライアント ID として保存します。
図 2. アプリケーション ID
[証明書] & シークレットを開いて、新しいクライアント シークレットを生成します。 キーの説明を設定し、最大期間を選択します。 変更を保存し、クライアント シークレットを取得します。 ページを離れた後は、クライアント シークレットの値を再度表示することはできません。
図 3. 新しいクライアント シークレット
"API のアクセス許可" を開いて、アプリケーションに適切な "Microsoft Graph" アクセス許可を付与する
画像 4. 新しい API を追加する
[Microsoft Graph] [アプリケーションのアクセス許可] を選択します。
不要なすべてのアクセス許可を取り消します。
シナリオに応じて、次のアクセス許可をアプリケーションに追加して、"Microsoft Graph API" を使用できるようにする必要があります。
オブジェクトでの操作 必要なアクセス許可 アクセス許可の種類 スキーマ検出 Application.Read.All
アプリケーション グループをインポートする Group.Read.All
またはGroup.ReadWrite.All
アプリケーション ユーザーをインポートする User.Read.All
、User.ReadWrite.All
、Directory.Read.All
またはDirectory.ReadWrite.All
アプリケーション 必要なアクセス許可の詳細については、 アクセス許可のリファレンスを参照してください。
注意
Application.Read.All アクセス許可はスキーマ検出に必須であり、オブジェクトの種類のコネクタが動作しているかどうかにかかわらず付与する必要があります。
- 選択したアクセス許可に対して管理者の同意を付与します。
コネクタのインストール
- コネクタをインストールする前に、同期サーバーに以下のものがあることを確認してください。
- Microsoft .NET 4.6.2 Framework 以降
- Microsoft Identity Manager 2016 SP2 であり、修正プログラム 4.4.1642.0 KB4021562以降を使用する必要があります。
Microsoft Graph 用コネクタは、Microsoft Identity Manager 2016 SP2 用の他のコネクタに加えて、Microsoft ダウンロード センターからダウンロードできます。
MIM 同期サービスを再起動します。
コネクタの構成
- Synchronization Service Manager の UI で、 [コネクタ] 、 [作成] の順に選びます。 [Graph (Microsoft)] を選択し、コネクタを作成してわかりやすい名前を付けます。
- MIM 同期サービス UI で、アプリケーション ID と生成されたクライアント シークレットを指定します。 MIM Sync で構成された各管理エージェントには、同じアプリケーションに対してインポートを並列で実行しないように、Microsoft Entra IDに独自のアプリケーションが必要です。
図 5. [接続] ページ
[接続] ページ (図 5) には、使用されている Graph API のバージョンと、テナントの名前が含まれています。 クライアント ID とクライアント シークレットは、Microsoft Entra IDで以前に作成したアプリケーションのアプリケーション ID とキー値を表します。
コネクタの既定値は、v1.0 と、Microsoft Graph グローバル サービスのログイン エンドポイントとグラフ エンドポイントです。 テナントが国内クラウドにある場合は、 ナショナル クラウドのエンドポイントを使用するように構成を変更する必要があります。 グローバル サービスに含まれる Graph の特定の機能は、すべての国内クラウドで使用できない場合があることに注意してください。
- [グローバル パラメーター] ページで、必要な変更を行います。
図 6. [Global Parameters]\(グローバル パラメーター\) ページ
[Global Parameters]\(グローバル パラメーター\) ページには、次の設定が含まれます。
[DateTime format]\(日時形式\) – Edm.DateTimeOffset 型の属性に使用される形式です。 すべての日付は、インポートの間にこの形式を使って文字列に変換されます。 設定されている形式は、日付を保存するすべての属性に適用されます。
HTTP タイムアウト (秒) – Graph への各 HTTP 呼び出し中に使用されるタイムアウト (秒単位)。
[Force change password for created user at next sign]\(作成されるユーザーの次回サインイン時にパスワードの変更を強制する\) – このオプションは、エクスポートの間に作成される新しいユーザーに使われます。 オプションをオンにすると forceChangePasswordNextSignIn プロパティが true に設定され、オフにすると false に設定されます。
コネクタのスキーマと操作の構成
- スキーマを構成します。 コネクタでは、Graph v1.0 エンドポイントで使用する場合、次のオブジェクトの種類の一覧がサポートされます。
User
完全/差分インポート
エクスポート (追加、更新、削除)
グループ化
完全/差分インポート
エクスポート (追加、更新、削除)
Graph ベータ エンドポイントを使用するようにコネクタを構成すると、追加のオブジェクトの種類が表示される場合があります。
サポートされている属性の型の一覧:
Edm.Boolean
Edm.String
Edm.DateTimeOffset
(コネクタ スペース内の文字)microsoft.graph.directoryObject
(サポートされる任意のオブジェクトへのコネクタ スペース内での参照)microsoft.graph.contact
上記の一覧のすべての種類について、複数値属性 (コレクション) もサポートされます。
コネクタでは、すべてのオブジェクトのアンカーと DN に対して 'id
' 属性が使用されます。 そのため、名前の変更は必要ありません。Graph APIではオブジェクトのid
属性の変更が許可されないためです。
アクセス トークンの有効期間
Graph アプリケーションでは、Graph API にアクセスするためにアクセス トークンが必要です。 コネクタは、インポートのイテレーションごとに新しいアクセス トークンを要求します (インポートのイテレーションはページ サイズによって異なります)。 例:
Microsoft Entra IDには 1,0000 個のオブジェクトが含まれています
コネクタで構成されているページ サイズは 5,000 です
この場合、インポート中に 2 回繰り返しが行われますが、それぞれ 5000 個のオブジェクトが Sync に返されます。そのため、新しいアクセス トークンは 2 回要求されます。
エクスポートでは、追加/更新/削除する必要があるオブジェクトごとに新しいアクセス トークンが要求されます。
クエリ フィルター
Graph API エンドポイントでは、パラメーターを導入することで、GET クエリによって返されるオブジェクトの量$filter制限できます。
クエリ フィルターを使用して完全なインポート パフォーマンス サイクルを向上させるには、コネクタ プロパティの [スキーマ 1 ] ページで、[ オブジェクト フィルターの追加] チェック ボックスをオンにします。
その後、[ スキーマ 2] ページで、ユーザー、グループ、連絡先、またはサービス プリンシパルをフィルター処理するために使用する式を入力します。
上のスクリーンショットでは、フィルター startsWith(displayName,'J') は、displayName 属性値が 'J' で始まるユーザーのみを読み取るために設定されています。
コネクタ のプロパティで、フィルター式で使用される属性が選択されていることを確認します。
クエリ パラメーターの使用方法 $filter 詳細については、「クエリ パラメーターを 使用して応答をカスタマイズする」を参照してください。
注意
デルタ クエリ エンドポイントは現在、フィルター機能を提供していないため、フィルターの使用は完全インポートのみに制限されています。 クエリ フィルターを有効にして差分インポートの実行を開始しようとするとエラーが発生します。
トラブルシューティング
ログの有効化
グラフに問題がある場合は、ログを使用して問題の範囲を絞り込むことができます。 したがって、トレースは、汎用コネクタと同じ方法で有効にすることができます。 あるいは、miiserver.exe.config
(system.diagnostics/sources
セクション内) に単に以下を追加します。
<source name="ConnectorsLog" switchValue="Verbose">
<listeners>
<add initializeData="ConnectorsLog"
type="System.Diagnostics.EventLogTraceListener, System, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ConnectorsLogListener" traceOutputOptions="LogicalOperationStack,
DateTime, Timestamp, Callstack" />
<remove name="Default" />
</listeners>
</source>
注意
[Run this management agent in a separate process]\(この管理エージェントを別のプロセスで実行\) が有効になっている場合は、miiserver.exe.config
ではなく、dllhost.exe.config
を使用する必要があります。
アクセス トークン期限切れエラー
コネクタから、HTTP エラー 401 Unauthorized とメッセージ "Access token has expired." (アクセス トークンの有効期限が切れています) が返る場合があります。
図 7. "Access token has expired." (アクセス トークンの有効期限が切れています) エラー
この問題の原因は、Azure 側でのアクセス トークンの有効期間の構成である可能性があります。 既定では、アクセス トークンは 1 時間後に有効期限が切れます。 有効期限を長くするには、 この記事を参照してください。
Azure AD PowerShell モジュールのパブリック プレビュー リリースを使ってこれを行う例
New-AzureADPolicy -Definition @('{"TokenLifetimePolicy":{"Version":1, "AccessTokenLifetime":"5:00:00"}}') -DisplayName "OrganizationDefaultPolicyScenario" -IsOrganizationDefault $true -Type "TokenLifetimePolicy"
次の手順
- Graph エクスプローラー (HTTP 呼び出しに関する問題のトラブルシューティングに最適)
- Microsoft Graph のバージョン管理、サポートと重大な変更の方針
- Microsoft Graph の国内クラウドデプロイ
- Microsoft GraphMIM B2B エンド ツー エンド展開用Microsoft Identity Manager コネクタをダウンロードする