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

Azure Data Share 的角色和要求

本文介绍了使用 Azure Data Share 服务共享和接收数据所需的角色和权限。

角色和要求

使用 Azure Data Share 服务,无需在数据提供程序和使用者之间交换凭据即可共享数据。 对于基于快照的共享,Azure Data Share 服务使用托管标识(以前称为 MSI)对 Azure 数据存储进行身份验证。

若要在 Azure Data share 中创建共享,用户需要以下权限:

存储和数据湖共享

数据存储类型 操作 源数据存储上的角色 目标数据存储上的角色 注意
Azure Blob 存储 共享数据 存储帐户参与者** **相反,可以使用必要的存储操作创建自定义 角色
接收数据 存储帐户参与者** **相反,可以使用必要的存储操作创建自定义 角色
自动分配 MI 权限以共享 具有 Microsoft.Authorization/role assignments/write 的角色* 可选。 相反,你可以 手动分配 MI 权限。
自动分配 MI 权限以接收 具有 Microsoft.Authorization/role assignments/write 的角色* 可选。 相反,你可以 手动分配 MI 权限。
Azure Data Lake Gen 1 共享数据 对要共享的文件的访问和写入权限。
接收数据 不支持
自动分配 MI 权限以共享 具有 Microsoft.Authorization/role assignments/write 的角色* 可选。 相反,你可以 手动分配 MI 权限。
自动分配 MI 权限以接收 不支持。
Azure Data Lake Gen 2 共享数据 存储帐户参与者** **相反,可以使用必要的存储操作创建自定义 角色
接收数据 存储帐户参与者** **相反,可以使用必要的存储操作创建自定义 角色
自动分配 MI 权限以共享 具有 Microsoft.Authorization/role assignments/write 的角色* 可选。 相反,你可以 手动分配 MI 权限。
自动分配 MI 权限以接收 具有 Microsoft.Authorization/role assignments/write 的角色* 可选。 相反,你可以 手动分配 MI 权限。

* 此权限存在于“所有者”角色中

有关在 Azure 存储之间共享和从 Azure 存储共享的详细信息,请参阅文章,了解如何从 Azure Blob 存储 和 Azure Data Lake 存储共享和接收数据。

SQL 数据库共享

若要从 SQL 共享数据,可以使用以下任一项:

若要将数据接收到 SQL 中,需要 分配接收数据的权限。

要共享的 Microsoft Entra 身份验证

这些先决条件包含你将需要的身份验证,以便 Azure Data Share 可以与 Azure SQL 数据库进行连接:

  • 你将需要权限来向 SQL Server 上的数据库进行写入:Microsoft.Sql/servers/databases/write。 “参与者”角色有此权限。
  • SQL Server Microsoft Entra 管理员权限。
  • SQL Server 防火墙访问:
    1. Azure 门户中,导航到 SQL Server。 从左侧导航栏中选择“防火墙和虚拟网络”。
    2. 对于“允许 Azure 服务和资源访问此服务器”,选择“是”。
    3. 单击“+ 添加客户端 IP”。 客户端 IP 地址可能会更改,因此,下次从门户共享数据时,可能需要再次添加客户端 IP。
    4. 选择“保存”。

要共享的 SQL 身份验证

可以按照分步演示视频来配置身份验证,或完成以下每个先决条件:

  • 向 SQL Server 上的数据库进行写入的权限:Microsoft.Sql/servers/databases/write。 “参与者”角色有此权限。

  • Azure Data Share 资源托管标识访问数据库的权限:

    1. Azure 门户中,导航到 SQL Server 并将自己设置为 Microsoft Entra 管理员

    2. 使用 查询编辑器 或 SQL Server Management Studio 和 Microsoft Entra 身份验证连接Azure SQL 数据库/数据仓库。

    3. 执行以下脚本,以将 Data Share 资源托管标识添加为 db_datareader。 使用 Active Directory 而非 SQL Server 身份验证进行连接。

      create user "<share_acct_name>" from external provider;     
      exec sp_addrolemember db_datareader, "<share_acct_name>"; 
      

      注意

      请注意,<share_acc_name> 是 Data Share 资源的名称。

  • 具有“db_datareader”访问权限的 Azure SQL 数据库用户,可以浏览和选择要共享的表或视图

  • SQL Server 防火墙访问权限:

    1. Azure 门户中,导航到 SQL Server。 从左侧导航栏中选择“防火墙和虚拟网络”。
    2. 对于“允许 Azure 服务和资源访问此服务器”,选择“是”。
    3. 单击“+ 添加客户端 IP”。 客户端 IP 地址可能会更改,因此,下次从门户共享数据时,可能需要再次添加客户端 IP。
    4. 选择“保存”。

在 SQL 中接收的身份验证

对于作为 SQL Server 的 Microsoft Entra 管理员的 SQL Server,请在接受数据共享之前完成以下先决条件:

  • Azure SQL 数据库Azure Synapse Analytics(以前称为 Azure SQL DW)
  • 向 SQL Server 上的数据库进行写入的权限:Microsoft.Sql/servers/databases/write。 “参与者”角色有此权限。
  • SQL Server 防火墙访问:
    1. Azure 门户中,导航到 SQL Server。 从左侧导航栏中选择“防火墙和虚拟网络”。
    2. 对于“允许 Azure 服务和资源访问此服务器”,选择“是”。
    3. 单击“+ 添加客户端 IP”。 客户端 IP 地址可能会更改,因此,下次从门户共享数据时,可能需要再次添加客户端 IP。
    4. 选择“保存”。

对于不是 Microsoft Entra 管理员SQL Server,请在接受数据共享之前完成以下先决条件:

可按照分步演示视频或以下步骤配置先决条件。

  • Azure SQL 数据库Azure Synapse Analytics(以前称为 Azure SQL DW)

  • 向 SQL Server 上的数据库进行写入的权限:Microsoft.Sql/servers/databases/write。 “参与者”角色有此权限。

  • Data Share 资源托管标识用于访问 Azure SQL 数据库或 Azure Synapse Analytics 的权限:

    1. Azure 门户中,导航到 SQL Server 并将自己设置为 Microsoft Entra 管理员

    2. 使用 查询编辑器 或 SQL Server Management Studio 和 Microsoft Entra 身份验证连接Azure SQL 数据库/数据仓库。

    3. 执行以下脚本,以将 Data Share 托管标识添加为“db_datareader, db_datawriter, db_ddladmin”。

      create user "<share_acc_name>" from external provider; 
      exec sp_addrolemember db_datareader, "<share_acc_name>"; 
      exec sp_addrolemember db_datawriter, "<share_acc_name>"; 
      exec sp_addrolemember db_ddladmin, "<share_acc_name>";
      

      注意

      请注意,<share_acc_name> 是 Data Share 资源的名称。

  • SQL Server 防火墙访问权限:

    1. Azure 门户中,导航到 SQL Server 并选择“防火墙和虚拟网络”
    2. 对于“允许 Azure 服务和资源访问此服务器”,选择“是”。
    3. 单击“+ 添加客户端 IP”。 客户端 IP 地址可能会更改,因此,下次从门户共享数据时,可能需要再次添加客户端 IP。
    4. 选择“保存”。

有关与 Azure SQL 共享和从 Azure SQL 共享的详细信息,请参阅用于共享和接收来自Azure SQL 数据库的数据的文章。

Azure synapse 分析共享

共享

  • 在 Synapse 工作区中写入 SQL 池的权限:Microsoft.Synapse/workspaces/sqlPools/write。 “参与者”角色有此权限。

  • Data Share 资源托管标识访问 Synapse 工作区 SQL 池的权限:

    1. Azure 门户中,导航到 Synapse 工作区。 从左侧导航中选择 SQL Active Directory 管理员 ,并将自己设置为 Microsoft Entra 管理员

    2. 打开 Synapse Studio,从左侧导航栏中选择“管理”。 在“安全性”下选择“访问控制”。 为自己分配“SQL 管理员”或“工作区管理员”角色

    3. 在 Synapse Studio 中,从左侧导航栏中选择“开发”。 在 SQL 池中执行以下脚本,以将 Data Share 资源托管标识添加为 db_datareader。

      create user "<share_acct_name>" from external provider;     
      exec sp_addrolemember db_datareader, "<share_acct_name>"; 
      

      注意

      请注意,<share_acc_name> 是 Data Share 资源的名称。

  • Synapse 工作区防火墙访问权限:

    1. Azure 门户中,导航到 Synapse 工作区。 从左侧导航栏中选择“防火墙”。
    2. 对于“允许 Azure 服务和资源访问此工作区”,选择“启用”。
    3. 单击“+ 添加客户端 IP”。 客户端 IP 地址可能会更改,因此,下次从门户共享数据时,可能需要再次添加客户端 IP。
    4. 选择“保存”。

接收

  • Azure Synapse Analytics(工作区)专用 SQL 池。 目前不支持将数据接收到无服务器 SQL 池中。

  • 在 Synapse 工作区中写入 SQL 池的权限:Microsoft.Synapse/workspaces/sqlPools/write。 “参与者”角色有此权限。

  • Data Share 资源的托管标识用于访问 Synapse 工作区 SQL 池的权限:

    1. Azure 门户中,导航到 Synapse 工作区。

    2. 从左侧导航栏中选择“SQL Active Directory 管理员”,将你自己设置为“Microsoft Entra 管理员”

    3. 打开 Synapse Studio,从左侧导航栏中选择“管理”。 在“安全性”下选择“访问控制”。 为自己分配“SQL 管理员”或“工作区管理员”角色

    4. 在 Synapse Studio 中,从左侧导航栏中选择“开发”。 在 SQL 池中执行以下脚本,以将 Data Share 资源托管标识添加为“db_datareader, db_datawriter, db_ddladmin”。

      create user "<share_acc_name>" from external provider; 
      exec sp_addrolemember db_datareader, "<share_acc_name>"; 
      exec sp_addrolemember db_datawriter, "<share_acc_name>"; 
      exec sp_addrolemember db_ddladmin, "<share_acc_name>";
      

      注意

      请注意,<share_acc_name> 是 Data Share 资源的名称。

  • Synapse 工作区防火墙访问权限:

    1. Azure 门户中,导航到 Synapse 工作区。 从左侧导航栏中选择“防火墙”。
    2. 对于“允许 Azure 服务和资源访问此工作区”,选择“启用”。
    3. 单击“+ 添加客户端 IP”。 客户端 IP 地址可能会更改。 下次从 Azure 门户共享 SQL 数据时,可能需要重复此过程。
    4. 选择“保存”。

有关在 Azure Synapse Analytics 之间共享和从 Azure Synapse 分析共享和接收数据的文章。

手动分配 MI 权限

如果用户对源或目标数据存储具有 Microsoft.Authorization/role assignments/write 权限,它将自动分配 Azure Data Share 的托管标识,该权限需要对数据存储进行身份验证。 还可以手动分配托管标识权限。

如果选择手动分配权限,请根据源和操作将这些权限分配给 Azure Data Share 资源的托管标识:

数据存储类型 数据提供程序源数据存储 数据使用者目标数据存储
Azure Blob 存储 存储 Blob 数据读者 存储 Blob 数据参与者
Azure Data Lake Gen1 所有者 不支持
Azure Data Lake Gen2 存储 Blob 数据读者 存储 Blob 数据参与者
Azure SQL 数据库 db_datareader db_datareader、db_datawriter、db_ddladmin
Azure Synapse Analytics db_datareader db_datareader、db_datawriter、db_ddladmin

数据提供程序示例

从存储帐户共享数据时,数据共享资源的托管标识被授予存储 Blob 数据读取者角色。

当用户通过Azure 门户添加数据集并且用户是 Azure 数据存储的所有者,或者是分配有 Microsoft.Authorization/role assignments/write 权限的自定义角色的成员时,Azure Data Share 服务会自动执行此操作。

或者,用户可以让 Azure 数据存储的所有者手动将数据共享资源的托管标识添加到 Azure 数据存储。 每个 Data Share 资源只需要执行一次此操作。

若要为 Data Share 资源的托管标识手动创建角色分配,请遵循以下步骤:

  1. 导航到 Azure 数据存储。

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

  3. 选择“添加”>“添加角色分配”。

    Screenshot that shows Access control (IAM) page with Add role assignment menu open.

  4. 在“角色”选项卡上,选择上一部分中的角色分配表中列出的角色之一

  5. 在“成员”选项卡上,选择“托管标识”,然后选择“选择成员”。

  6. 选择 Azure 订阅。

  7. 选择“系统分配的托管标识”,搜索你的 Azure Data Share 资源,然后选择它

  8. 在“查看 + 分配”选项卡上,选择“查看 + 分配”,以分配角色 。

若要了解有关角色分配的详细信息,请参阅使用 Azure 门户分配 Azure 角色。 如果使用 REST API 共享数据,你可以通过参阅使用 REST API 分配 Azure 角色来使用 API 创建角色分配。

对于基于 SQL 快照 的共享,需要在与 Azure Data Share 资源同名的 SQL 数据库 中从外部提供程序创建 SQL 用户,同时使用 Microsoft Entra 身份验证连接到 SQL 数据库。 需要为此用户授予 db_datareader 权限。 可以在从 Azure SQL 数据库或 Azure Synapse Analytics 共享教程中找到示例脚本以及基于 SQL 共享的其他先决条件。

数据使用者示例

若要将数据接收到存储帐户,需要向使用者数据共享资源的托管标识授予对目标存储帐户的访问权限。 需要向数据共享资源的托管标识授予“存储 Blob 数据参与者”角色。 如果用户通过 Azure 门户指定目标数据存储,并且用户具有适当的权限,则 Azure Data Share 服务会自动完成此操作。 例如,用户是存储帐户的所有者,或者是获分配 Microsoft.Authorization/role assignments/write 权限的自定义角色的成员

或者,用户可以要求存储帐户的所有者将数据共享资源的托管标识手动添加到存储帐户。 每个 Data Share 资源只需要执行一次此操作。 若要为 Data Share 资源的托管标识手动创建角色分配,请执行以下步骤。

  1. 导航到 Azure 数据存储。

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

  3. 选择“添加”>“添加角色分配”。

    Screenshot that shows Access control (IAM) page with Add role assignment menu open.

  4. 在“角色”选项卡上,选择上一部分中的角色分配表中列出的角色之一。 例如,对于存储帐户,请选择存储 Blob 数据读取器。

  5. 在“成员”选项卡上,选择“托管标识”,然后选择“选择成员”。

  6. 选择 Azure 订阅。

  7. 选择“系统分配的托管标识”,搜索你的 Azure Data Share 资源,然后选择它

  8. 在“查看 + 分配”选项卡上,选择“查看 + 分配”,以分配角色 。

若要了解有关角色分配的详细信息,请参阅使用 Azure 门户分配 Azure 角色。 如果要使用 REST API 接收数据,你可以通过参阅使用 REST API 分配 Azure 角色来使用 API 创建角色分配。

对于基于 SQL 的目标,需要使用与 Azure Data Share 资源同名的 SQL 数据库 中的外部提供程序创建 SQL 用户,同时使用 Microsoft Entra 身份验证连接到 SQL 数据库。 需要为此用户授予 db_datareader、db_datawriter、db_ddladmin 权限。 可以在从 Azure SQL 数据库或 Azure Synapse Analytics 共享教程中找到示例脚本以及基于 SQL 共享的其他先决条件。

资源提供程序注册

在以下方案中,可能需要将 Microsoft.DataShare 资源提供程序手动注册到 Azure 订阅中:

  • 第一次在 Azure 租户中查看 Azure Data Share 邀请
  • 在与 Azure Data Share 资源不同的 Azure 订阅中从 Azure 数据存储共享数据
  • 在与 Azure Data Share 资源不同的 Azure 订阅中将数据接收到 Azure 数据存储

按照以下步骤将 Microsoft.DataShare 资源提供程序注册到你的 Azure 订阅。 需要对 Azure 订阅的“参与者”访问权限才能注册资源提供程序。

  1. 在 Azure 门户中,导航到“订阅”。
  2. 选择用于 Azure Data Share 的订阅。
  3. 选择“资源提供程序”
  4. 搜索“Microsoft.DataShare”。
  5. 选择注册

若要详细了解资源提供程序,请参阅 Azure 资源提供程序和类型

Data Share 的自定义角色

本部分介绍自定义角色中共享和接收数据所需的自定义角色和权限(针对存储帐户)。 还有一些先决条件独立于自定义角色或 Azure Data Share 角色。

Data Share 的先决条件,以及自定义角色

  • 对于存储和基于数据湖快照的共享,若要在 Azure Data Share 中添加数据集,需要为提供程序 Data Share 资源的托管身份授予对源 Azure Data Share 的访问权限。 例如,如果使用存储帐户,则向数据共享资源的托管标识授予“存储 Blob 数据读者”角色。
  • 若要将数据接收到存储帐户,需要向使用者数据共享资源的托管标识授予对目标存储帐户的访问权限。 需要向数据共享资源的托管标识授予“存储 Blob 数据参与者”角色。
  • 在某些情况下,可能还需要将 Microsoft.DataShare 资源提供程序手动注册到 Azure 订阅中。 有关详细信息,请参阅本文的资源提供程序注册部分。

创建自定义角色和所需权限

可以在订阅或资源组中创建自定义角色,用于共享和接收数据。 然后,可以向用户和组分配自定义角色。

  • 创建自定义角色时,需要执行存储、Data Share、资源组和授权操作。 请参阅适用于数据共享的 Azure 资源提供程序操作文档,了解不同级别的权限并选择与你的自定义角色相关的权限级别。
  • 或者,可以使用 Azure 门户导航到“IAM”、“自定义角色”、“添加权限”和“搜索”,搜索 Microsoft.DataShare 权限以查看可用操作列表。
  • 若要详细了解自定义角色分配,请参阅 Azure 自定义角色。 创建自定义角色后,可以对其进行测试,以验证它是否按预期工作。

以下示例演示 JSON 视图中如何列出自定义角色共享和接收数据所需的操作。

{
"Actions": [ 

"Microsoft.Storage/storageAccounts/read",  

"Microsoft.Storage/storageAccounts/write",  

"Microsoft.Storage/storageAccounts/blobServices/containers/read", 

"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action",

"Microsoft.Storage/storageAccounts/listkeys/action",

"Microsoft.DataShare/accounts/read", 

"Microsoft.DataShare/accounts/providers/Microsoft.Insights/metricDefinitions/read", 

"Microsoft.DataShare/accounts/shares/listSynchronizations/action", 

"Microsoft.DataShare/accounts/shares/synchronizationSettings/read", 

"Microsoft.DataShare/accounts/shares/synchronizationSettings/write", 

"Microsoft.DataShare/accounts/shares/synchronizationSettings/delete", 

"Microsoft.DataShare/accounts/shareSubscriptions/*", 

"Microsoft.DataShare/listInvitations/read", 

"Microsoft.DataShare/locations/rejectInvitation/action", 

"Microsoft.DataShare/locations/consumerInvitations/read", 

"Microsoft.DataShare/locations/operationResults/read", 

"Microsoft.Resources/subscriptions/resourceGroups/read", 

"Microsoft.Resources/subscriptions/resourcegroups/resources/read", 

"Microsoft.Authorization/roleAssignments/read", 
 ] 
}

后续步骤