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

本文介绍如何在 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 存储帐户详细信息。

Screenshot of the Basics tab in workspace creation flow.

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

Screenshot of providing the ADLS Gen2 storage account details.

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

Screenshot of the successful storage blob data contributor assignment.

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

Screenshot of an unsuccessful storage blob data contributor assignment, with the error box highlighted.

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

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

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

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

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

Screenshot of the Azure portal, of the Overview of the ADLS Gen2 storage account.

步骤 2:选择容器

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

Screenshot of the Azure portal showing the name of the ADLS Gen2 storage file 'contosocontainer'.

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

Screenshot that shows the container or file system that you should select.

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

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

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

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

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

    注意

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

    Screenshot of the add role assignment page in the Azure portal.

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

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

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

Screenshot of the Role Assignments button in the Azure portal, used to verify role assignment.

应看到“存储 Blob 数据参与者”部分下列出了托管标识,并向其分配了“存储 blob 数据参与者”角色。
Screenshot of the Azure portal, showing ADLS Gen2 storage account container selection.

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

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

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

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

注意

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

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

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

Diagram that shows permission structure on data lake.

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

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

    Screenshot that shows the manage access option.

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

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

    Screenshot that shows granting read permissions.

注意

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

后续步骤

详细了解工作区托管标识