数据管理
了解如何管理数据访问以及如何在 Azure 机器学习中进行身份验证。
适用范围:Azure CLI ml 扩展 v2(最新版)Python SDK azure-ai-ml v2(最新版)
重要
本文面向想要为 Azure 机器学习解决方案创建所需基础结构的 Azure 管理员。
基于凭据的数据身份验证
一般情况下,基于凭据的数据身份验证涉及以下检查:
检查从基于凭据的数据存储访问数据的用户是否分配有包含
Microsoft.MachineLearningServices/workspaces/datastores/listsecrets/action
的基于角色的访问控制 (RBAC) 角色用户需要此权限才能从数据存储中检索凭据。
已包含此权限的内置角色:
- 参与者
- Azure AI 开发人员
- Azure 机器学习数据科学家
- 或者,如果应用自定义角色,则必须将此权限添加到该自定义角色
必须知道要访问数据的是哪位特定用户。 特定用户可以是具有用户标识的实际用户, 也可以是具有计算托管标识 (MSI) 的计算机。 有关详细信息,请访问方案和身份验证选项部分以确定需要已添加权限的标识。
存储凭据(服务主体、帐户密钥或共享访问签名令牌)是否有权访问数据资源?
基于标识的数据身份验证
一般情况下,基于标识的数据身份验证涉及以下检查:
- 哪个用户想要访问资源?
- 可以根据访问数据时的情况使用不同类型的身份验证。 例如:
- 用户标识
- 计算托管标识
- 工作区托管标识
- 作业(包括数据集
Generate Profile
选项)在你订阅中的计算资源上运行,并从该位置访问数据。 计算托管标识需要存储资源的访问权限,而不是提交作业的用户的标识。 - 若要根据用户标识进行身份验证,必须知道哪个特定用户尝试访问存储资源。 有关用户身份验证的详细信息,请访问 Azure 机器学习的身份验证。 若要详细了解服务级别身份验证,请访问 Azure 机器学习与其他服务之间的身份验证。
- 可以根据访问数据时的情况使用不同类型的身份验证。 例如:
- 此用户是否具有资源的读取权限?
- 用户标识或计算托管标识是否具有该存储资源的必要权限? 使用 Azure RBAC 授予权限。
- 存储帐户读取者读取存储元数据。
- 存储 Blob 数据读取器会读取并列出存储容器和 Blob。
- 存储文件数据特权读取者 重新获取和列出 Azure 文件共享中的文件和目录。
- 有关详细信息,请访问用于存储的 Azure 内置角色。
- 此用户是否具有资源的写入权限?
- 用户标识或计算托管标识是否具有该存储资源的必要权限? 使用 Azure RBAC 授予权限。
- 存储帐户读取者读取存储元数据。
- 存储 Blob 数据参与者会读取、写入和删除 Azure 存储容器和 Blob。
- 存储文件数据特权参与者 读取、写入、删除和修改 Azure 文件共享中文件和目录的访问控制列表。
- 有关详细信息,请访问用于存储的 Azure 内置角色。
身份验证的其他常规检查
- 究竟是什么可以访问资源?
- 用户:客户端 IP 地址是否在虚拟网络/子网范围内?
- 工作区:工作区是公共的,还是在虚拟网络/子网中有专用终结点?
- 存储:存储是允许进行公共访问,还是仅限通过服务终结点或专用终结点进行访问?
- 计划的操作是什么?
- Azure 机器学习句柄
- 创建
- 读取
- 更新
- 对数据存储/数据集执行的删除 (CRUD) 操作。
- Azure 机器学习工作室中对数据资产的存档操作需要此 RBAC 操作:
Microsoft.MachineLearningServices/workspaces/datasets/registered/delete
- 数据访问调用(例如预览或架构)会进入底层存储,需要额外的权限。
- Azure 机器学习句柄
- 此操作将在 Azure 订阅计算资源中运行,还是在 Microsoft 订阅中托管的资源中运行?
- 对数据集和数据存储服务的所有调用(
Generate Profile
选项除外)都使用托管在 Microsoft 订阅中的资源来运行操作。 - 作业(包括数据集
Generate Profile
选项)在你订阅中的计算资源上运行,并从该位置访问数据。 计算标识需要对存储资源的权限,而不是提交作业的用户的标识。
- 对数据集和数据存储服务的所有调用(
此图显示了数据访问调用的常规流。 在这里,用户尝试通过机器学习工作区发出数据访问调用,但未使用任何计算资源。
方案和身份验证类型
下表列出了用于特定方案的标识:
配置 | SDK 本地/笔记本虚拟机 | 作业 | 数据集预览 | 数据存储浏览 |
---|---|---|---|---|
凭据 + 工作区 MSI | 凭据 | 凭据 | 工作区 MSI | 凭据(仅帐户密钥和共享访问签名令牌) |
无凭据 + 工作区 MSI | 计算 MSI/用户标识 | 计算 MSI/用户标识 | 工作区 MSI | 用户标识 |
凭据 + 无工作区 MSI | 凭据 | 凭据 | 凭据(专用网络下的数据集预览版不支持) | 凭据(仅帐户密钥和共享访问签名令牌) |
无凭据 + 无工作区 MSI | 计算 MSI/用户标识 | 计算 MSI/用户标识 | 用户标识 | 用户标识 |
对于 SDK V1,作业中的数据身份验证始终使用计算 MSI。 对于 SDK V2,作业中的数据身份验证取决于作业设置。 它可以是用户标识,也可以是计算 MSI,具体取决于该作业设置。
提示
若要从机器学习外部(例如使用 Azure 存储资源管理器)访问数据,该访问可能依赖于用户标识。 有关特定信息,请查看计划使用的工具或服务的文档。 若要详细了解机器学习如何处理数据,请访问在 Azure 机器学习与其他服务之间设置身份验证。
虚拟网络特定要求
以下信息可帮助你从机器学习工作区设置数据身份验证,以访问虚拟网络后面的数据。
将存储帐户的权限添加到机器学习工作区托管标识
从工作室使用存储帐户时,如果想要看到数据集预览,则必须在数据存储设置中启用“在 Azure 机器学习工作室中使用工作区托管标识进行数据预览和分析”。 然后,将以下存储帐户 Azure RBAC 角色添加到工作区托管标识:
- Blob 数据读取器
- 如果存储帐户使用专用终结点连接到虚拟网络,则必须为托管标识授予对存储帐户专用终结点的读取者角色。
有关详细信息,请访问在 Azure 虚拟网络中使用 Azure 机器学习工作室。
以下部分介绍了在虚拟网络中使用存储帐户和工作区的限制。
保护与存储帐户的通信
若要保护机器学习和存储帐户之间的通信,请将存储配置为授予对受信任的 Azure 服务的访问权限。
Azure 存储防火墙
对于存储帐户位于虚拟网络后面的情况,客户端通常可以使用存储防火墙来通过 Internet 直接进行连接。 但是,使用工作室时,客户端不会连接到存储帐户。 发出请求的机器学习服务将连接到存储帐户。 服务的 IP 地址未记录,并且经常更改。 启用存储防火墙时,不允许工作室访问虚拟网络配置中的存储帐户。
Azure 存储终结点类型
当工作区使用专用终结点并且存储帐户也位于虚拟网络中时,使用工作室时有额外的验证要求。
- 如果存储帐户使用服务终结点,则工作区专用终结点和存储服务终结点必须位于虚拟网络的同一子网中。
- 如果存储帐户使用专用终结点,则工作区专用终结点和存储专用终结点必须位于同一虚拟网络中。 在这种情况下,它们可以位于不同的子网中。
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 机器学习工作室。