權限範圍 | Graph API 概念

**適用於︰**Graph API | Azure Active Directory

Graph API 會公開 OAuth 2.0 的權限範圍,這個權限範圍是用來控制存取有客戶目錄資料的應用程式。 身為開發人員,您要為應用程式設定具有所需存取的正確權限範圍。 通常您是透過 Azure 入口網站達到這個目標。 在登入期間,使用者或管理員會獲得一個機會,同意允許應用程式在您設定的權限範圍內存取他們的目錄資料。 因此,您應該選擇應用程式所需基本權限層級的權限範圍。 如需如何設定應用程式權限和同意程序的詳細資訊,請參閱整合應用程式與 Azure Active Directory

重要

我們強烈建議您使用 Microsoft Graph 來存取 Azure Active Directory 資源,而不是使用 Azure AD Graph API。我們目前致力於開發 Microsoft Graph,對於 Azure AD Graph API 則沒有進一步增強的計劃。Azure AD Graph API 仍適用於非常少數的案例;如需詳細資訊,請參閱 Office 開發人員中心的 Microsoft Graph 或 Azure AD Graph (英文) 部落格文章。

權限範圍概念

僅限應用程式與委派領域

權限範圍可以僅限於應用程式或委派。 僅限應用程式的範圍 (也稱為應用程式角色) 會授與應用程式範圍提供的完整權限集合。 僅限應用程式的範圍通常為沒有登入使用者而以服務方式執行的應用程式所使用。 委派權限範圍則供使用者登入的應用程式所用。 這些範圍會將登入的使用者權限委派給應用程式,讓應用程式以登入的使用者身分行動。 實際授與應用程式的權限,會是範圍授與權限和已登入使用者所擁有權限的最小權限組合 (交集)。 例如,如果權限範圍授與寫入所有目錄物件的委派權限,但已登入使用者具有的權限只可以更新自己的使用者設定檔,則應用程式就只能夠寫入已登入使用者的設定檔,不能寫入任何其他物件。

使用者和群組的完整和基本設定檔

使用者群組的完整設定檔 (或設定檔) 包含所有實體的宣告屬性。 因為設定檔可能包含機密的目錄資訊或個人識別資訊 (PII),所以數個範圍將應用程式存取限制在一組有限的屬性,稱為基本設定檔。 針對使用者,基本設定檔只包含下列屬性︰顯示名稱、名字和姓氏、相片和電子郵件地址。 針對群組,基本設定檔只包含顯示名稱。

權限範圍詳細資料

下表列出 Graph API 權限範圍,並說明其每一個所授與的存取權。

  • [範圍]**** 欄會列出範圍名稱。 範圍名稱採用的格式為:resource.operation.constraint,例如,Group.ReadWrite.All。 如果條件約束是「全部」,則範圍授與應用程式在目錄中所有指定的資源 (群組) 上執行作業 (ReadWrite) 的能力;否則,範圍只允許應用程式在已登入使用者的設定檔上作業。 範圍可授與指定作業的有限權限,如需詳細資訊,請參閱 [描述]**** 欄。
  • [權限]**** 欄會顯示範圍在 Azure 入口網站的顯示方式。
  • [描述]**** 欄會描述範圍授與的完整權限集合。 在委派範圍,實際授與應用程式的存取權,會是範圍授與存取權和已登入使用者權限的最小權限組合 (交集)。
範圍 權限 描述 範圍類型 需要管理員同意
User.Read 啟用登入並讀取使用者設定檔 允許使用者登入應用程式以及允許應用程式讀取已登入使用者的完整設定檔。 完整的設定檔包含 User 實體所有的宣告屬性。 應用程式無法讀取導覽屬性,如管理員或直屬員工。 另允許應用程式讀取下列已登入使用者的基本公司資訊 (透過 TenantDetail 物件):租用戶識別碼、租用戶顯示名稱和已驗證的網域。 已委派
User.ReadBasic.All 讀取所有使用者的基本設定檔 允許應用程式代表登入的使用者讀取組織中所有使用者的基本設定檔。 下列屬性構成使用者的基本設定檔︰顯示名稱、名字和姓氏、相片和電子郵件地址。 若要讀取使用者為所屬成員的群組,應用程式也需要 Group.Read.All 或 Group.ReadWrite.All。 已委派
User.Read.All 讀取所有使用者的完整設定檔 與 User.ReadBasic.All 一樣,但它允許應用程式讀取組織中所有使用者的完整設定檔,以及讀取如管理員和直屬員工等導覽屬性。 完整的設定檔包含 User 實體所有的宣告屬性。 若要讀取使用者為所屬成員的群組,應用程式也需要 Group.Read.All 或 Group.ReadWrite.All。 已委派
Group.Read.All 讀取所有群組 (預覽) 允許應用程式代表登入的使用者讀取組織中所有群組的基本設定檔。 應用程式也可以讀取群組所屬成員群組的基本設定檔。 群組基本設定檔只包含群組的顯示名稱。 若要讀取群組成員的設定檔資訊,應用程式也需要 User.ReadBasic 或 User.Read.All。 已委派
Group.ReadWrite.All 讀取和寫入所有的群組 (預覽) 允許應用程式代表登入的使用者讀取組織中所有群組的完整設定檔,以及建立和更新群組。 應用程式也可以讀取群組所屬成員群組的完整設定檔。 完整的設定檔包含 Group 實體所有的宣告屬性。 若要讀取或更新群組成員的設定檔,應用程式也需要 User.ReadBasic 或 User.Read.All。 已委派
Device.ReadWrite.All 讀取和寫入所有的裝置 允許應用程式讀取和寫入所有的裝置屬性,但不需登入的使用者。 不允許建立裝置、刪除裝置,或更新裝置的替代安全性識別碼。 僅限應用程式
Directory.Read.All 讀取目錄資料 允許應用程式讀取組織目錄的全部資料,例如使用者、群組、應用程式及相關聯的導覽屬性。 注意︰如果應用程式已在使用者組織的租用戶中註冊,則使用者可同意需要這個權限的應用程式。 僅限應用程式,已委派
Directory.ReadWrite.All 讀取和寫入目錄資料 允許應用程式讀取組織目錄中的全部資料。 允許應用程式建立和更新使用者和群組,並更新其導覽屬性,但禁止刪除使用者或群組。 也允許應用程式定義應用程式的結構描述擴充功能。 如需權限的詳細清單,請參閱下文的 Directory.ReadWrite.All 權限詳細資料 僅限應用程式,已委派
Directory.AccessAsUser.All 以登入的使用者身分存取目錄 允許應用程式如登入的使用者一樣存取組織目錄的資料。 注意:原生用戶端應用程式可以有這個權限的使用者同意,但 Web 應用程式需要管理員同意。 已委派

注意︰根據預設,當您使用 Azure 入口網站建立應用程式時,Azure AD 會指派給它 User.Read 的委派權限範圍。

Directory.ReadWrite.All 權限的詳細資料

Directory.ReadWrite.All 權限範圍會授與下列權限︰

  • 所有目錄物件的完整讀取權 (宣告的屬性和導覽屬性)
  • 建立及更新使用者
  • 停用和啟用使用者 (但不是公司系統管理員)
  • 設定使用者替代安全性識別碼 (但不是管理員的)
  • 建立及更新群組
  • 管理群組成員
  • 更新群組擁有者
  • 管理授權指派
  • 定義應用程式的結構描述擴充功能
  • 注意︰沒有重設使用者密碼的權限
  • 注意︰沒有刪除實體的權限 (包括使用者或群組)
  • 注意︰特別排除上文未列出之實體的建立或更新。 這包括︰應用程式、Oauth2PermissionGrant、AppRoleAssignment、裝置、ServicePrincipal、TenantDetail、網域等等。

權限範圍案例

下表顯示應用程式能夠執行特定作業所需的權限範圍。 請注意,在某些情況下,應用程式能否執行某些作業,取決於權限範圍為僅限應用程式或委派,而且如果是委派權限範圍,還要看已登入使用者的權限。

案例 所需的存取 所需的權限範圍
登入並顯示有使用者名稱和縮圖相片的圖格。 讀取已登入使用者的完整設定檔。
讀取基本公司資訊。
User.Read
基本的人員選擇器。 代表登入的使用者讀取所有使用者的基本設定檔。 User.ReadBasic.All
有完整設定檔的人員選擇器。 同上,但代表登入的使用者存取使用者的完整設定檔。 User.Read.All
組織圖導覽器。 代表登入的使用者讀取所有使用者的完整設定檔、其管理員和直屬員工。 User.Read.All
包含應用程式存取控制群組的人員選擇器。

群組和成員資格檢視器。
代表登入的使用者讀取所有群組和使用者的基本設定檔。
讀取使用者的管理員和直屬員工的基本使用者設定檔。
讀取使用者的群組成員資格的基本設定檔。
讀取群組的群組成員資格的基本設定檔。
讀取群組成員的基本設定檔。
User.ReadBasic.All 和 Group.Read.All
顯示已登入使用者和使用者的管理員、直屬員工和群組成員資格的設定檔。 使用 me 作業來讀取︰
已登入使用者的完整設定檔。
已登入使用者的管理員和直屬員工的完整設定檔。
已登入使用者所屬成員群組的基本設定檔。

注意︰兩個範圍組合所授與的存取權,會高於本文所述 me 作業的授權。
User.Read.All 和 Group.Read.All
允許使用者建立及管理群組的群組管理服務。 代表登入的使用者讀取所有群組和使用者的完整設定檔。
讀取使用者的管理員和直屬員工的完整設定檔。
讀取使用者群組成員資格的完整設定檔。
讀取群組的群組成員資格的完整設定檔。
讀取群組成員的完整設定檔。
建立和更新群組及其導覽屬性 (成員)。
User.Read.All 和 Group.ReadWrite.All
讀取所有的目錄物件 (包括導覽屬性)。 Directory.Read.All
讀取所有的目錄物件 (包括導覽屬性)。
建立並更新使用者和群組物件。
未刪除任何使用者或群組。

注意︰此處並未列出所有授與的權限。
Directory.ReadWrite.All
以登入的使用者身分行動。 代表登入的使用者讀取和寫入目錄物件 (包括導覽屬性)。 Directory.AccessAsUser.All

管理員、使用者和 guest 使用者的預設存取權

下表列出 (全域) 管理員、使用者和 guest 使用者在目錄中的預設存取權。 預設存取權可根據目錄及/或使用者成員資格在一或多個目錄角色的組態設定,進一步擴充或限制。 如需設定目錄資料的使用者和 guest 使用者存取權的詳細資訊,請參閱在 Azure Active Directory 中新增或變更使用者。 如需各種目錄角色之相關聯存取權的詳細資訊,請參閱在 Azure Active Directory (Azure AD) 中指派系統管理員角色

使用者類型 存取
全域管理員 讀取所有的目錄物件。
建立、更新和刪除所有的目錄物件
使用者 讀取所有的目錄物件。
建立應用程式和相關聯的服務主體。
更新其設定檔。
更新其所擁有的群組 (及成員屬性)。
更新其所擁有的應用程式和服務主體。
刪除其所擁有的應用程式和服務主體。
Guest 使用者 讀取其完整的設定檔。
讀取所有其他使用者的基本設定檔
讀取所有群組的基本設定檔。
讀取應用程式。
更新其設定檔的某些屬性。
不能搜尋任何使用者或群組 (請參閱後文的 guest 使用者的使用者和群組搜尋限制)。

guest 使用者的使用者和群組搜尋限制

使用者和群組搜尋功能允許應用程式對使用者群組資源集 (例如,https://graph.windows.net/myorganization/users?api-version=1.6) 執行查詢,在客戶目錄中搜尋任何使用者或群組。 管理員和使用者都有這項功能。 Guest 使用者沒有。 如果登入的使用者是 guest 使用者,視權限範圍而定,應用程式可以使用使用者的物件識別碼或使用者主體名稱 (UPN) 或群組的物件識別碼 (例如,https://graph.windows.net/myorganization/users/241f22af-f634-44c0-9a15-c8cd2cea5531?api-version=1.6) 來讀取特定使用者或群組的設定檔;不過,它無法對可能要求多個實體的使用者群組資源集執行查詢。 例如,視權限範圍而定,應用程式可以讀取它跟著導覽屬性中的連結所取得之使用者或群組的設定檔,但它無法發出查詢來傳回目錄中的所有使用者或群組。

其他資源