你当前正在访问 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 Blob 存储和 Azure Data Lake Storage 共享和接收数据的文章

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 服务器并将你自己设置为“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 服务器并将你自己设置为“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 Synapse Analytics 共享

共享

  • 在 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 Analytics 共享和接收数据的文章

手动分配 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 Data Share 服务会自动完成此操作。用户是 Azure 数据存储的所有者,或者是被分配了“Microsoft.Authorization/role assignments/write”权限的自定义角色的成员。

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

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

  1. 导航到 Azure 数据存储。

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

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

    显示打开了“添加角色分配”菜单的“访问控制(IAM)”页的屏幕截图。

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

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

  6. 选择 Azure 订阅。

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

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

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

对于基于 SQL 快照的共享,在使用 Microsoft Entra 身份验证连接到 SQL 数据库时,需要从 SQL 数据库中的外部提供程序创建一个与 Azure Data Share 资源同名的 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. 选择“添加”>“添加角色分配”。

    显示打开了“添加角色分配”菜单的“访问控制(IAM)”页的屏幕截图。

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

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

  6. 选择 Azure 订阅。

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

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

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

对于基于 SQL 的目标,在使用 Microsoft Entra 身份验证连接到 SQL 数据库时,需要从 SQL 数据库中的外部提供程序创建一个与 Azure Data Share 资源同名的 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", 
 ] 
}

后续步骤