アクセス レビューなどの Microsoft Entra ID Governance 機能でアプリケーションを使う前に、そのアプリケーションの既存のユーザーを Microsoft Entra ID に設定する必要がある一般的なシナリオは 3 つあります。
ライセンス要件
この機能を使用するには、Microsoft Entra ID Governance または Microsoft Entra スイートのライセンスが必要です。 要件に適したライセンスを見つけるには、「Microsoft Entra ID ガバナンス ライセンスの基礎」をご覧ください。
アプリケーションが独自の ID プロバイダーを使用した後に Microsoft Entra ID に移行された場合
最初のシナリオでは、アプリケーションが既に環境内に存在します。 そのアプリケーションは以前、どのユーザーにアクセス権があるかを追跡するために独自の ID プロバイダーまたはデータ ストアを使用していました。
Microsoft Entra ID に依存するようにアプリケーションを変更すると、Microsoft Entra ID 内に存在し、そのアプリケーションへのアクセスが許可されているユーザーだけがアクセスできます。 その構成変更の一部として、そのアプリケーションのデータ ストアから既存のユーザーを Microsoft Entra ID に取り込むことを選択できます。 それにより、それらのユーザーは引き続き Microsoft Entra ID を通してアクセスできます。
アプリケーションに関連付けられているユーザーを Microsoft Entra ID で表されるようにすると、ユーザーとアプリケーションの関係が別の場所で開始された場合でも、Microsoft Entra ID でアプリケーションにアクセスできるユーザーを追跡できます。 たとえば、その関係はアプリケーションのデータベースまたはディレクトリで開始されている可能性があります。
Microsoft Entra ID では、ユーザーの割り当てを認識した後、アプリケーションのデータ ストアに更新を送信できます。 この更新には、そのユーザーの属性が変更されたときや、そのユーザーがアプリケーションのスコープから外れたときが含まれます。
Microsoft Entra ID を唯一の ID プロバイダーとして使用しないアプリケーション
2 つ目のシナリオでは、アプリケーションが、その ID プロバイダーとして Microsoft Entra ID のみには依存していません。
場合によっては、アプリケーションが AD グループに依存している場合があります。 このシナリオは、「アプリケーションへのユーザーのアクセスのアクセス レビューを準備する」のパターン B で説明されています。 この記事で説明されているように、このアプリケーションのプロビジョニングを構成する必要はありません。AD グループのメンバーシップを確認する方法については、代わりにこの記事のパターン B の手順に従ってください。
場合によっては、アプリケーションが複数の ID プロバイダーをサポートしていたり、独自の組み込みの資格情報ストレージを持っていたりすることがあります。 このシナリオは、「アプリケーションへのユーザーのアクセスのアクセス レビューを準備する」ではパターン C として説明されています。
アプリケーションから他の ID プロバイダーまたはローカル資格情報認証を削除することが不可能な場合があります。 その場合、Microsoft Entra ID を使用してそのアプリケーションにアクセスできるユーザーをレビューしたり、そのアプリケーションからだれかのアクセス権を削除したりするには、認証を Microsoft Entra ID に依存しないアプリケーション ユーザーを表す Microsoft Entra ID 内の割り当てを作成する必要があります。
たとえば、あるユーザーがアプリケーションのデータ ストアに存在するとします。 Microsoft Entra ID は、アプリケーションへのロールの割り当てを必要とするように構成されています。 ただし、そのユーザーは Microsoft Entra ID にアプリケーション ロールの割り当てを持っていません。
そのユーザーが Microsoft Entra ID で更新されても、アプリケーションに変更は送信されません。 また、アプリケーションのロール割り当てがレビューされた場合も、そのユーザーはレビューに含まれません。 すべてのユーザーがレビューに含まれるようにするには、アプリケーションのすべてのユーザーに対してアプリケーション ロールの割り当てを設定する必要があります。
アプリケーションが ID プロバイダーとして Microsoft Entra ID を使用しておらず、プロビジョニングもサポートしていない
一部のレガシ アプリケーションでは、他の ID プロバイダーまたはローカル資格情報認証をアプリケーションから削除したり、それらのアプリケーションのプロビジョニング プロトコルのサポートを有効にしたりできない場合があります。
一部の環境では、アプリケーションが、Microsoft Entra ID へのアクセスを管理するために適さないネットワーク セグメントまたはシステムに配置されていることがあります。 そのため、そのディレクトリまたはデータベースからユーザーの一覧を抽出し、それをファイルとして Microsoft Entra とのやり取りに使用できる別のシステムに転送することが必要になる場合があります。
このシステムに Microsoft Graph PowerShell コマンドレットがインストールされていないか、または Microsoft Entra ID への接続がない場合は、ユーザーのリストを含む CSV ファイルを Microsoft Graph PowerShell コマンドレットがインストールされているシステムに転送します。
SAP Cloud Identity Services から既存のユーザーを収集する
このセクションは、ユーザー プロビジョニングの基となるサービスとして SAP Cloud Identity Services を使う SAP アプリケーションに適用されます。
Microsoft Entra ユーザーを SAP のユーザーと照合するために必要なすべての属性を選択します。 これには、SAP システムで使っている可能性のある SCIM ID、userName、emails、その他の属性が含まれます。
[エクスポート] を選択し、ブラウザーが CSV ファイルをダウンロードするまで待ちます。
このシステムに Microsoft Graph PowerShell コマンドレットがインストールされていないか、または Microsoft Entra ID への接続がない場合は、ユーザーのリストを含む CSV ファイルを Microsoft Graph PowerShell コマンドレットがインストールされているシステムに転送します。
Microsoft Entra ID にアプリケーションのユーザーに一致するユーザーが存在することを確認する
これで、アプリケーションから取得されたすべてのユーザーのリストが用意できたので、アプリケーションのデータ ストアのユーザーを Microsoft Entra ID 内のユーザーと照合します。
前のクエリの結果を表示します。 エラーまたは一致が見つからないために、SAP Cloud Identity Services、データベース、またはディレクトリのいずれかのユーザーが Microsoft Entra ID に配置できなかったかどうかを確認します。
次の PowerShell スクリプトでは、見つからなかったレコードの数を表示します。
$dbu_not_queried_count = $dbu_not_queried_list.Count
if ($dbu_not_queried_count -ne 0) {
Write-Error "Unable to query for $dbu_not_queried_count records as rows lacked values for $db_match_column_name."
}
$dbu_duplicate_count = $dbu_duplicate_list.Count
if ($dbu_duplicate_count -ne 0) {
Write-Error "Unable to locate Microsoft Entra ID users for $dbu_duplicate_count rows as multiple rows have the same value"
}
$dbu_not_matched_count = $dbu_not_matched_list.Count
if ($dbu_not_matched_count -ne 0) {
Write-Error "Unable to locate $dbu_not_matched_count records in Microsoft Entra ID by querying for $db_match_column_name values in $azuread_match_attr_name."
}
$dbu_match_ambiguous_count = $dbu_match_ambiguous_list.Count
if ($dbu_match_ambiguous_count -ne 0) {
Write-Error "Unable to locate $dbu_match_ambiguous_count records in Microsoft Entra ID as attribute match ambiguous."
}
$dbu_query_failed_count = $dbu_query_failed_list.Count
if ($dbu_query_failed_count -ne 0) {
Write-Error "Unable to locate $dbu_query_failed_count records in Microsoft Entra ID as queries returned errors."
}
$azuread_not_enabled_count = $azuread_not_enabled_list.Count
if ($azuread_not_enabled_count -ne 0) {
Write-Error "$azuread_not_enabled_count users in Microsoft Entra ID are blocked from sign-in."
}
if ($dbu_not_queried_count -ne 0 -or $dbu_duplicate_count -ne 0 -or $dbu_not_matched_count -ne 0 -or $dbu_match_ambiguous_count -ne 0 -or $dbu_query_failed_count -ne 0 -or $azuread_not_enabled_count) {
Write-Output "You will need to resolve those issues before access of all existing users can be reviewed."
}
$azuread_match_count = $azuread_match_id_list.Count
Write-Output "Users corresponding to $azuread_match_count records were located in Microsoft Entra ID."
このスクリプトは、完了時に、データ ソースのいずれかのレコードが Microsoft Entra ID に見つからなかった場合はエラーを示します。 アプリケーションのデータ ストアのユーザーのレコードのうち Microsoft Entra ID 内のユーザーとして見つからなかったものがある場合は、どのレコードが一致しなかったのかとその理由を調査する必要があります。
たとえば、ユーザーのメールアドレスと userPrincipalName が Microsoft Entra ID で変更されたのに、アプリケーションのデータ ソースでそれに対応する mail プロパティが更新されていない可能性があります。 または、ユーザーは既に組織を離れているが、まだアプリケーションのデータ ソースに存在する可能性があります。 あるいは、アプリケーションのデータ ソースに、Microsoft Entra ID 内のどの特定のユーザーにも対応していないベンダーまたはスーパー管理者アカウントが存在する可能性もあります。
Microsoft Entra ID で見つけられなかったか、またはアクティブかつサインインできる状態でなかったユーザーが存在したが、そのアクセスをレビューしたり、その属性を SAP Cloud Identity Services、データベース、またはディレクトリで更新したい場合は、アプリケーションまたは照合ルールを更新するか、そのユーザー用の Microsoft Entra ユーザーを更新する必要があります。 どの変更を行うかの詳細については、「Microsoft Entra ID のユーザーと一致しなかったアプリケーションのマッピングとユーザー アカウントを管理する」を参照してください。
Microsoft Entra ID でユーザーを作成するオプションを選択した場合、次のいずれかを使用してユーザーを一括で作成できます。
これらの新しいユーザーに、Microsoft Entra ID が後でアプリケーション内の既存のユーザーと一致するために必要な属性と、Microsoft Entra ID で必要な属性 (userPrincipalName、mailNickname、displayName を含む) が設定されていることを確認します。 userPrincipalName は、ディレクトリ内のすべてのユーザー間で一意である必要があります。
たとえば、EMail という名前の列の値が Microsoft Entra のユーザー プリンシパル名として使用したい値であり、列 Alias の値に Microsoft Entra ID のメール ニックネームが含まれ、列 Full name の値にユーザーの表示名が含まれているようなユーザーが、データベースに存在する場合があります。
そのような場合、このスクリプトを使用して、SAP Cloud Identity Services、データベース、またはディレクトリにある Microsoft Entra ID のユーザと一致しなかったユーザに対して Microsoft Entra ユーザを作成できます。 組織で必要な Microsoft Entra 属性をさらに追加するため、または $azuread_match_attr_name が mailNickname でも userPrincipalName でもない場合にその Microsoft Entra 属性を指定するために、このスクリプトの変更が必要になる場合があることに注意してください。
不足しているすべてのユーザーを Microsoft Entra ID に追加したら、手順 7 のスクリプトをもう一度実行します。 次に、手順 8 のスクリプトを実行します。 エラーが報告されていないことを確認します。
$dbu_not_queried_list = @()
$dbu_not_matched_list = @()
$dbu_match_ambiguous_list = @()
$dbu_query_failed_list = @()
$azuread_match_id_list = @()
$azuread_not_enabled_list = @()
$dbu_values = @()
$dbu_duplicate_list = @()
foreach ($dbu in $dbusers) {
if ($null -ne $dbu.$db_match_column_name -and $dbu.$db_match_column_name.Length -gt 0) {
$val = $dbu.$db_match_column_name
$escval = $val -replace "'","''"
if ($dbu_values -contains $escval) { $dbu_duplicate_list += $dbu; continue } else { $dbu_values += $escval }
$filter = $azuread_match_attr_name + " eq '" + $escval + "'"
try {
$ul = @(Get-MgUser -Filter $filter -All -Property Id,accountEnabled -ErrorAction Stop)
if ($ul.length -eq 0) { $dbu_not_matched_list += $dbu; } elseif ($ul.length -gt 1) {$dbu_match_ambiguous_list += $dbu } else {
$id = $ul[0].id;
$azuread_match_id_list += $id;
if ($ul[0].accountEnabled -eq $false) {$azuread_not_enabled_list += $id }
}
} catch { $dbu_query_failed_list += $dbu }
} else { $dbu_not_queried_list += $dbu }
}
$dbu_not_queried_count = $dbu_not_queried_list.Count
if ($dbu_not_queried_count -ne 0) {
Write-Error "Unable to query for $dbu_not_queried_count records as rows lacked values for $db_match_column_name."
}
$dbu_duplicate_count = $dbu_duplicate_list.Count
if ($dbu_duplicate_count -ne 0) {
Write-Error "Unable to locate Microsoft Entra ID users for $dbu_duplicate_count rows as multiple rows have the same value"
}
$dbu_not_matched_count = $dbu_not_matched_list.Count
if ($dbu_not_matched_count -ne 0) {
Write-Error "Unable to locate $dbu_not_matched_count records in Microsoft Entra ID by querying for $db_match_column_name values in $azuread_match_attr_name."
}
$dbu_match_ambiguous_count = $dbu_match_ambiguous_list.Count
if ($dbu_match_ambiguous_count -ne 0) {
Write-Error "Unable to locate $dbu_match_ambiguous_count records in Microsoft Entra ID as attribute match ambiguous."
}
$dbu_query_failed_count = $dbu_query_failed_list.Count
if ($dbu_query_failed_count -ne 0) {
Write-Error "Unable to locate $dbu_query_failed_count records in Microsoft Entra ID as queries returned errors."
}
$azuread_not_enabled_count = $azuread_not_enabled_list.Count
if ($azuread_not_enabled_count -ne 0) {
Write-Warning "$azuread_not_enabled_count users in Microsoft Entra ID are blocked from sign-in."
}
if ($dbu_not_queried_count -ne 0 -or $dbu_duplicate_count -ne 0 -or $dbu_not_matched_count -ne 0 -or $dbu_match_ambiguous_count -ne 0 -or $dbu_query_failed_count -ne 0 -or $azuread_not_enabled_count -ne 0) {
Write-Output "You will need to resolve those issues before access of all existing users can be reviewed."
}
$azuread_match_count = $azuread_match_id_list.Count
Write-Output "Users corresponding to $azuread_match_count records were located in Microsoft Entra ID."
アプリケーションを登録する
アプリケーションが既に Microsoft Entra ID に登録されている場合は、次の手順に進みます。
前の手順では、アプリケーションのデータ ストア内のすべてのユーザーが Microsoft Entra ID のユーザーとして存在することを確認しました。 ただし、そのすべてが現在、Microsoft Entra ID でアプリケーションのロールに割り当てられているとは限りません。 そこで、次のステップでは、アプリケーション ロールに割り当てられていないユーザーがいないかを確認します。
前のセクションのユーザー ID の一覧を、現在アプリケーションに割り当てられているユーザーと比較します。
$azuread_not_in_role_list = @()
foreach ($id in $azuread_match_id_list) {
$found = $false
foreach ($existing in $azuread_existing_assignments) {
if ($existing.principalId -eq $id) {
$found = $true; break;
}
}
if ($found -eq $false) { $azuread_not_in_role_list += $id }
}
$azuread_not_in_role_count = $azuread_not_in_role_list.Count
Write-Output "$azuread_not_in_role_count users in the application's data store are not assigned to the application roles."
そのアプリケーションへのプロビジョニングの属性マッピングを確認します。 照合のために前のセクションで使用した Microsoft Entra の属性と列に対して [この属性を使用してオブジェクトを照合する] が設定されていることを確認します。
これらの規則で、以前に使用したものと同じ属性が使用されていない場合は、アプリケーション ロールの割り当てが作成されるときに、Microsoft Entra ID がアプリケーションのデータ ストアで既存のユーザーを見つけられない可能性があります。 その場合は、Microsoft Entra ID によって、重複したユーザーが誤って作成されることがあります。
Microsoft Entra ID でアプリケーション内のユーザーを Microsoft Entra ID 内のユーザーと照合するには、Microsoft Entra ID でアプリケーション ロールの割り当てを作成する必要があります。 各アプリケーション ロールの割り当てにより、1 つのサービス プリンシパルの 1 つのアプリケーション ロールに 1 人のユーザーが関連付けられます。
ユーザーのアプリケーション ロールの割り当てが Microsoft Entra ID に作成されており、アプリケーションがプロビジョニングをサポートしている場合は、次のようになります。
Microsoft Entra ID は、SCIM、またはそのディレクトリまたはデータベースを介してアプリケーションにクエリを実行し、ユーザーが既に存在するかどうかを判断します。
その後、Microsoft Entra ID でユーザーの属性が更新されると、Microsoft Entra ID はそれらの更新をアプリケーションに送信します。
ユーザーは、Microsoft Entra ID の外部で更新されない限り、または Microsoft Entra ID 内の割り当てが削除されるまで無期限にアプリケーション内に残ります。
前のセクションのユーザー ID の一覧を、現在アプリケーションに割り当てられているユーザーと比較します。
$azuread_still_not_in_role_list = @()
foreach ($id in $azuread_match_id_list) {
$found = $false
foreach ($existing in $azuread_existing_assignments) {
if ($existing.principalId -eq $id) {
$found = $true; break;
}
}
if ($found -eq $false) { $azuread_still_not_in_role_list += $id }
}
$azuread_still_not_in_role_count = $azuread_still_not_in_role_list.Count
if ($azuread_still_not_in_role_count -gt 0) {
Write-Output "$azuread_still_not_in_role_count users in the application's data store are not assigned to the application roles."
}
通常は、リソースの所有者がレビューの実行を担当します。 パターン B で統合されたアプリケーションのアクセス レビューの一環として、グループのレビューを作成する場合は、グループ所有者をレビュー担当者として選択できます。 Microsoft Entra ID のアプリケーションには所有者がいるとは限らないため、アプリケーションの所有者をレビュー担当者として選択することはできません。 代わりに、レビューを作成するときに、アプリケーション所有者の名前をレビュー担当者として指定できます。
レビューを作成する前に、テナントに十分な Microsoft Entra ID P2 または Microsoft Entra ID ガバナンス SKU シートがあることを確認します。 また、すべてのレビュー担当者がメール アドレスを持つアクティブなユーザーであることを確認します。 アクセス レビューが始まったら、各自が Microsoft Entra ID からのメールをレビューします。 レビュー担当者がメールボックスを持っていない場合、レビュー開始時のメールまたはメール リマインダーを受け取りません。 また、Microsoft Entra ID へのサインインをブロックされている場合は、レビューを実行できません。