你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

教程:将目录读取者角色分配到 Microsoft Entra 组并管理角色分配

本文将引导你如何在 Microsoft Entra ID(前称 Azure Active Directory)中创建一个组,并为该组分配目录读取者角色。 该角色分配允许组主将 Azure Synapse Analytics 资源的托管标识添加到组中。 这种方法避免了要求特 权角色管理员 直接为每个身份分配目录阅读器角色。

本教程使用使用 Microsoft Entra 组来管理角色分配中引入的功能。

注意

Microsoft Entra server principals 目前在 Azure Synapse Analytics 中处于预览状态。

你可以不使用目录读取者角色,而是分配较低级别的 Microsoft Graph 权限,以遵循最小权限原则。 欲了解更多,请参见 Azure Synapse Analytics 的 Microsoft Entra 托管标识。

Prerequisites

通过使用 Azure 门户进行目录读取者角色分配

创建新组并分配所有者和角色

  1. 你需要一个拥有 特权角色管理员 权限的用户来进行初始设置。
  2. 让特权用户登录Azure门户。
  3. 转到 Microsoft Entra ID 资源。 在 “管理”下,转到 “组”。 选择“新建组”以创建一个新组。
  4. 选择“安全”作为组类型,并填充其余字段。 确保将可分配给该组的 Microsoft Entra 角色设置切换为“是”。 然后,将 Microsoft Entra ID 目录读取者角色分配给组。
  5. 将 Microsoft Entra 用户指定为该群组的所有者。 组所有者可以是普通的 Microsoft Entra 用户,且不具有管理员角色。 所有者应该是管理你 Azure Synapse 资源的用户。
  6. 选择“创建”。

检查你创建的群组

注意

确保组类型为Security。 Azure Synapse SQL 不支持 Microsoft 365 组。

要检查和管理你创建的组,回到 Azure 门户的组面板,搜索你的组名。 选择组后,您可以在管理设置的“所有者”和“成员”菜单下添加更多所有者和成员。 还可查看组的“已分配角色”。

将 Azure Synapse 托管标识添加到组中

在接下来的步骤中,您不再需要特权角色管理员用户。

  1. 登录 Azure 门户,作为管理 Azure Synapse 资源并拥有你创建的组的用户。

  2. 查找你的 Azure Synapse 工作区的托管标识。 有关工作空间标识的信息,请参阅 Azure Synapse Analytics 的托管服务标识。

  3. 在 Microsoft Entra ID 中,在管理中选择企业应用。 搜索托管身份并记录其 对象ID。

  4. 在 Microsoft Entra ID 中,在管理下,选择组。 选择你创建的群组,然后选择 “成员”>添加成员。 搜索并添加 Azure Synapse 管理身份。

注意

权限传播并允许访问 Microsoft Graph 可能需要几分钟时间。

Remarks

你可以在 逻辑服务器 创建时创建服务器身份,也可以在服务器创建后创建。 有关如何在 Azure Synapse 中创建或设置服务器标识的详细信息,请参阅 Azure Synapse Analytics 的托管标识。

在为逻辑服务器设置 Microsoft Entra 管理员时,Azure Synapse 不需要将目录读者角色分配给服务器身份。 然而,要在Azure Synapse中代表Microsoft Entra应用创建Microsoft Entra对象,需要 Directory Readers 角色(或Microsoft Entra中关于Azure SQL的托管身份中讨论的较低级别权限)。 如果你没有将角色分配给逻辑服务器身份,创建 Microsoft Entra 用户就会失败。

使用 PowerShell 的目录读取者角色分配

Important

特权角色管理员 需要执行这些初步步骤。 除 PowerShell 外,Microsoft Entra ID 还提供 Microsoft 图形 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. 创建安全组以分配目录读取者角色。

    • DirectoryReaderGroup、Directory 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 -OdataId "https://graph.microsoft.com/v1.0/users/$($newGroupOwner.Id)" 
    

    检查组的所有者:

    Get-MgGroupOwner -GroupId $group.Id
    

    还可在 Azure 门户中验证组的所有者。 要查看你创建的组,请参见 查看已创建的组。

将服务主体分配为组的成员

在接下来的步骤中,您不再需要特权角色管理员用户。

  1. 作为一名组主,同时管理 Azure Synapse 资源,请执行以下命令连接 Microsoft Entra ID。

    Connect-MgGraph
    
  2. 将服务主体指定为你创建的组成员。

    # 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
    

    以下命令将返回服务主体对象 ID,指示已将其添加到组:

    Get-MgGroupMember -GroupId $group.Id -Filter "Id eq '$($managedIdentity.Id)'"