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

向工作区托管标识授予权限

本文介绍如何在 Azure Synapse 工作区中向托管标识授予权限。 权限反过来允许通过 Azure 门户访问工作区中的专用 SQL 池和 ADLS Gen2 存储帐户。

注意

在此文档的剩余部分中,我们将此工作区托管标识称为托管标识。

向托管标识授予 ADLS Gen2 存储帐户的权限

创建 Azure Synapse 工作区需要 ADLS Gen2 存储帐户。 为了在 Azure Synapse 工作区中成功启动 Spark 池,Azure Synapse 托管标识需要在此存储帐户上具有存储 Blob 数据参与者角色。 Azure Synapse 中的管道业务流程也从此角色中获益。

创建工作区时向托管标识授予权限

使用 Azure 门户创建 Azure Synapse 工作区后,Azure Synapse 将尝试向托管标识授予存储 Blob 数据参与者角色。 你在“基本信息”选项卡中提供 ADLS Gen2 存储帐户详细信息。

工作区创建流中的“基本信息”选项卡的屏幕截图。

在“帐户名称”和“文件系统名称”中选择 ADLS Gen2 存储帐户和文件系统。

提供 ADLS Gen2 存储帐户详细信息的屏幕截图。

如果工作区创建者也是 ADLS Gen2 存储帐户的所有者,则 Azure Synapse 向托管标识分配存储 Blob 数据参与者角色。 将在输入的存储帐户详细信息下看到以下消息。

显示成功分配存储 Blob 数据参与者的屏幕截图。

如果工作区创建者不是 ADLS Gen2 存储帐户的所有者,则 Azure Synapse 不向托管标识分配存储 Blob 数据参与者角色。 显示在存储帐户详细信息下面的消息通知工作区创建者他们没有足够的权限向托管标识授予存储 Blob 数据参与者角色。

屏幕截图显示成功分配存储 Blob 数据参与者,其中突出显示了错误框。

就像消息所说的,除非将存储 Blob 数据参与者分配给托管标识,否则无法创建 Spark 池。

创建工作区后向托管标识授予权限

创建工作区期间,如果未将存储 Blob 数据参与者分配给托管标识,则 ADLS Gen2 存储帐户的所有者手动将该角色分配给托管标识。 以下步骤帮助完成手动分配。

步骤 1:导航到 Azure 门户中的 ADLS Gen2 存储帐户

在 Azure 门户中,打开 ADLS Gen2 存储帐户,并从左侧导航栏中选择“概览”。 只需在容器或文件系统级别分配存储 Blob 数据参与者角色。 选择“容器”

Azure 门户的屏幕截图,其中显示 ADLS Gen2 存储帐户的概述。

步骤 2:选择容器

托管标识应对创建工作区时提供的容器(文件系统)具有数据访问权限。 可以在 Azure 门户中找到此容器或文件系统。 在 Azure 门户中打开 Azure Synapse 工作区,并从左侧导航栏中选择“概览”。

Azure 门户的屏幕截图,其中显示 ADLS Gen2 存储文件的名称“contosocontainer”。

选择相同的容器或文件系统,向托管标识授予存储 Blob 数据参与者角色。

显示应该选择的容器或文件系统的屏幕截图。

步骤 3:打开“访问控制”并添加角色分配

  1. 选择“访问控制 (IAM)”。

  2. 选择“添加”>“添加角色分配”,打开“添加角色分配”页面 。

  3. 分配以下角色。 有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色

    设置
    角色 存储 Blob 数据参与者
    将访问权限分配到 MANAGEDIDENTITY
    成员 托管标识名称

    注意

    托管标识名称也是工作区名称。

    Azure 门户中的“添加作业分配”页面的屏幕截图。

  4. 选择“保存”以添加角色分配。

步骤 4:验证是否已将存储 Blob 数据参与者角色分配给托管标识

依次选择“访问控制(IAM)”、“角色分配”。

屏幕截图显示 Azure 门户中的“作业分配”按钮,它用于验证角色分配。

应看到“存储 Blob 数据参与者”部分下列出了托管标识,并向其分配了“存储 blob 数据参与者”角色。
Azure 门户的屏幕截图,其中显示 ADLS Gen2 存储帐户容器选择。

存储 Blob 数据参与者角色的替代选项

你还可以授予对一部分文件的更精细权限,而不是向自己授予存储 Blob 数据参与者角色。

需要访问此容器中某些数据的所有用户还必须对所有父文件夹(直至根目录,即容器)具有“执行”权限。

详细了解如何在 Azure Data Lake Storage Gen2 中设置 ACL

注意

必须在 Data Lake Storage Gen2 中设置容器级别的“执行”权限。 可以在 Azure Synapse 中设置对文件夹的权限。

如果要在此示例中查询 data2.csv,则需要以下权限:

  • 对容器的“执行”权限
  • 对 folder1 的“执行”权限
  • 对 data2.csv 的“读取”权限

显示数据湖的权限结构的图示。

  1. 以管理员用户身份(对你要访问的数据拥有完全权限)登录到 Azure Synapse。

  2. 在数据窗格中,右键单击该文件,然后选择“管理访问权限”。

    显示“管理访问权限”选项的屏幕截图。

  3. 至少选择“读取”权限。 输入用户的 UPN 或对象 ID,例如 user@contoso.com。 选择 添加

  4. 为此用户授予“读取”权限。

    显示授予读取权限的屏幕截图。

注意

对于来宾用户,此步骤需要直接通过 Azure Data Lake 来完成,因为不能直接通过 Azure Synapse 完成此操作。

后续步骤

详细了解工作区托管标识