数据管理

了解如何管理数据访问以及如何在 Azure 机器学习中进行身份验证

适用范围:Azure CLI ml 扩展 v2(最新版)Python SDK azure-ai-ml v2(最新版)

重要

本文面向想要为 Azure 机器学习解决方案创建所需基础结构的 Azure 管理员。

一般情况下,从工作室访问数据涉及到以下检查:

  • 哪个用户想要访问资源?
    • 根据存储类型,可以使用不同类型的身份验证,例如
      • 帐户密钥
      • 令牌
      • 服务主体 (service principal)
      • 托管标识
      • 用户标识
    • 若要根据用户标识进行身份验证,必须知道哪个特定用户尝试访问存储资源。 有关用户身份验证的详细信息,请参阅 Azure 机器学习的身份验证。 若要详细了解服务级别身份验证,请参阅 Azure 机器学习与其他服务之间的身份验证
  • 此用户是否具有权限?
    • 用户是否具有正确的凭据? 如果是,服务主体、托管标识等是否具有该存储资源所需的权限? 权限是使用 Azure 基于角色的访问控制 (Azure RBAC) 授予的。
    • 存储帐户读取者读取存储元数据。
    • 存储 Blob 数据读取者读取 blob 容器中的数据。
    • 参与者允许对存储帐户进行写入访问。
    • 可能需要更多角色,具体取决于存储类型。
  • 访问来自何处?
    • 用户:客户端 IP 地址是否在 VNet/子网范围内?
    • 工作区:工作区是公共的,还是 VNet/子网中有专用终结点?
    • 存储:存储是允许进行公共访问,还是仅限通过服务终结点或专用终结点进行访问?
  • 将执行哪些操作?
    • Azure 机器学习处理数据存储/数据集上的创建、读取、更新和删除操作 (CRUD)。
    • 工作室中对数据资产的存档操作需要此 RBAC 操作:Microsoft.MachineLearningServices/workspaces/datasets/registered/delete
    • 数据访问调用(例如预览或架构)将进入底层存储,并需要额外的权限。
  • 此操作是否会在 Azure 订阅计算资源或 Azure 订阅中托管的资源中运行?
    • 对数据集和数据存储服务的所有调用(“生成配置文件”选项除外)都使用托管在 Microsoft 订阅中的资源来运行操作。
    • 作业(包括数据集“生成配置文件”选项)在你订阅中的计算资源上运行,并从该位置访问数据。 计算标识需要对存储资源的权限,而不是提交作业的用户的标识。

此图显示了数据访问调用的常规流。 在这里,用户尝试通过机器学习工作区发出数据访问调用,但未使用任何计算资源。

Diagram of the logic flow when accessing data.

场景和标识

下表列出了用于特定方案的标识:

方案 使用工作区
托管服务标识 (MSI)
要使用的标识
从 UI 访问 工作区 MSI
从 UI 访问 用户的标识
从作业访问 Yes/No 计算 MSI
从笔记本访问 Yes/No 用户的标识

数据访问很复杂,涉及许多部分。 例如,与使用 SDK 进行数据访问相比,来自 Azure 机器学习工作室的数据访问有所不同。 在本地开发环境中使用 SDK 时,你会直接访问云中的数据。 使用工作室时,你并不总是直接从客户端访问数据存储。 工作室依赖使用工作区来代表你访问数据。

提示

若要从 Azure 机器学习外部(例如使用 Microsoft Azure 存储资源管理器)访问数据,该访问可能依赖于用户标识。 有关特定信息,请查看所使用的工具或服务的文档。 若要详细了解 Azure 机器学习如何处理数据,请参阅在 Azure 机器学习与其他服务之间设置身份验证

Azure 存储帐户

从 Azure 机器学习工作室使用 Microsoft Azure 存储帐户时,必须将工作区的托管标识添加到该存储帐户的以下 Azure RBAC 角色:

  • Blob 数据读取器
  • 如果存储帐户使用专用终结点连接到 VNet,则必须为托管标识授予对存储帐户专用终结点的读取者角色。

有关详细信息,请参阅在 Azure 虚拟网络中使用 Azure 机器学习工作室

以下部分介绍了在 VNet 中使用 Microsoft Azure 存储帐户和工作区的限制。

保护与 Azure 存储帐户的通信

若要保护 Azure 机器学习和 Microsoft Azure 存储帐户之间的通信,请将存储配置为授予对受信任的 Azure 服务的访问权限

Azure 存储防火墙

当 Microsoft Azure 存储帐户位于虚拟网络后面时,通常可以使用存储防火墙来允许客户端通过 Internet 直接进行连接。 但是,使用工作室时,客户端不会连接到存储帐户。 发出请求的 Azure 机器学习服务将连接到存储帐户。 服务的 IP 地址未记录,并且经常更改。 启用存储防火墙将不允许工作室访问 VNet 配置中的存储帐户。

Azure 存储终结点类型

当工作区使用专用终结点并且存储帐户也位于 VNet 中时,使用工作室时有额外的验证要求:

  • 如果存储帐户使用服务终结点,则工作区专用终结点和存储服务终结点必须位于 VNet 的同一子网中。
  • 如果存储帐户使用专用终结点,则工作区专用终结点和存储专用终结点必须位于同一 VNet 中。 在这种情况下,它们可以位于不同的子网中。

Azure Data Lake Storage Gen2

使用 Azure Data Lake Storage Gen2 作为数据存储时,可以使用 Azure RBAC 和 POSIX 样式的访问控制列表 (ACL) 来控制虚拟网络内的数据访问。

若要使用 Azure RBAC,请遵循此数据存储:Azure 存储帐户一文部分中所述的步骤。 Data Lake Storage Gen2 基于 Azure 存储,因此在使用 Azure RBAC 时可应用相同的步骤。

若要使用 ACL,可以向工作区的托管标识分配访问权限,就像向任何其他安全主体分配访问权限一样。 有关详细信息,请参阅文件和目录上的访问控制列表

后续步骤

有关在网络中启用工作室的信息,请参阅在 Azure 虚拟网络中使用 Azure 机器学习工作室