如何解決 Azure Active Directory Graph API 無法刪除用戶或組

來源: Microsoft Azure
作者:Microsoft Azure
時(shí)間:2021-02-02
18023
Azure Active Directory(AD)Graph API通過OData REST API終結(jié)點(diǎn)提供對(duì)Azure AD的編程訪問權(quán)限。應(yīng)用程序可以使用Azure AD Graph API對(duì)目錄數(shù)據(jù)和對(duì)象執(zhí)行創(chuàng)建、讀取、更新和刪除(CRUD)操作。例如,可以使用Azure AD Graph API創(chuàng)建新用戶、查看或更新用戶的屬性、更改用戶的密碼、檢查基于角色的訪問的組成員身份、禁用或刪除用戶。

問題描述

Azure Active Directory(AD)Graph API通過OData REST API終結(jié)點(diǎn)提供對(duì)Azure AD的編程訪問權(quán)限。應(yīng)用程序可以使用Azure AD Graph API對(duì)目錄數(shù)據(jù)和對(duì)象執(zhí)行創(chuàng)建、讀取、更新和刪除(CRUD)操作。例如,可以使用Azure AD Graph API創(chuàng)建新用戶、查看或更新用戶的屬性、更改用戶的密碼、檢查基于角色的訪問的組成員身份、禁用或刪除用戶。

然而用戶在使用Azure AD Graph API時(shí)出現(xiàn)以下狀況:

用戶賦予了Graph API:Read and write directory data權(quán)限(即:Directory.ReadWrite.All):

01.png

發(fā)現(xiàn)可以創(chuàng)建、讀取以及更新用戶和組的信息,但是在進(jìn)行刪除用戶或組的操作時(shí)卻出現(xiàn)權(quán)限不足(403)的情況:Insufficient privileges to complete the operation.

問題分析

參考官方文檔Microsoft Graph目錄權(quán)限,可以發(fā)現(xiàn)在Directory.ReadWrite.All的權(quán)限說明中明確指出了不允許應(yīng)用刪除用戶或組,或重置用戶密碼的操作:

微信圖片_20210202103416.png

解決方法

目前有兩種方法可以解決Graph API刪除用戶或組權(quán)限不足的情況:

·方法一:將應(yīng)用程序添加至全局管理員/公司管理員角色(此方法步驟比較繁瑣但是對(duì)您的應(yīng)用程序類型沒有限制)

·方法二:為Microsoft Graph添加:Access directory as the signed-in user(即:Directory.AccessAsUser.All)權(quán)限(此方法步驟比較簡單,可以直接在Azure門戶上進(jìn)行操作,但是只適用于應(yīng)用程序類型為本機(jī)的應(yīng)用程序)

方法一:將應(yīng)用程序添加至全局管理員/公司管理員角色

關(guān)于全局管理員/公司管理員角色說明參考官方文檔Azure Active Directory可用的角色:

備注

全局管理員/公司管理員:與此角色的用戶有權(quán)訪問Azure Active Directory,以及對(duì)Exchange Online、SharePoint Online和Skype for Business Online等Azure Active Directory聯(lián)合的服務(wù)中的所有管理功能。注冊(cè)Azure Active Directory租戶的人員將成為全局管理員。只有全局管理員才能分配其他管理員角色。公司中可以有多個(gè)全局管理員。全局管理員可以為任何用戶和所有其他管理員重置密碼。在Microsoft Graph API、Azure AD Graph API和Azure AD PowerShell中,此角色標(biāo)識(shí)為“公司管理員”。在Azure門戶中則為“全局管理員”。

由于目前還不可以在Azure門戶上進(jìn)行該操作,所以我們需要使用Azure ActiveDirectory PowerShell模塊(MSOnline),具體操作步驟如下:

1.安裝MSOnline PowerShell for Azure Active Directory。

2.使用以下命令將應(yīng)用程序添加至全局管理員/公司管理員角色:

PowerShell

#authenticate to your tenant with your Administrator Account

Connect-MsolService-AzureEnvironment AzureChinaCloud

#Then we need to get the Object ID of both the Service Principal we want to elevate,and the Company Administrator Role for your tenant.

#Search for Service Principal by App ID GUID:

$sp=Get-MsolServicePrincipal-AppPrincipalId<App ID GUID>

#Search for Directory Role by Name

$role=Get-MsolRole-RoleName"Company Administrator"

#Now we can use the Add-MsolRoleMember command to add this role to the service principal.

Add-MsolRoleMember-RoleObjectId$role.ObjectId-RoleMemberType ServicePrincipal-RoleMemberObjectId$sp.ObjectId

#To check everything is working,lets get back all the members of the Company Administrator role:

#You should see your application in that list,where RoleMemberType is ServicePrincipal and DisplayName is the name of your application.

Get-MsolRoleMember-RoleObjectId$role.ObjectId

通過以上步驟就可以將您的應(yīng)用添加到全局管理員/公司管理員角色了,此時(shí)您的應(yīng)用程序就獲得了全局管理員的所有權(quán)限,再通過Graph API就可以完成用戶或組的刪除操作了:

Connection returned HTTP code:204 with message:No Content

方法二:為Microsoft Graph添加:Access directory as the signed-in user(即:Directory.AccessAsUser.All)權(quán)限

具體操作步驟如下:

1.使用全局管理員身份的用戶登錄Azure門戶。

2.選擇您的應(yīng)用程序:Azure Active Directory->應(yīng)用注冊(cè)-><您的應(yīng)用程序>。

3.為您的應(yīng)用程序添加Access directory as the signed in user權(quán)限:

02.png

完成以上操作后,您就可以使用Graph API進(jìn)行用戶或組的刪除操作了。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Microsoft Azure,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
隨著人工智能技術(shù)持續(xù)重塑企業(yè)運(yùn)營方式,企業(yè)需要能夠處理海量數(shù)據(jù)的系統(tǒng),以支持實(shí)時(shí)洞察,同時(shí)幫助他們應(yīng)對(duì)跨IT和OT環(huán)境(包括云端、邊緣和本地)中運(yùn)營、應(yīng)用、數(shù)據(jù)和基礎(chǔ)設(shè)施的協(xié)作難題。
Azure
微軟云
云服務(wù)
2024-12-172024-12-17
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來
.NET 9現(xiàn)已正式發(fā)布,它為.NET平臺(tái)的發(fā)展掀開了嶄新的一頁,突破了性能、云原生開發(fā)和AI技術(shù)集成的邊界。
Azure
微軟云
云服務(wù)
2024-12-162024-12-16
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
智能Microsoft Copilot副駕駛for Azure網(wǎng)絡(luò)服務(wù)現(xiàn)已推出公共預(yù)覽版。
Azure
微軟云
云服務(wù)
2024-12-102024-12-10
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
一年前,我們正式推出了一款端到端數(shù)據(jù)平臺(tái),旨在幫助組織推動(dòng)人工智能轉(zhuǎn)型,并重新定義數(shù)據(jù)的連接、管理和分析方式。
Azure
微軟云
云服務(wù)
2024-12-092024-12-09
個(gè)人VIP