教學課程:將目錄讀取者角色指派給 Microsoft Entra 群組並管理角色指派
適用於:Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics
本文將引導您在 Microsoft Entra ID (先前稱為 Azure Active Directory) 中建立群組,並向該群組指派目錄讀取者角色。 目錄讀取者權限可讓群組擁有者將其他成員新增至群組,例如 Azure SQL 資料庫、AAzure SQL 受控執行個體和 Azure Synapse Analytics 的受控識別。 這會略過全域系統管理員或特殊權限角色管理員直接為租用戶中的每個邏輯伺服器身分識別指派目錄讀取者角色。
注意
Microsoft Entra ID 先前稱為 Azure Active Directory (Azure AD)。
此教學課程使用了使用 Microsoft Entra 群組來管理角色指派中介紹的功能。
如需將目錄讀取者角色指派給適用於 Azure SQL 的 Microsoft Entra 群組的優點之詳細資訊,請參閱適用於 Azure SQL 的 Microsoft Entra ID 中的目錄讀取者角色。
注意
有了適用於 Azure SQL 的 Microsoft Graph 支援,您可以使用較低層級的權限取代「目錄讀取者」角色。 如需詳細資訊,請參閱適用於 Azure SQL 之 Microsoft Entra ID 中的使用者指派的受控識別。
必要條件
- Microsoft Entra 租用戶。 如需詳細資訊,請參閱使用 Azure SQL 設定和管理 Microsoft Entra 驗證。
- Azure SQL 資料庫、Azure SQL 受控執行個體 或 Azure Synapse。
使用 Azure 入口網站指派目錄讀取者角色
建立新的群組,並指派擁有者和角色
讓具有特殊權限的使用者登入 Azure 入口網站。
移至 Microsoft Entra ID 資源。 在 [受控] 底下,移至 [群組]。 選取 [新增群組] 來建立新的群組。
選取 [安全性] 作為群組類型,然後填妥其餘欄位。 將 [可以將 Microsoft Entra 角色指派給群組] 開關切換為 [是]。 然後將 Microsoft Entra ID [目錄讀取者] 角色指派給群組。
將 Microsoft Entra 使用者指派為所建立的群組的擁有者。 群組擁有者可以是一般 AD 使用者,而不需要指派任何 Microsoft Entra 系統管理角色。 擁有者應該是管理 SQL Database、SQL 受控執行個體或 Azure Synapse 的使用者。
選取 [建立]
檢查已建立的群組
注意
請確定 [群組類型] 為 [安全性]。 Azure SQL 不支援 Microsoft 365 群組。
若要檢查和管理已建立的群組,請返回 Azure 入口網站中的 [群組] 窗格,然後搜尋群組名稱。 選取群組之後,可以在 [管理] 設定的 [擁有者] 和 [成員] 功能表下新增其他擁有者和成員。 也可以檢閱群組的指派角色。
將 Azure SQL 受控識別新增至群組
注意
我們在此範例中使用 SQL 受控執行個體,但類似的步驟可以套用至 SQL Database 或 Azure Synapse 以取得相同的結果。
在後續步驟中,不再需要全域系統管理員或特殊權限角色管理員使用者。
以管理 SQL 受控執行個體的使用者以及稍早建立之群組的擁有者身分登入 Azure 入口網站。
請在 Azure 入口網站中找到您的 SQL 受控執行個體名稱。
在佈建 SQL 受控執行個體期間,系統會為您的執行個體建立 Microsoft Entra 身分識別,並將其註冊為 Microsoft Entra 應用程式。 身分識別的名稱與 SQL 受控執行個體名稱的前置詞相同。 您可以遵循下列步驟,找到 SQL 受控執行個體的身分識別 (也稱為服務主體):
- 移至 Microsoft Entra ID 資源。 在 [管理] 底下,選取 [企業應用程式]。 物件識別碼是執行個體的身分識別。
移至 Microsoft Entra ID 資源。 在 [受控] 底下,移至 [群組]。 選取您建立的群組。 在群組的 [受控] 設定下,選取 [成員]。 選取 [新增成員],然後搜尋上面找到的名稱,將您的 SQL 受控執行個體服務主體新增為群組的成員。
注意
可能需要幾分鐘的時間,才能透過 Azure 系統傳播服務主體權限,並允許存取 Microsoft Graph API。 您可能必須等候幾分鐘,才能佈建 SQL 受控執行個體的 Microsoft Entra 管理員。
備註
對於 SQL Database 和 Azure Synapse,可以在邏輯伺服器建立期間或伺服器建立之後,建立伺服器身分識別。 如需如何在 SQL Database 或 Azure Synapse 中建立或設定伺服器身分識別的詳細資訊,請參閱啟用服務主體以建立 Microsoft Entra 使用者。
對於 SQL 受控執行個體,必須先將目錄讀取者角色指派給受控執行個體身分識別,才能為受控執行個體設定 Microsoft Entra 管理員。
在為邏輯伺服器設定 Microsoft Entra 管理員時,SQL Database 或 Azure Synapse 不需要將目錄讀取者角色指派給伺服器身分識別。 不過,若要代表 Microsoft Entra 應用程式在 SQL Database 或 Azure Synapse 中支援 Microsoft Entra 物件建立,則需要目錄讀取者角色。 如果未將角色指派給邏輯伺服器身分識別,在 Azure SQL 中建立 Microsoft Entra 使用者的動作將會失敗。 如需詳細資訊,請參閱使用 Azure SQL 的 Microsoft Entra 服務主體。
使用 PowerShell 指派目錄讀取者角色
重要
全域系統管理員或特殊權限角色管理員必須執行這些初始步驟。 除了 PowerShell 之外,Microsoft Entra ID 還提供 Microsoft Graph API,以 在 Microsoft Entra ID 中建立角色可指派的群組。
使用下列命令下載 Microsoft Graph PowerShell 模組: 您必須以管理員身分執行 PowerShell。
Install-Module Microsoft.Graph.Authentication Import-Module Microsoft.Graph.Authentication # To verify that the module is ready to use, run the following command: Get-Module Microsoft.Graph.Authentication
連線至您的 Microsoft Entra 租用戶。
Connect-MgGraph
建立安全組以指派目錄讀取者角色。
DirectoryReaderGroup
、Directory Reader Group
、和DirRead
可以根據您的喜好設定進行變更。
$group = New-MgGroup -DisplayName "DirectoryReaderGroup" -Description "Directory Reader Group" -SecurityEnabled:$true -IsAssignableToRole:$true -MailEnabled:$false -MailNickname "DirRead" $group
將目錄讀取者角色指派給群組。
# Displays the Directory Readers role information $roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "DisplayName eq 'Directory Readers'" $roleDefinition
# Assigns the Directory Readers role to the group $roleAssignment = New-MgRoleManagementDirectoryRoleAssignment -DirectoryScopeId '/' -RoleDefinitionId $roleDefinition.Id -PrincipalId $group.Id $roleAssignment
將擁有者指派給群組。
- 將
<username>
替換為您希望負責此群組的使用者。 可以重複這些步驟來新增多個擁有者。
$newGroupOwner = Get-MgUser -UserId "<username>" $newGroupOwner
$GrOwner = New-MgGroupOwnerByRef -GroupId $group.Id -DirectoryObjectId $newGroupOwner.Id
檢查群組的擁有者:
Get-MgGroupOwner -GroupId $group.Id
也可以在 Azure 入口網站驗證群組的擁有者。 請遵循檢查已建立的群組中的步驟。
- 將
將服務主體指派為群組的成員
在後續步驟中,不再需要全域系統管理員或特殊權限角色管理員使用者。
使用同時管理 Azure SQL 資源的群組擁有者,執行下列命令以連線至您的 Microsoft Entra ID。
Connect-MgGraph
將服務主體指派為已建立群組的成員。
- 將
<ServerName>
替換為您的邏輯伺服器或受控執行個體的名稱。 如需詳細資訊,請參閱將 Azure SQL 服務身分識別新增至群組一節
# Returns the service principal of your Azure SQL resource $managedIdentity = Get-MgServicePrincipal -Filter "displayName eq '<ServerName>'" $managedIdentity
# Adds the service principal to the group New-MgGroupMember -GroupId $group.Id -DirectoryObjectId $managedIdentity.Id
下列命令會傳回服務主體物件識別碼,指出其已新增至群組:
Get-MgGroupMember -GroupId $group.Id -Filter "Id eq '$($managedIdentity.Id)'"
- 將