チュートリアル: SAP Cloud Identity Services の自動ユーザー プロビジョニングを構成する
このチュートリアルでは、Microsoft Entra ID から SAP Cloud Identity Services へのプロビジョニングを構成する手順について説明します。 目標は、ユーザーが SAP Cloud Identity Services に対して認証を行い、他の SAP ワークロードにアクセスできるように、ユーザーを SAP Cloud Identity Services に自動的にプロビジョニングおよびプロビジョニング解除するように Microsoft Entra ID を設定することです。 SAP Cloud Identity Services では、そのローカル ID ディレクトリから他の SAP アプリケーションへ、ターゲット システムとしてのプロビジョニングがサポートされています。
Note
このチュートリアルでは、Microsoft Entra ユーザー プロビジョニング サービスに構築されるコネクタについて説明します。 このサービスが実行する内容、しくみ、よく寄せられる質問の重要な詳細については、「Microsoft Entra ID による SaaS アプリへのユーザー プロビジョニングとプロビジョニング解除の自動化」を参照してください。 SAP Cloud Identity Services には、Microsoft Entra ID からユーザーとグループを読み取る独自のコネクタもあります。 詳しくは、「SAP Cloud Identity Services - Identity Provisioning - Microsoft Entra ID as a source system」を参照してください。
前提条件
このチュートリアルで説明するシナリオでは、次の前提条件目があることを前提としています。
- Microsoft Entra テナント
- SAP Cloud Identity Services のテナント
- 管理者権限を持つ SAP Cloud Identity Services のユーザー アカウント。
Note
この統合は、Microsoft Entra US Government Cloud 環境から利用することもできます。 このアプリケーションは、Microsoft Entra US Government Cloud のアプリケーション ギャラリーにあり、パブリック クラウドの場合と同じように構成できます。
Microsoft Entra ID にユーザーがまだいない場合、SAP ソースおよびターゲット アプリによるユーザー プロビジョニングのための Microsoft Entra のデプロイ計画というチュートリアルから始めることをお勧めします。 このチュートリアルでは、Microsoft Entra を、SAP SuccessFactors などの組織内の worker の一覧の権限のあるソースと接続する方法について説明します。 さらに、Microsoft Entra を活用して、SAP ECC や SAP S/4HANA を初めとする 1 つ以上の SAP アプリケーションにサインインするための worker 用の ID を発行する手順についても説明しています。
運用環境で SAP Cloud Identity Services へのプロビジョニングを構成する場合は、Microsoft Entra ID Governance を使用して SAP ワークロードへのアクセスを管理する予定です。先に進む前に、ID ガバナンスに Microsoft Entra ID を構成する前に前提条件を確認してください。
プロビジョニング用に SAP Cloud Identity Services を設定する
SAP Cloud Identity Services 管理コンソール、
https://<tenantID>.accounts.ondemand.com/admin
、または試用版の場合にはhttps://<tenantID>.trial-accounts.ondemand.com/admin
にサインインします。 [Users & Authorizations](ユーザーと承認) > [Administrators](管理者) に移動します。新しい管理者を一覧に追加するには、左側パネルの [+ 追加] ボタンを押します。 [システムの追加] を選択し、システムの名前を入力します。
Note
SAP Cloud Identity Services の管理者 ID の種類は System にする必要があります。 管理者ユーザーは、プロビジョニング時に SAP SCIM API に対して認証を行うことができません。 SAP Cloud Identity Services では、システムの作成後にシステムの名前を変更することはできません。
[Configure Authorizations](承認の構成) で、[Manage Users](ユーザーの管理) のトグル ボタンをオンにします。 次に、[保存] をクリックしてシステムを作成します。
管理者システムが作成されたら、そのシステムに新しいシークレットを追加します。
クライアント ID と、SAP が生成したクライアント シークレットをコピーします。 これらの値は、それぞれ [管理者ユーザー名] フィールドと [管理者パスワード] フィールドに入力されます。 これは、次のセクションで設定する SAP Cloud Identity Services アプリケーションの [プロビジョニング] タブで行います。
SAP Cloud Identity Services には、ターゲット システムとして 1 つ以上の SAP アプリケーションへのマッピングが含まれる場合があります。 それらの SAP アプリケーションを SAP Cloud Identity Services を通してプロビジョニングする必要がある属性がユーザーにあるかどうかを確認します。 このチュートリアルでは、SAP Cloud Identity Services とダウンストリームのターゲット システムに 2 つの属性、
userName
とemails[type eq "work"].value
が必要であることを前提としています。 ご利用の SAP ターゲット システムにその他の属性が必要であり、かつそれらが Microsoft Entra ID ユーザー スキーマに含まれていない場合は、拡張属性の同期を構成する必要がある可能性があります。
ギャラリーから SAP Cloud Identity Services を追加する
Microsoft Entra ID を構成して SAP Cloud Identity Services への自動ユーザー プロビジョニングを行う前に、Microsoft Entra アプリケーション ギャラリーからテナントのエンタープライズ アプリケーションのリストに SAP Cloud Identity Services を追加する必要があります。 この手順は、Microsoft Entra 管理センターで行うか、Graph API を使って行えます。
SAP Cloud Identity Services が既に Microsoft Entra からのシングル サインオン用に構成されており、アプリケーションがエンタープライズ アプリケーションの Microsoft Entra リストに既に存在する場合は、次のセクションに進みます。
Microsoft Entra 管理センターを使用して Microsoft Entra アプリケーション ギャラリーから SAP Cloud Identity Services を追加するには、次の手順を実行します:
- クラウド アプリケーション管理者以上として Microsoft Entra 管理センターにサインインします。
- [ID]>[アプリケーション]>[エンタープライズ アプリケーション]>[新しいアプリケーション] に移動します。
- アプリをギャラリーから追加するには、検索ボックスに「SAP CLoud Identity Services」と入力します。
- 結果のパネルから [SAP Cloud Identity Services] を選択し、アプリを追加します。 お使いのテナントにアプリが追加されるのを数秒待機します。
SAP Cloud Identity Services に対する自動ユーザー プロビジョニングの構成
このセクションでは、Microsoft Entra ID プロビジョニング サービスを構成し、Microsoft Entra ID のアプリケーションへのユーザー割り当てに基づいて SAP Cloud Identity Services のユーザーを作成、更新、無効化する手順について説明します。
Microsoft Entra ID で SAP Cloud Identity Services の自動ユーザー プロビジョニングを構成するには、次のようにします。
クラウド アプリケーション管理者以上として Microsoft Entra 管理センターにサインインします。
[ID]>[アプリケーション]>[エンタープライズ アプリケーション] の順に移動します
アプリケーションのリストで、SAP Cloud Identity Services アプリケーションを選択します。
[プロパティ] タブを選択します。
[割り当てが必要ですか?] オプションが [はい] に設定されていることを確認します。 [いいえ] に設定されている場合は、外部 ID を含むディレクトリ内のすべてのユーザーがアプリケーションにアクセスでき、アプリケーションへのアクセスをレビューすることはできません。
[プロビジョニング] タブを選択します。
[プロビジョニング モード] を [自動] に設定します。
[管理者の資格情報] セクションで、テナント URL に SAP Cloud Identity Services のテナント ID を使用して
https://<tenantID>.accounts.ondemand.com/service/scim
、または試用版の場合はhttps://<tenantid>.trial-accounts.ondemand.com/service/scim
を入力します。 以前に管理者ユーザー名と管理者パスワードでそれぞれ取得したクライアント ID の値とクライアント シークレットの値を入力します。 [接続テスト] をクリックして、Microsoft Entra ID で SAP Cloud Identity Services に接続できることを確認します。 接続に失敗した場合は、SAP Cloud Identity Services システム アカウントに管理者アクセス許可があり、シークレットがまだ有効であることを確認してから、もう一度やり直してください。[通知用メール] フィールドに、プロビジョニングのエラー通知を受け取るユーザーまたはグループの電子メール アドレスを入力して、 [エラーが発生したときにメール通知を送信します] チェック ボックスをオンにします。
[保存] をクリックします。
[マッピング] セクションで、[Microsoft Entra ユーザーのプロビジョニング] を選択します。
[属性マッピング] セクションで Microsoft Entra ID から SAP Cloud Identity Services に同期されるユーザー属性を確認します。 それらの属性が SAP Cloud Identity Services 内で使用可能なマッピングのターゲットとして表示されない場合は、[詳細オプションの表示] を選択し、[SAP Cloud Platform Identity Authentication Service の属性リストを編集します] を選択して、サポートされている属性一覧の編集を行います。 SAP Cloud Identity Services テナントの属性を追加します。
[照合] プロパティとして選択されているソース属性とターゲット属性、[照合優先順位] のあるマッピングを確認して記録します。これらの属性は、Microsoft Entra プロビジョニング サービスの SAP Cloud Identity Services のユーザー アカウントとの照合に使用され、新しいユーザーを作成するか、既存のユーザーを更新するかを決定するからです。 照合に関する詳細については、「ソース システムとターゲット システムのユーザー照合」を参照してください。 その後の手順では、重複するユーザーが作成されないように、SAP Cloud Identity Services に既に存在するすべてのユーザーに、[照合] プロパティが設定されている属性が選択されていることを確認します。
IsSoftDeleted
の属性マッピング、またはIsSoftDeleted
を含む関数がアプリケーションの属性にマップされていることを確認します。 ユーザーがアプリケーションから割り当て解除されるか、Microsoft Entra ID で論理的に削除されるか、またはサインインからブロックされると、Microsoft Entra プロビジョニング サービスではisSoftDeleted
にマップされた属性が更新されます。 マップされた属性がない場合、後でアプリケーション ロールから割り当て解除されたユーザーは、引き続きアプリケーションのデータ ストアに存在します。SAP Cloud Identity Services またはダウンストリームのターゲット SAP システムに必要なその他のマッピングを追加します。
[保存] ボタンをクリックして変更をコミットします。
属性 Type フィルター処理のサポート SAP Cloud Identity Services のために必須 userName
String ✓ ✓ emails[type eq "work"].value
String ✓ active
Boolean displayName
String urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager
リファレンス addresses[type eq "work"].country
String addresses[type eq "work"].locality
String addresses[type eq "work"].postalCode
String addresses[type eq "work"].region
String addresses[type eq "work"].streetAddress
String name.givenName
String name.familyName
String name.honorificPrefix
String phoneNumbers[type eq "fax"].value
String phoneNumbers[type eq "mobile"].value
String phoneNumbers[type eq "work"].value
String urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:costCenter
String urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department
String urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:division
String urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber
String urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:organization
String locale
String timezone
String userType
String company
String urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute1
String urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute2
String urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute3
String urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute4
String urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute5
String urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute6
String urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute7
String urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute8
String urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute9
String urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute10
String sendMail
String mailVerified
String スコープ フィルターを構成するには、スコープ フィルターのチュートリアルの次の手順を参照してください。
SAP Cloud Identity Services に対して Microsoft Entra プロビジョニング サービスを有効にするには、[設定] セクションで [プロビジョニング状態] を[オン] に変更します。
[設定] セクションの [範囲] の値には、[ロール割り当て済みユーザーとグループのみを同期する] を選択します。
プロビジョニングの準備ができたら、 [保存] をクリックします。
この操作によって、 [設定] セクションの [スコープ] で定義したすべてのユーザーの初期同期が開始されます。 [ロール割り当て済みユーザーとグループのみを同期する] に範囲を設定し、アプリケーションにユーザーまたはグループが割り当てられていない場合、ユーザーがアプリケーションに割り当てられるまで同期は行われません。
Microsoft Entra ID から SAP Cloud Identity Services に新しいテスト ユーザーをプロビジョニングする
1 名の新しい Microsoft Entra ID テスト ユーザーを SAP Cloud Identity Services に割り当て、自動ユーザー プロビジョニングの構成をテストすることをお勧めします。
- 少なくともクラウド アプリケーション管理者とユーザー管理者として、Microsoft Entra 管理センターにサインインします。
- [ID]>[ユーザー]>[すべてのユーザー] の順に移動します。
- [新しいユーザー]>[新しいユーザーの作成] を選択します。
- 新しいテスト ユーザーの [ユーザー プリンシパル名] と [表示名] を入力します。 ユーザー プリンシパル名は、現在または以前の Microsoft Entra ユーザーまたは SAP Cloud Identity Services ユーザーと同じではなく、一意である必要があります。 [確認と作成]、[作成] の順に選択します。
- テスト ユーザーが作成されたら、[ID] > [アプリケーション] > [エンタープライズ アプリケーション] の順に移動します。
- SAP Cloud Identity Services アプリケーションを選択します。
- [ユーザーとグループ] を選択し、次に [ユーザー/グループの追加] を選択します。
- [ユーザーとグループ] で、[選択なし] を選択して、テキスト ボックスにテスト ユーザーのユーザー プリンシパル名を入力します。
- [選択] を選択し、次に [割り当て] を選択します。
- [プロビジョニング] を選択し、次に [オンデマンド プロビジョニング] を選択します。
- [ユーザーまたはグループの選択] テキスト ボックスに、テスト ユーザーのユーザー プリンシパル名を入力します。
- [プロビジョニング] をクリックします。
- プロビジョニングが完了するまで待ちます。 成功した場合は、メッセージ
Modified attributes (successful)
が表示されます。
また、必要に応じて、ユーザーがアプリケーションの範囲外になったときに Microsoft Entra プロビジョニング サービスがプロビジョニングする内容を確認することもできます。
- ユーザーおよびグループの選択
- テスト ユーザーを選択し、次に [削除] を選択します。
- テスト ユーザーが削除されたら、[プロビジョニング] を選択し、[オンデマンドのプロビジョニング] を選択します。
- [ユーザーまたはグループ] テキスト ボックスに、割り当て解除されたばかりのテスト ユーザーのユーザー プリンシパル名を入力します。
- [プロビジョニング] をクリックします。
- プロビジョニングが完了するまで待ちます。
最後に、Microsoft Entra ID からテスト ユーザーを削除できます。
- [ID]>[ユーザー]>[すべてのユーザー] の順に移動します。
- テスト ユーザーを選択し、[削除] を選択し、次に [OK] を選択します。 この操作により、テスト ユーザーが Microsoft Entra ID から論理的に削除されます。
その後、SAP Cloud Identity Services からテスト ユーザーを削除することもできます。
既存の SAP Cloud Identity Services ユーザーが必要な合致属性を持っていることを確認する
テスト ユーザー以外を Microsoft Entra ID の SAP Cloud Identity Services アプリケーションに割り当てる前に、Microsoft Entra ID のユーザーと同じユーザーを表す SAP Cloud Identity Services に既に存在するすべてのユーザーに、SAP Cloud Identity サービスにマッピング属性が設定されていることを確認する必要があります。
プロビジョニング マッピングでは、[照合] プロパティとして選択されている属性は、Microsoft Entra ID のユーザー アカウントと SAP Cloud Identity Services のユーザー アカウントとの照合に使用されます。 Microsoft Entra ID に SAP Cloud Identity Services に一致しないユーザーが存在する場合、Microsoft Entra プロビジョニング サービスは新しいユーザーの作成を試みます。 Microsoft Entra ID にユーザーが存在し、SAP Cloud Identity Services に一致がある場合、Microsoft Entra プロビジョニング サービスはその SAP Cloud Identity Services ユーザーを更新します。 このため、SAP Cloud Identity Services に既に存在するユーザーには、[照合] プロパティとして選択されている属性が設定されていることを確認する必要があります。そうしないと、重複するユーザーが作成される可能性があります。 Microsoft Entra アプリケーション属性マッピングで照合属性を変更する必要がある場合は、「ソース システムとターゲット システムのユーザー照合」を参照してください。
SAP Cloud Identity Services 管理コンソール、
https://<tenantID>.accounts.ondemand.com/admin
、または試用版の場合にはhttps://<tenantID>.trial-accounts.ondemand.com/admin
にサインインします。[ユーザーと認可] > [ユーザーのエクスポート] に移動します。
Microsoft Entra ユーザーを SAP のユーザーと照合するために必要なすべての属性を選択します。 これらの属性には、
SCIM ID
、userName
、emails
、および識別子として SAP システムで使用できるその他の属性が含まれます。[エクスポート] を選択し、ブラウザーが CSV ファイルをダウンロードするまで待ちます。
PowerShell ウィンドウを開きます。
エディターに次のスクリプトを入力します。 1 行目で、
userName
以外の照合属性を選択した場合は、sapScimUserNameField
変数の値を SAP Cloud Identity Services 属性の名前に変更します。 2 行目で、エクスポートした CSV ファイルのファイル名に引数をUsers-exported-from-sap.csv
からダウンロードしたファイルの名前に変更します。$sapScimUserNameField = "userName" $existingSapUsers = import-csv -Path ".\Users-exported-from-sap.csv" -Encoding UTF8 $count = 0 $warn = 0 foreach ($u in $existingSapUsers) { $id = $u.id if (($null -eq $id) -or ($id.length -eq 0)) { write-error "Exported CSV file does not contain the id attribute of SAP Cloud Identity Services users." throw "id attribute not available, re-export" return } $count++ $userName = $u.$sapScimUserNameField if (($null -eq $userName) -or ($userName.length -eq 0)) { write-warning "SAP Cloud Identity Services user $id does not have a $sapScimUserNameField attribute populated" $warn++ } } write-output "$warn of $count users in SAP Cloud Identity Services did not have the $sapScimUserNameFIeld attribute populated."
スクリプトを実行します。 スクリプトが完了したら、必要な照合属性がないユーザーが 1 人以上いた場合は、エクスポートされた CSV ファイルまたは SAP Cloud Identity Services 管理コンソールでそれらのユーザーを検索します。 これらのユーザーが Microsoft Entra にも存在する場合は、最初にそれらのユーザーの SAP Cloud Identity Services 表現を更新して、照合属性が設定されるようにする必要があります。
SAP Cloud Identity Services でこれらのユーザーの属性を更新したら、手順 2 から 5 と当セクションの PowerShell 手順で説明されているように SAP Cloud Identity Services からユーザーを再エクスポートし、SAP Cloud Identity Services のユーザーにそれらのユーザーへのプロビジョニングを妨げる照合属性がないことを確認します。
SAP Cloud Identity Services から取得したすべてのユーザーのリストが作成されたので、アプリケーションのデータ ストアのユーザーを Microsoft Entra ID に既に含まれているユーザーと照合して、プロビジョニングの範囲に含めるユーザーを決定します。
Microsoft Entra ID でユーザーの ID を取得する
このセクションでは、Microsoft Graph PowerShell コマンドレットを使用して Microsoft Entra ID を操作する方法を示します。
このシナリオのために組織でこれらのコマンドレットを初めて使用する場合は、テナントで Microsoft Graph PowerShell を使用できるように、グローバル管理者ロールである必要があります。 以降の操作では、次のような低い特権のロールを使用できます。
- ユーザー管理者、新しいユーザーの作成が予測される場合。
- アプリケーション管理者または ID ガバナンス管理者、アプリケーション ロールの割り当ての管理だけを行う場合。
PowerShell を開きます。
Microsoft Graph PowerShell モジュールがまだインストールされていない場合は、次のコマンドを使用して
Microsoft.Graph.Users
モジュールなどをインストールします。Install-Module Microsoft.Graph
これらのモジュールが既にインストールされている場合は、最新バージョンを使用していることを確認します。
Update-Module microsoft.graph.users,microsoft.graph.identity.governance,microsoft.graph.applications
Microsoft Entra ID に接続します。
$msg = Connect-MgGraph -ContextScope Process -Scopes "User.ReadWrite.All,Application.ReadWrite.All,AppRoleAssignment.ReadWrite.All,EntitlementManagement.ReadWrite.All"
このコマンドを初めて使用する場合は、Microsoft Graph コマンド ライン ツールにこれらのアクセス許可を付与することを許可する必要があります。
アプリケーションのデータ ストアから取得したユーザーの一覧を、PowerShell セッションに読み込みます。 ユーザーの一覧の形式が CSV ファイルであった場合は、PowerShell コマンドレット
Import-Csv
を使用し、引数として前のセクションのファイルの名前を指定できます。たとえば、SAP Cloud Identity Services から取得したファイル名が Users-exported-from-sap.csv で、現在のディレクトリにある場合は、次のコマンドを入力します。
$filename = ".\Users-exported-from-sap.csv" $dbusers = Import-Csv -Path $filename -Encoding UTF8
別の例として、データベースまたはディレクトリを使用している場合、ファイル名が users.csv で、現在のディレクトリにある場合は、次のコマンドを入力します:
$filename = ".\users.csv" $dbusers = Import-Csv -Path $filename -Encoding UTF8
Microsoft Entra ID 内のユーザーの属性に一致する users.csv ファイルの列を選択します。
SAP Cloud Identity Services を使用している場合、既定のマッピングは、Microsoft Entra ID 属性が
userPrincipalName
の SAP SCIM 属性userName
です:$db_match_column_name = "userName" $azuread_match_attr_name = "userPrincipalName"
別の例として、データベースやディレクトリを使用している場合、
EMail
という列の値が Microsoft Entra の属性userPrincipalName
と同じ値であるデータベース内のユーザーがいる場合があります:$db_match_column_name = "EMail" $azuread_match_attr_name = "userPrincipalName"
Microsoft Entra ID でこれらのユーザーの ID を取得します。
次の PowerShell スクリプトでは、前に指定された
$dbusers
、$db_match_column_name
、$azuread_match_attr_name
の各値を使用します。 これは、Microsoft Entra ID にクエリを実行して、ソース ファイル内の各レコードに一致する値の属性を持つユーザーを見つけます。 ソース SAP Cloud Identity Services、データベース、またはディレクトリから取得したファイルに多数のユーザーが存在する場合、このスクリプトが完了するまでに数分かかる場合があります。 この値を持つ属性が Microsoft Entra ID に存在せず、contains
などのフィルター式を使用する必要がある場合は、このスクリプトと後の手順 11 のスクリプトを、別のフィルター式を使用するようにカスタマイズする必要があります。$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 } }
前のクエリの結果を表示します。 エラーまたは一致が見つからないために、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 でユーザーを作成するオプションを選択した場合、次のいずれかを使用してユーザーを一括で作成できます。
- CSV ファイル (「Microsoft Entra 管理センターでのユーザーの一括作成」で説明されています)
- New-MgUser コマンドレット
これらの新しいユーザーに、Microsoft Entra ID が後でアプリケーション内の既存のユーザーと一致するために必要な属性と、Microsoft Entra ID で必要な属性 (
userPrincipalName
、mailNickname
、displayName
を含む) が設定されていることを確認します。userPrincipalName
は、ディレクトリ内のすべてのユーザー間で一意である必要があります。たとえば、
EMail
という名前の列の値が Microsoft Entra のユーザー プリンシパル名として使用したい値であり、列Alias
の値に Microsoft Entra ID のメール ニックネームが含まれ、列Full name
の値にユーザーの表示名が含まれているようなユーザーが、データベースに存在する場合があります。$db_display_name_column_name = "Full name" $db_user_principal_name_column_name = "Email" $db_mail_nickname_column_name = "Alias"
そのような場合、このスクリプトを使用して、SAP Cloud Identity Services、データベース、またはディレクトリにある Microsoft Entra ID のユーザと一致しなかったユーザに対して Microsoft Entra ユーザを作成できます。 組織で必要な Microsoft Entra 属性をさらに追加するため、または
$azuread_match_attr_name
がmailNickname
でもuserPrincipalName
でもない場合にその Microsoft Entra 属性を指定するために、このスクリプトの変更が必要になる場合があることに注意してください。$dbu_missing_columns_list = @() $dbu_creation_failed_list = @() foreach ($dbu in $dbu_not_matched_list) { if (($null -ne $dbu.$db_display_name_column_name -and $dbu.$db_display_name_column_name.Length -gt 0) -and ($null -ne $dbu.$db_user_principal_name_column_name -and $dbu.$db_user_principal_name_column_name.Length -gt 0) -and ($null -ne $dbu.$db_mail_nickname_column_name -and $dbu.$db_mail_nickname_column_name.Length -gt 0)) { $params = @{ accountEnabled = $false displayName = $dbu.$db_display_name_column_name mailNickname = $dbu.$db_mail_nickname_column_name userPrincipalName = $dbu.$db_user_principal_name_column_name passwordProfile = @{ Password = -join (((48..90) + (96..122)) * 16 | Get-Random -Count 16 | % {[char]$_}) } } try { New-MgUser -BodyParameter $params } catch { $dbu_creation_failed_list += $dbu; throw } } else { $dbu_missing_columns_list += $dbu } }
不足しているすべてのユーザーを 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 ユーザーが必要な属性を持っていることを確認する
自動ユーザー プロビジョニングを有効にする前に、SAP Cloud Identity Services にアクセスする必要がある Microsoft Entra ID のユーザーを決定し、それらのユーザーが Microsoft Entra ID に必要な属性を持ち、それらの属性が SAP Cloud Identity Services の予想されるスキーマにマップされていることを確認する必要があります。
- 既定では、Microsoft Entra ユーザー
userPrincipalName
属性の値は、SAP Cloud Identity Services のuserName
属性とemails[type eq "work"].value
属性の両方にマップされます。 ユーザーのメール アドレスがユーザー プリンシパル名と異なる場合は、このマッピングを変更する必要があります。 - 会社の ZIP/郵便番号の形式が会社の国と一致しない場合、SAP Cloud Identity Services では、
postalCode
属性の値が無視される場合があります。 - 既定では、Microsoft Entra 属性
department
は SAP Cloud Identity Servicesurn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department
属性にマップされます。 Microsoft Entra ユーザーがdepartment
属性の値を持っている場合、それらの値は SAP Cloud Identity Services で既に構成されている部門と一致している必要があります。そうしないと、ユーザーの作成または更新が失敗します。 Microsoft Entra ユーザーのdepartment
値が SAP 環境の値と一致しない場合は、ユーザーを割り当てる前にマッピングを削除します。 - SAP Cloud Identity Services の SCIM エンドポイントでは、いくつかの属性を特定の形式にする必要があります。 これらの属性とその特定の形式の詳細については、ここを参照してください。
Microsoft Entra ID で SAP Cloud Identity Services アプリケーションにユーザーを割り当てる
Microsoft Entra ID では、選択されたアプリへのアクセスが付与されるユーザーを決定する際に割り当てという概念が使用されます。 自動ユーザー プロビジョニングのコンテキストで、[範囲] の [設定] 値が [ロール割り当て済みユーザーとグループのみを同期する] の場合、Microsoft Entra ID でそのアプリケーションのアプリケーション ロールに割り当てられているユーザーとグループのみが SAP Cloud Identity Services と同期されます。 SAP Cloud Identity Services にユーザーを割り当てるときは、有効なアプリケーション固有ロール (使用可能な場合) を割り当てダイアログで選択する必要があります。 既定のアクセス ロールのユーザーは、プロビジョニングから除外されます。 現在、SAP Cloud Identity Services で使用可能なロールは [ユーザー] のみです。
アプリケーションに対してプロビジョニングが既に有効になっている場合は、アプリケーションにユーザーを割り当てる前に、アプリケーションのプロビジョニングが検疫中でないことを確認します。 先に進む前に、検疫の原因となっている問題をすべて解決します。
SAP Cloud Identity Services 内に存在し、Microsoft Entra ID 内のアプリケーションにまだ割り当てられていないユーザーをチェックする
前の手順では、SAP Cloud Identity Services のユーザーが Microsoft Entra ID のユーザーとしても存在するかどうかを評価しました。 ただし、そのすべてが現在、Microsoft Entra ID でアプリケーションのロールに割り当てられているとは限りません。 そこで、次のステップでは、アプリケーション ロールに割り当てられていないユーザーがいないかを確認します。
PowerShell を使用して、アプリケーションのサービス プリンシパルのサービス プリンシパル ID を検索します。
たとえば、エンタープライズ アプリケーションの名前が
SAP Cloud Identity Services
である場合は、次のコマンドを入力します。$azuread_app_name = "SAP Cloud Identity Services" $azuread_sp_filter = "displayName eq '" + ($azuread_app_name -replace "'","''") + "'" $azuread_sp = Get-MgServicePrincipal -Filter $azuread_sp_filter -All
Microsoft Entra ID で現在アプリケーションに割り当てられているユーザーを取得します。
これは前のコマンドで設定した
$azuread_sp
変数に基づいています。$azuread_existing_assignments = @(Get-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -All)
SAP Cloud Identity Services と Microsoft Entra ID の両方に既に存在するユーザーのユーザー ID のリストを、Microsoft Entra ID でアプリケーションに現在割り当てられているユーザーと比較します。 このスクリプトは、前のセクションで設定した
$azuread_match_id_list
変数に基づいてビルドされています:$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."
アプリケーション ロールに割り当てられていないユーザーが 0 の場合、すべてのユーザーがアプリケーション ロールに割り当てられていることを示します。これは、Microsoft Entra ID と SAP Cloud Identity Services に共通するユーザーがいなかったことを示しているため、変更の必要はありません。 ただし、SAP Cloud Identity Services に既に登録されている 1 人以上のユーザが現在アプリケーション ロールに割り当てられていない場合は、手順を続行し、それらのユーザーをアプリケーションのロールの 1 つに追加する必要があります。
アプリケーション ロールの
User
ロールを選択します。$azuread_app_role_name = "User" $azuread_app_role_id = ($azuread_sp.AppRoles | where-object {$_.AllowedMemberTypes -contains "User" -and $_.DisplayName -eq "User"}).Id if ($null -eq $azuread_app_role_id) { write-error "role $azuread_app_role_name not located in application manifest"}
SAP Cloud Identity Services と Microsoft Entra に既に存在し、現在アプリケーション ロールの割り当てがないユーザーに対して、アプリケーション ロールの割り当てを作成します:
foreach ($u in $azuread_not_in_role_list) { $res = New-MgServicePrincipalAppRoleAssignedTo -ServicePrincipalId $azuread_sp.Id -AppRoleId $azuread_app_role_id -PrincipalId $u -ResourceId $azuread_sp.Id }
変更が Microsoft Entra ID 内で伝達されるまで 1 分待ちます。
次の Microsoft Entra プロビジョニング サイクルで、Microsoft Entra プロビジョニング サービスは、アプリケーションに割り当てられているユーザーの表現と SAP Cloud Identity Services の表現を比較し、Microsoft Entra ID の属性を持つ SAP Cloud Identity Services ユーザーを更新します。
残りのユーザーを割り当てて初期同期を監視する
テストが完了し、ユーザーが SAP Cloud Identity Services に正常にプロビジョニングされ、既存の SAP Cloud Identity Services ユーザーがアプリケーション ロールに割り当てられると、ここの手順のいずれかに従って、追加の許可されているユーザーを SAP Cloud Identity Services アプリケーションに割り当てることができます:
- Microsoft Entra 管理センターで、個々のユーザーをアプリケーションに割り当てることができ、
- 前のセクションに示すように、PowerShell コマンドレット
New-MgServicePrincipalAppRoleAssignedTo
を使用して個々のユーザーをアプリケーションに割り当てることができます。または、 - 組織に Microsoft Entra ID Governance のライセンスがある場合は、アクセス割り当てを自動化するためのエンタイトルメント管理ポリシーを展開することもできます。
ユーザーがアプリケーション ロールに割り当てられ、プロビジョニングの範囲内になると、Microsoft Entra プロビジョニング サービスによって SAP Cloud Identity Services にプロビジョニングされます。 なお、初回の同期は後続の同期よりも実行に時間がかかります。後続の同期は、Microsoft Entra のプロビジョニング サービスが実行されている限り約 40 分ごとに実行されます。
ユーザーがプロビジョニングされているのが表示されない場合は、ユーザーがプロビジョニングされない問題に関するトラブルシューティング ガイドの手順を確認します。 次に、Microsoft Entra 管理センターまたは Graph API を使用してプロビジョニング ログを確認します。 ログを状態 [失敗] でフィルター処理します。 DuplicateTargetEntries のエラー コードで失敗が発生している場合、これはプロビジョニング照合規則でのあいまいさを示しており、各 Microsoft Entra ユーザーが確実に 1 人のアプリケーション ユーザーに一致するように Microsoft Entra ユーザーまたは照合に使用されているマッピングを更新する必要があります。 次に、ログをアクション [作成] と状態 [スキップ済み] でフィルター処理します。 ユーザーが NotEffectivelyEntitled の SkipReason コードでスキップされた場合、これは、ユーザー アカウントの状態が [無効] であったために Microsoft Entra ID 内のユーザー アカウントが一致しなかったことを示している可能性があります。
シングル サインオンの構成
SAP Cloud Identity Services シングル サインオン チュートリアルに関する記事にある説明に従い、SAP Cloud Identity Services の SAML ベースのシングル サインオンを有効にすることもできます。 シングル サインオンは自動ユーザー プロビジョニングとは別に構成できますが、これらの 2 つの機能は相補的な関係にあります。
プロビジョニングを監視する
[同期の詳細] セクションを使用すると、進行状況を監視し、リンクをたどってプロビジョニング アクティビティ レポートを取得できます。このレポートには、Microsoft Entra プロビジョニング サービスによって SAP Cloud Identity Services に対して実行されたすべてのアクションが示されています。 Microsoft Graph API を使用してプロビジョニング プロジェクトを監視することもできます。
Microsoft Entra プロビジョニング ログの読み方の詳細については、「自動ユーザー アカウント プロビジョニングについてのレポート」を参照してください。
アプリケーション ロールの割り当てを維持する
アプリケーションに割り当てられているユーザーが Microsoft Entra ID で更新されると、それらの変更は SAP Cloud Identity Services に自動的にプロビジョニングされます。
Microsoft Entra ID Governance をご利用の場合は、Microsoft Entra ID での SAP Cloud Identity Services のアプリケーション ロールの割り当ての変更を自動化して、ユーザーが組織に参加するときに割り当てを追加または削除したり、ロールを離れたり変更したりできます。
- アプリケーション ロールの割り当ての 1 回限りの、または定期的なアクセス レビューを実行できます。
- このアプリケーション用のエンタイトルメント管理アクセス パッケージを作成することができます。 また、ユーザーにアクセス権を割り当てるポリシーは、ユーザー要求時に管理者によって、ルールに基づいて自動的に、またはライフサイクル ワークフローを通じて設定することもできます。
その他のリソース
- エンタープライズ アプリのユーザー アカウント プロビジョニングの管理
- Microsoft Entra ID のアプリケーション アクセスとシングル サインオンとは
- SAP アプリケーションへのアクセスを管理する
- 環境内のアプリケーションのアクセスを制御する