本文示範設定從 Microsoft Entra ID 至 SAP Cloud Identity Services 的布建流程。 目標是設定 Microsoft Entra ID,以自動佈建和取消佈建使用者至 SAP 雲端識別服務,讓這些使用者可以向 SAP 雲端識別服務進行驗證,並存取其他 SAP 工作負載。 SAP 雲端識別服務支援從本機身分識別目錄佈建至其他 SAP 應用程式作為 目標系統。
注意
本文說明內建於 Microsoft Entra 使用者布建服務的連接器。 如需此服務的用途、運作方式和常見問題等重要詳細資訊,請參閱使用 Microsoft Entra ID 自動對 SaaS 應用程式進行使用者佈建和取消佈建。 SAP 雲端識別服務也有自己的個別連接器,可從 Microsoft entra ID 讀取使用者和群組。 如需詳細資訊,請參閱 SAP 雲端識別服務 - 身分識別佈建 - 以 Microsoft Entra ID 作為來源系統。
必要條件
本文中所述的案例假設您已經具備下列必要條件:
- 一個具有有效訂閱的 Microsoft Entra 用戶帳戶。 若尚未有帳戶,可以免費建立帳戶。
- 下列其中一個角色:
- SAP 雲端識別服務租戶
- SAP 雲端識別服務中具有系統管理員權限的使用者帳戶。
注意
也可以在 Microsoft Entra 美國政府雲端環境中使用此整合。 您可以在 Microsoft Entra 美國政府雲端應用程式庫中找到此應用程式,並以與公用雲端環境相同的方式進行設定。
如果您還沒有Microsoft Entra ID 中的使用者,請從 規劃部署 Microsoft Entra 一文開始,以使用 SAP 來源和目標應用程式佈建使用者。 本文說明如何將 Microsoft Entra 與組織中的員工清單的權威來源(例如 SAP SuccessFactors)連接起來。 它也會示範如何使用 Microsoft Entra 來設定這些員工的身分識別,以便他們能夠登入一個或多個 SAP 應用程式,例如 SAP ECC 或 SAP S/4HANA。
如果您要在生產環境中設定布建至 SAP 雲端身分識別服務,並持續使用 Microsoft Entra ID Governance 管理 SAP 工作負載的存取權,請在繼續之前檢閱 設定 Microsoft Entra ID 以進行身分識別治理的必要條件。
設定 SAP 雲端身分識別服務以進行佈建
在本文中,您會在 SAP Cloud Identity Services 中新增系統管理系統,然後設定 Microsoft Entra。
如果此為試用版,請登入您的 SAP 雲端識別服務管理員主控台,
https://<tenantID>.accounts.ondemand.com/admin
或https://<tenantID>.trial-accounts.ondemand.com/admin
。 瀏覽至 [使用者和授權]> [管理員]。按下左側面板上的 [+ 新增] 按鈕,將新的管理員新增到清單中。 選擇 [新增系統],然後輸入系統的名稱。
注意사항
SAP 雲端識別服務的系統管理員身分識別類型必須是 System。 布建時,系統管理員用戶無法向 SAP SCIM API 進行驗證。 SAP Cloud Identity Services 不允許在系統建立之後變更系統的名稱。
在「設定授權」下,將「管理使用者」的切換按鈕打開。 然後選取 [ 儲存 ] 以建立系統。
建立系統管理員系統之後,將新的密碼新增至該系統。
複製 SAP 所產生的 用戶端識別碼 和 客戶端密碼 。 這些值分別在 [管理員用戶名稱] 和 [系統管理員密碼] 字段中輸入。 這會在您在下一節中設定的 SAP Cloud Identity Services 應用程式的 [布建] 索引標籤中完成。
SAP 雲端身份服務可能會將一或多個 SAP 應用程式映射為目標系統。 檢查使用者上是否有任何屬性,需要透過 SAP 雲端識別服務佈建這些 SAP 應用程式。 本文假設 SAP 雲端身分識別服務和下游目標系統需要兩個屬性,
userName
和emails[type eq "work"].value
。 如果您的 SAP 目標系統需要其他屬性,且這些屬性不屬於Microsoft Entra ID 用戶架構,則您可能需要設定 同步處理擴充屬性。
從應用程式庫新增 SAP 雲端識別服務
將 Microsoft Entra ID 設定為將使用者自動佈建到 SAP 雲端識別服務之前,您需要從 Microsoft Entra 應用程式資源庫將 SAP 雲端識別服務新增至租用戶的企業應用程式清單。 您可以在 Microsoft Entra 系統管理中心中執行此步驟,或透過 Graph API。
如果 SAP 雲端識別服務已設定為從 Microsoft Entra 進行單一登入,且應用程式已存在於企業應用程式的 Microsoft Entra 清單中,請繼續進行下一節。
若要使用 Microsoft Entra 系統管理中心從 Microsoft Entra 應用程式資源庫新增 SAP 雲端識別服務,請執行下列步驟:
- 以至少 雲端應用程式系統管理員 的身分登入 Microsoft Entra 系統管理中心。
- 瀏覽至 身分識別>應用程式>企業應用程式>新增應用程式。
- 若要從資源庫新增應用程式,請在搜尋方塊中輸入 SAP 雲端識別服務。
- 從結果面板中選取 [SAP 雲端識別服務],然後新增應用程式。 將應用程式新增至您的租用戶時,請稍候幾秒鐘。
設定 SAP 雲端識別服務以進行自動使用者佈建
此部分將指導您逐步完成設定 Microsoft Entra 帳戶配置服務,以便根據用戶在 Microsoft Entra ID 中對應用程式的指派,在 SAP 雲端識別服務中創建、更新及停用用戶。
若要在 Microsoft Entra ID 中為 SAP 雲端識別服務設定自動使用者佈建:
以至少 雲端應用程式系統管理員 的身分登入 Microsoft Entra 系統管理中心。
瀏覽至 [身分識別]> [應用程式]> [企業應用程式]
在應用程式清單中,選取應用程式 [SAP 雲端識別服務]。
選取屬性索引標籤。
驗證 [需要指派?] 選項設定為 [是]。 如果將其設定為 [否],您目錄中的所有使用者 (包括外部身分識別) 都可以存取應用程式,而且您無法檢閱應用程式的存取權。
選擇 佈建 索引標籤。
將 [佈建模式] 設定為 [自動]。
在 [系統管理員認證] 區段下,輸入
https://<tenantID>.accounts.ondemand.com/service/scim
,如果是試用版則輸入https://<tenantid>.trial-accounts.ondemand.com/service/scim
,在 租戶 URL 中使用您 SAP 雲端識別服務的租戶 ID。 輸入稍早分別在 系統管理員使用者名稱 和 系統管理員密碼 中取得的 用戶端識別碼 和 用戶端密碼 值。 選取 [測試連線 ],以確保Microsoft Entra ID 可以連線到 SAP Cloud Identity Services。 如果連線失敗,請確定您的 SAP 雲端識別服務系統帳戶具有系統管理員權限、密碼仍然有效,並再試一次。在 [通知電子郵件] 欄位中,輸入應該收到佈建錯誤通知的個人或群組電子郵件地址,然後選取 [發生失敗時傳送電子郵件通知] 核取方塊。
選取 [儲存]。
在 [對應] 區段下,選取 [預配 Microsoft Entra ID 使用者]。
在 [屬性對應] 區段中,檢閱從 Microsoft Entra ID 同步至 SAP 雲端識別服務的使用者屬性。 如果您沒有看到 SAP Cloud Identity Services 中可用的屬性做為對應目標,請選取 [ 顯示進階選項 ],然後選取 [ 編輯 SAP Cloud Platform Identity Authentication Service 的屬性列表 ],以 編輯支援的屬性清單。 新增 SAP 雲端識別服務租戶的屬性。
檢閱並記錄選取為 [匹配] 屬性的來源和目標屬性,以及具有 [匹配優先順序] 的對應,因為這些屬性用於匹配 SAP 雲端識別服務中 Microsoft Entra 佈建服務的使用者帳戶,以判斷是建立新使用者還是更新現有使用者。 如需比對的詳細資訊,請參閱 在來源和目標系統中比對使用者。 在後續步驟中,您需要確保 SAP 雲端身分識別服務中的任何使用者,其屬性已被填入為匹配屬性,以防止重複用戶的創建。
請確認
IsSoftDeleted
是否有屬性對應,或者檢查包含IsSoftDeleted
的函式是否對應至應用程式的屬性。 當使用者取消指派給應用程式後,或在 Microsoft Entra ID 中被臨時刪除,或遭到封鎖而無法登入時,Microsoft Entra 設定服務會更新對應至isSoftDeleted
的屬性。 如果未對應任何屬性,則即使使用者後來被取消指派應用程式角色,他們仍會繼續存在於應用程式的資料存放區中。新增 SAP 雲端識別服務或下游目標 SAP 系統所需的任何其他對應。
選取 [儲存] 按鈕以認可所有變更。
屬性 類型 支援篩選 SAP 雲端識別服務要求 userName
字串 ✓ ✓ emails[type eq "work"].value
字串 ✓ active
布林值 displayName
字串 urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager
參考 addresses[type eq "work"].country
字串 addresses[type eq "work"].locality
字串 addresses[type eq "work"].postalCode
字串 addresses[type eq "work"].region
字串 addresses[type eq "work"].streetAddress
字串 name.givenName
字串 name.familyName
字串 name.honorificPrefix
字串 phoneNumbers[type eq "fax"].value
字串 phoneNumbers[type eq "mobile"].value
字串 phoneNumbers[type eq "work"].value
字串 urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:costCenter
字串 urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department
字串 urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:division
字串 urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber
字串 urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:organization
字串 locale
字串 timezone
字串 userType
字串 company
字串 urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute1
字串 urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute2
字串 urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute3
字串 urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute4
字串 urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute5
字串 urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute6
字串 urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute7
字串 urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute8
字串 urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute9
字串 urn:sap:cloud:scim:schemas:extension:custom:2.0:User:attributes:customAttribute10
字串 sendMail
字串 mailVerified
字串 若要設定範圍篩選,請參閱 範圍篩選一文中提供的下列指示,。
若要為 SAP 雲端識別服務啟用 Microsoft Entra 佈建服務,請將 [設定] 區段中的 [佈建狀態] 變更為 [開啟]。
針對 [設定] 區段中 [範圍] 的值,請選取 [僅同步處理指派的使用者和群組]。
當您準備好進行配置時,請選取 儲存。
針對 [設定] 區段的 [範圍] 中定義的所有使用者,此作業會啟動首次同步處理。 如果您已將範圍設定為 [僅同步處理指派的使用者和群組], 且未將使用者或群組指派給應用程式,則除非將使用者指派給應用程式,否則不會發生同步處理。
將 Microsoft Entra ID 的新測試使用者佈建到 SAP 雲端身份服務
建議將單一新的 Microsoft Entra 測試使用者指派給 SAP 雲端識別服務,以測試自動使用者佈建的設定。
- 以至少 雲端應用程式管理員 和使用者系統管理員的身分登入 Microsoft Entra 系統管理中心。
- 瀏覽至 [身分識別]>[使用者]>[所有使用者]。
- 選取 [新增使用者]>[建立新使用者]。
- 輸入新測試使用者的 使用者主體名稱 和 顯示名稱。 使用者主體名稱必須是唯一的,且與任何目前或先前 Microsoft Entra 使用者或 SAP 雲端識別服務使用者不同。 選取檢閱並建立,然後選取建立。
- 在建立測試使用者之後,瀏覽至 [身分識別]>[應用程式]>[企業應用程式]。
- 選取 [SAP 雲端識別服務] 應用程式。
- 選取 [使用者和群組],然後選取 [新增使用者/群組]。
- 在 [使用者和群組] 中,選取 [未選取],然後在文字輸入框中輸入測試使用者的使用者主體名稱。
- 選取 [選取],然後 [指派]。
- 選取 [佈建],然後選取 [隨選佈建]。
- 在 [選取使用者或群組] 文字輸入框中,輸入測試使用者的使用者主體名稱。
- 選取 條款。
- 等候佈建完成。 如果成功,您會看到訊息
Modified attributes (successful)
。
您也可以選擇性地確認當使用者超出應用程式範圍時,Microsoft Entra 佈建服務將佈建的內容。
- 選取 使用者及群組。
- 選取測試使用者,然後選擇 [移除]。
- 移除測試使用者之後,選取 [佈建],然後選取 [隨選佈建]。
- 在 [選取使用者或群組] 文字輸入框中,輸入剛才取消指派的測試使用者使用者主體名稱。
- 選取 條款。
- 等候佈建完成。
最後,您可以從 Microsoft Entra ID 移除測試使用者。
- 瀏覽至 [身分識別]>[使用者]>[所有使用者]。
- 選取測試使用者,選取 [刪除],然後選取 [確定]。 此動作會將測試使用者從 Microsoft Entra ID 暫時刪除。
您也可以從 SAP 雲端識別服務移除測試使用者。
確定現有的 SAP 雲端識別服務使用者具有必要的相符屬性
在您將非測試使用者指派至 Microsoft Entra ID 的 SAP 雲端識別服務應用程式之前,應確認 SAP 雲端識別服務中那些已存在的,且與 Microsoft Entra ID 中使用者相對應的人員,其應有的對應屬性已經填入。
在佈建對應中,選取作為 [比對] 屬性的屬性用於將 Microsoft Entra ID 中的使用者帳戶與 SAP 雲端識別服務中的使用者帳戶進行比對。 如果 Microsoft Entra ID 中的使用者與 SAP 雲端識別服務中的使用者不相符,則 Microsoft Entra 佈建服務會嘗試建立新的使用者。 如果 Microsoft Entra ID 中的使用者與 SAP 雲端識別服務中的使用者相符,則 Microsoft Entra 佈建服務會更新 SAP 雲端識別服務中的使用者。 因此,您應確保 SAP 雲端識別服務中現有的任何使用者,其屬性已填寫為 比對 屬性,否則可能會建立重複的使用者。 如果您需要變更 Microsoft Entra 應用程式屬性對應中的比對屬性,請參閱 比對來源和目標系統中的使用者。
如果此為試用版,請登入您的 SAP 雲端識別服務管理員主控台,
https://<tenantID>.accounts.ondemand.com/admin
或https://<tenantID>.trial-accounts.ondemand.com/admin
。瀏覽至 [使用者 & 授權]>[匯出使用者]。
選取在 SAP 中比對 Microsoft Entra 使用者所需的所有屬性。 這些屬性包括
SCIM ID
、userName
、emails
,以及您可能在 SAP 系統中當成識別碼使用的其他屬性。選取 [匯出],並等候瀏覽器下載 CSV 檔案。
開啟 PowerShell 視窗。
將下列指令碼輸入編輯器。 在第一行中,如果您選取
userName
以外的不同比對屬性,請將sapScimUserNameField
變數的值變更為 SAP 雲端識別服務屬性的名稱。 在第二行中,將引數變更為匯出之 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 doesn't 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 doesn't have a $sapScimUserNameField attribute populated" $warn++ } } write-output "$warn of $count users in SAP Cloud Identity Services did not have the $sapScimUserNameFIeld attribute populated."
執行指令碼。 當指令碼完成時,如果有一或多個使用者缺少必要的比對屬性,請在匯出的 CSV 檔案或 SAP 雲端識別服務管理控制台中查閱這些使用者。 如果這些使用者也存在於 Microsoft Entra 中,您必須先更新這些使用者的 SAP Cloud Identity Services 表示法,讓他們填入相符的屬性。
更新 SAP 雲端識別服務中這些使用者的屬性之後,請從 SAP 雲端識別服務重新匯出使用者,如本節的步驟 2-5 中所述,以及本節中的 PowerShell 步驟,以確認 SAP 雲端識別服務中沒有任何使用者缺少無法佈建給這些使用者的比對屬性。
現在,您已擁有從 SAP Cloud Identity Services 取得的所有使用者清單,接著您將這些使用者與應用程式資料存放區中的使用者,以及已在 Microsoft Entra ID 中的使用者做比對,以確定哪些使用者應被納入布建的範圍。
擷取 Microsoft Entra ID 中的使用者識別碼
本節說明如何使用 Microsoft Graph PowerShell Cmdlet 與 Microsoft Entra ID 互動。
當您的組織在此情況下第一次使用這些 cmdlet 時,您需具備全域管理員的角色,才能在您的租用戶中啟用 Microsoft Graph PowerShell。 後續的互動可以使用權限較低的角色,例如:
- 使用者管理員 (如果您預期會建立新的使用者)。
- 應用程式管理員或 Identity Governance 管理員 (如果您只是管理應用程式角色指派)。
開啟 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 Cmdlet
Import-Csv
,並提供上一節中的檔案名稱作為引數。例如,如果從 SAP 雲端識別服務取得的檔案名為 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
請選擇 users.csv 檔案中與 Microsoft Entra ID 使用者屬性相符的資料行。
如果您使用 SAP 雲端識別服務,則預設對應是 SAP SCIM 屬性
userName
,且具有 Microsoft Entra ID 屬性userPrincipalName
:$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 中這些使用者的識別碼。
下列 PowerShell 指令碼使用稍早指定的
$dbusers
、$db_match_column_name
和$azuread_match_attr_name
值。 它會查詢 Microsoft Entra ID,以找到每筆來源檔案記錄中具有對應屬性值的使用者。 如果檔案中有許多使用者從來源 SAP 雲端識別服務、資料庫或目錄取得,此指令碼可能需要幾分鐘的時間才能完成。 如果您在 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 雲端識別服務、資料庫或目錄中是否有任何使用者因為錯誤或遺漏相符項目而無法位於 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 中找到應用程式資料存放區的所有使用者記錄,則您需要檢查哪些記錄不匹配以及其原因。
例如,Microsoft Entra ID 中可能變更某人的電子郵件地址和 userPrincipalName,但在應用程式的資料來源中未更新其對應的
mail
屬性。 或者,使用者可能已離開組織,但仍留在應用程式的資料來源中。 或者,應用程式的資料來源中可能有一個不對應於 Microsoft Entra ID 中任何特定人員的廠商或超級管理員帳戶。如果無法在 Microsoft Entra ID 中找到使用者,或沒有作用中且無法登入,但您想要在 SAP 雲端識別服務、資料庫或目錄中更新其屬性,您必須更新應用程式、比對規則,或更新或為其建立 Microsoft Entra 使用者。 如需了解那些變更的詳細資訊,請參閱 在未能匹配至 Microsoft Entra ID 中使用者的應用程式中管理對應和使用者帳戶。
如果您選擇在 Microsoft Entra ID 中建立使用者的選項,您可以使用下列其中一項來大量建立使用者:
- CSV 檔案,如 Microsoft Entra 系統管理中心中大量建立使用者 所述
- New-MgUser cmdlet
請務必為這些新使用者填入必要的屬性,以供 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 雲端識別服務、資料庫或目錄中,與 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 使用者具有必要的屬性
啟用自動使用者佈建之前,您必須決定 Microsoft Entra ID 中的哪些使用者需要存取 SAP 雲端識別服務,然後您必須檢查以確定這些使用者在 Microsoft Entra ID 中具有必要的屬性,而且這些屬性會對應至 SAP 雲端識別服務的預期結構描述。
- 根據預設,Microsoft Entra 使用者
userPrincipalName
屬性的值會對應至 SAP 雲端識別服務的userName
和emails[type eq "work"].value
屬性。 如果使用者的電子郵件地址與其使用者主體名稱不同,您可能需要變更此對應。 - 如果公司 ZIP/郵遞區編碼格式不符合公司國家或地區,SAP 雲端身分識別服務可能會忽略 屬性的值
postalCode
。 - 根據預設,Microsoft Entra 屬性
department
會對應至 SAP 雲端識別服務urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:department
屬性。 如果 Microsoft Entra 使用者具有department
屬性值,則這些值必須符合已在 SAP 雲端識別服務中設定的部門,否則建立或更新使用者將會失敗。 如果 Microsoft Entra 使用者中的department
值與 SAP 環境中的值不一致,請在指派使用者之前移除對應。 - SAP 雲端識別服務的 SCIM 端點需要特定格式的某些屬性。 您可以在這裡深入了解這些屬性及其特定格式。
將使用者指派至 Microsoft Entra ID 中的 SAP 雲端身分識別服務應用程式
Microsoft Entra ID 會使用名為 指派 的概念,來判斷哪些使用者應接收對所選應用程式的存取權。 在自動化使用者佈建的背景下,如果 範圍 的 設定 值是 僅同步處理指派的使用者和群組,則只有指派到該應用程式角色的使用者和群組會與 Microsoft Entra ID 與 SAP 雲端識別服務同步。 將使用者指派給 SAP 雲端識別服務時,您必須在 [指派] 對話方塊中選取任何有效的應用程式特有角色 (如果有)。 具有預設存取角色的使用者會從佈建中排除。 目前,SAP 雲端識別服務唯一可用的角色是 使用者。
如果已為應用程式啟用布建,請在將更多使用者指派給應用程式之前,先確認應用程式布建不在 隔離 區中。 繼續之前,請解決造成隔離的任何問題。
檢查 SAP Cloud Identity Services 中存在但尚未指派給 Microsoft Entra 識別中應用程式的使用者
先前的步驟已評估 SAP 雲端識別服務中的使用者是否也以 Microsoft Entra ID 中的使用者身分存在。 不過,目前在 Microsoft Entra ID 中,它們可能並未全部被指派給應用程式的角色。 因此,後續步驟是查看哪些使用者未被分派至應用程式角色。
使用 PowerShell,查詢應用程式服務主體的服務主體識別碼。
例如,如果企業應用程式名為
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 雲端識別服務和 Microsoft Entra 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 aren't assigned to the application roles."
如果零位使用者 未 指派給應用程式角色,表示所有使用者 已指派給應用程式角色,則這表示在 Microsoft Entra ID 和 SAP 雲端識別服務之間沒有共同的使用者,因此不需要變更。 不過,如果 SAP Cloud Identity Services 中的一或多個使用者目前未指派給應用程式角色,您需要繼續程式,並將其新增至其中一個應用程式角色。
選取應用程式服務主體
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 雲端識別服務和 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 內傳播。
在下一個 Microsoft Entra 佈建週期中,Microsoft Entra 佈建服務會比較指派給應用程式的這些使用者的代表項目,以及 SAP 雲端識別服務中的代表項目,並更新 SAP 雲端識別服務使用者,以取得來自 Microsoft Entra ID 的屬性。
指派剩餘的使用者並監視初始同步處理
測試完成後,使用者已成功佈建至 SAP 雲端識別服務,而任何現有的 SAP 雲端識別服務使用者都指派給應用程式角色,您可以依照此處的其中一個指示,將任何其他授權的使用者指派給 SAP 雲端識別服務應用程式:
- 您可以在 Microsoft Entra 系統管理中心 將個別使用者指派給應用程式,
- 您可以透過 PowerShell Cmdlet
New-MgServicePrincipalAppRoleAssignedTo
將個別使用者指派給應用程式,如上一節所示,或 - 如果您的組織具有 Microsoft Entra ID 控管的授權,您也可以 部署權利管理原則,以將存取指派自動化。
將使用者指派給應用程式角色並處於佈建範圍之後,Microsoft Entra 佈建服務會將他們佈建至 SAP 雲端識別服務。 請注意,初始同步處理的執行時間比後續的同步處理要長,只要Microsoft Entra 佈建服務仍在執行,大約每 40 分鐘就會發生一次。
如果沒有看到正在佈建使用者,請檢閱 未佈建使用者疑難排解指南 中的步驟。 然後,透過 Microsoft Entra 系統管理中心或 Graph API 檢查佈建記錄。 將記錄篩選為失敗狀態。 如果出現 ErrorCode 為 DuplicateTargetEntries 的錯誤,這表示您的布建比對規則有歧義,您需要更新 Microsoft Entra 的使用者或用於比對的對應,以確保每位 Microsoft Entra 使用者都能匹配到唯一的應用程式使用者。 然後將記錄篩選為建立動作和已略過狀態。 如果使用者已略過 NotEffectivelyEntitled 的 SkipReason 代碼,這可能表示 Microsoft Entra ID 中的使用者帳戶未相符,因為使用者帳戶狀態為 停用。
設定單一登入
您也可以選擇為 SAP Cloud Identity Services 啟用 SAML 型單一登錄,請遵循 SAP Cloud Identity Services 單一登入一文中提供的指示,。 單一登入和自動使用者佈建可以分開設定,但這兩個功能是互補的。
監視配置
您可以使用 [同步處理詳細資料] 區段來監視進度,並遵循連結來佈建活動報告,其中會描述 SAP 雲端識別服務上的 Microsoft Entra 佈建服務所執行的所有動作。 您也可以透過 Microsoft Graph API 監視佈建專案。
如需如何讀取 Microsoft Entra 佈建記錄的詳細資訊,請參閱 關於使用者帳戶自動佈建的報告。
維護應用程式角色指派
當指派給應用程式的使用者在 Microsoft Entra ID 中更新時,這些變更會自動布建至 SAP Cloud Identity Services。
如果您有 Microsoft Entra ID 控管,您可以在 Microsoft Entra ID 中自動變更 SAP 雲端識別服務的應用程式角色指派,以在人員加入組織,或是離開或變更角色時新增或移除人員。
- 您可以 執行應用程式角色指派的一次性或週期性存取權檢閱。
- 您可以 為此應用程式建立權利管理存取套件。 您可以為獲指派存取權 (由 系統管理員要求指派、根據規則自動指派,或透過 生命週期工作流程 指派) 的使用者設定原則。