教學課程:將目錄讀取者角色指派給 Microsoft Entra 群組和管理角色指派

適用於:Azure SQL DatabaseAzure SQL 受控執行個體Azure Synapse Analytics

本文會引導您在 Microsoft Entra ID 中建立群組(先前稱為 Azure Active Directory),並指派該群組目錄 讀取者 角色。 目錄讀取者許可權可讓群組擁有者將其他成員新增至群組,例如 Azure SQL 資料庫Azure SQL 受控執行個體Azure Synapse Analytics 的受控識別。 這會略過全域 管理員 istrator 或 Privileged Role 管理員 istrator 的需求,直接為租使用者中的每個邏輯伺服器身分識別指派目錄讀取者角色。

注意

Microsoft Entra 標識符 先前稱為 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 中的使用者指派受控識別。

必要條件

使用 Azure 入口網站 的目錄讀取者角色指派

建立新的群組,並指派擁有者和角色

  1. 此初始設定需要具有全域 管理員 istrator 或 Privileged Role 管理員 istrator 許可權的使用者。

  2. 讓具特殊許可權的使用者登入 Azure 入口網站

  3. 移至 Microsoft Entra ID 資源。 在 [受控] 底下,移至 [群組]。 選取 [ 新增群組 ] 以建立新的群組。

  4. 選取 [安全性 ] 作為群組類型,然後填入其餘欄位。 請確定可以將 Microsoft Entra 角色的設定 指派給群組 ,切換為 [是]。 然後將 Microsoft Entra ID Directory 讀取者 角色指派給群組。

  5. 將 Microsoft Entra 使用者指派為擁有者(s) 指派給已建立的群組。 群組擁有者可以是一般 AD 使用者,而不需要指派任何 Microsoft Entra 系統管理角色。 擁有者應該是管理 SQL 資料庫、SQL 受管理執行個體 或 Azure Synapse 的使用者。

    Microsoft Entra ID-new-group

  6. 選取 [建立]

檢查已建立的群組

注意

請確定 [群組類型 ] 為 [安全性]。 Azure SQL 不支援 Microsoft 365 群組。

若要檢查和管理已建立的群組,請返回 Azure 入口網站 中的 [群組] 窗格,然後搜尋您的組名。 選取群組之後,可以在 [管理] 設定的 [擁有者和成員] 功能表下新增其他擁有者和成員。 您也可以檢閱群組的 指派角色

Screenshot of a Group pane with the links that open the Settings menus for Members, Owners, and Assigned roles highlighted.

將 Azure SQL 受控識別新增至群組

注意

我們在此範例中使用 SQL 受管理執行個體,但類似的步驟可以套用至 SQL 資料庫 或 Azure Synapse,以達到相同的結果。

針對後續步驟,不再需要全域 管理員 istrator 或 Privileged Role 管理員 istrator 使用者。

  1. 以管理 SQL 受管理執行個體 的使用者身分登入 Azure 入口網站,而且是稍早建立群組的擁有者。

  2. 在 Azure 入口網站 中尋找 SQL 受控實例資源的名稱

    Screenshot of the SQL managed instances screen with the SQL instance name ssomitest and the Subnet name ManagedInstance highlighted.

    在布建 SQL 受管理執行個體 期間,會為您的實例建立 Microsoft Entra 身分識別,並將其註冊為 Microsoft Entra 應用程式。 身分識別的名稱與 SQL 受管理執行個體 名稱的前置詞相同。 您可以遵循下列步驟,找到 SQL 受管理執行個體 的身分識別(也稱為服務主體):

    • 移至 Microsoft Entra ID 資源。 在 [ 管理] 設定下,選取 [企業應用程式]。 對象 識別碼 是 實例的身分識別。

    Screenshot of the Enterprise applications page for a Microsoft Entra ID resource with the Object ID of the SQL Managed instance highlighted.

  3. 移至 Microsoft Entra ID 資源。 在 [受控] 底下,移至 [群組]。 選取您建立的群組。 在群組的 [ 受控 ] 設定下,選取 [ 成員]。 選取 [新增成員],然後搜尋上面找到的名稱,將您的 SQL 受管理執行個體 服務主體新增為群組的成員。

    Screenshot of the Members page for a Microsoft Entra resource with the options highlighted for adding an SQL Managed instance as a new member.

注意

可能需要幾分鐘的時間,才能透過 Azure 系統傳播服務主體許可權,並允許存取 Microsoft Graph API。 您可能必須等候幾分鐘,才能布建 microsoft Entra 系統管理員以進行 SQL 受管理執行個體。

備註

針對 SQL 資料庫 和 Azure Synapse,可以在邏輯伺服器建立期間或建立伺服器之後建立伺服器身分識別。 如需如何在 SQL 資料庫 或 Azure Synapse 中建立或設定伺服器識別的詳細資訊,請參閱啟用服務主體來建立 Microsoft Entra 使用者

針對 SQL 受管理執行個體,必須先將目錄讀取者角色指派給受控實例身分識別,才能為受控實例設定 Microsoft Entra 系統管理員。

為邏輯伺服器設定 Microsoft Entra 系統管理員時,SQL 資料庫 或 Azure Synapse 不需要將目錄讀取者角色指派給伺服器身分識別。 不過,若要代表 Microsoft Entra 應用程式在 SQL 資料庫 或 Azure Synapse 中啟用 Microsoft Entra 物件建立,則需要目錄讀取者角色。 如果未將角色指派給邏輯伺服器身分識別,在 Azure SQL 中建立 Microsoft Entra 使用者將會失敗。 如需詳細資訊,請參閱 使用 Azure SQL 的 Microsoft Entra 服務主體。

使用 PowerShell 指派目錄讀取者角色

重要

全域 管理員 istratorPrivileged Role 管理員 istrator 必須執行這些初始步驟。 除了 PowerShell 之外,Microsoft Entra ID 還提供 Microsoft Graph API,以 在 Microsoft Entra ID 中建立可指派的角色群組。

  1. 使用下列命令下載 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
    
  2. 連線 至您的 Microsoft Entra 租使用者。

    Connect-MgGraph
    
  3. 建立安全組以指派 目錄讀取者 角色。

    • DirectoryReaderGroupDirectory Reader Group、 和 DirRead 可以根據您的喜好設定進行變更。
    $group = New-MgGroup -DisplayName "DirectoryReaderGroup" -Description "Directory Reader Group" -SecurityEnabled:$true -IsAssignableToRole:$true -MailEnabled:$false -MailNickname "DirRead"
    $group
    
  4. 將目錄讀取者角色指派給群組。

    # 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
    
  5. 將擁有者指派給群組。

    • 將取代 <username> 為您想要擁有此群組的使用者。 您可以重複這些步驟來新增數個擁有者。
    $newGroupOwner = Get-MgUser -UserId "<username>"
    $newGroupOwner
    
    $GrOwner = New-MgGroupOwnerByRef -GroupId $group.Id -DirectoryObjectId $newGroupOwner.Id
    

    檢查群組的擁有者:

    Get-MgGroupOwner -GroupId $group.Id
    

    您也可以在 Azure 入口網站驗證群組的擁有者。 請遵循檢查已建立的群組中的步驟。

將服務主體指派為群組的成員

針對後續步驟,不再需要全域 管理員 istrator 或 Privileged Role 管理員 istrator 使用者。

  1. 使用同時管理 Azure SQL 資源的群組擁有者,執行下列命令以連線到您的 Microsoft Entra ID。

    Connect-MgGraph
    
  2. 將服務主體指派為所建立群組的成員。

    • 以邏輯伺服器或受控實例的名稱取代 <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)'"
    

下一步