数据访问非常复杂,而重要的是要认识到数据包含许多片段。 例如,从 Azure 机器学习工作室访问数据与使用 SDK 访问数据的方法是不同的。 在本地开发环境中使用 SDK 时,你会直接访问云中的数据。 使用工作室时,你并不总是直接从客户端访问数据存储。 工作室依赖使用工作区来代表你访问数据。
重要
本文中的信息面向正在创建 Azure 机器学习解决方案所需的基础结构的 Azure 管理员。
提示
工作室仅支持从 VNet 中的以下数据存储类型读取数据:
- Azure 存储帐户(blob 和文件)
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
- Azure SQL 数据库
一般情况下,从工作室访问数据涉及到以下检查:
- 谁正在访问数据?
- 根据存储类型,有多种不同类型的身份验证。 例如,帐户密钥、令牌、服务主体、托管标识和用户标识。
- 如果使用用户标识进行身份验证,则知道哪个用户正在尝试访问存储非常重要。 详细了解基于标识的数据访问。
- 他们是否拥有权限?
- 凭据是否正确? 如果是,服务主体、托管标识等是否对存储拥有必要的权限? 权限是使用 Azure 基于角色的访问控制 (Azure RBAC) 授予的。
- 存储帐户的读取者读取存储的元数据。
- 存储 Blob 数据读取者读取 Blob 容器中的数据。
- 参与者允许对存储帐户进行写入访问。
- 根据存储类型,可能需要更多角色。
- 从何处访问?
- 用户:客户端 IP 地址是否在 VNet/子网范围内?
- 工作区:工作区是公用的,还是在 VNet/子网中具有专用终结点?
- 存储:存储是允许进行公共访问,还是仅限通过服务终结点或专用终结点进行访问?
- 正在执行哪种操作?
- 对数据存储/数据集执行的创建、读取、更新和删除 (CRUD) 操作由 Azure 机器学习处理。
- 数据访问调用(例如预览或架构)将进入底层存储,并需要额外的权限。
- 此操作在何处运行:是 Azure 订阅中的计算资源,还是 Azure 订阅中托管的资源?
- 对数据集和数据存储服务的所有调用(“生成配置文件”选项除外)都使用托管在 Microsoft 订阅中的资源来运行操作。
- 作业(包括用于数据集的“生成配置文件”选项)在你订阅中的计算资源上运行,并从该位置访问数据。 因此,计算标识(而不是提交作业的用户的标识)需要拥有对存储的权限。
下图显示了数据访问调用的常规流。 在此示例中,用户尝试通过机器学习工作区发出数据访问调用,且未使用任何计算资源。
下表列出了特定场景应该使用哪些标识:
方案 | 使用工作区 托管服务标识 (MSI) |
要使用的标识 |
---|---|---|
从 UI 访问 | 是 | 工作区 MSI |
从 UI 访问 | 否 | 用户的标识 |
从作业访问 | Yes/No | 计算 MSI |
从笔记本访问 | Yes/No | 用户的标识 |
提示
如果需要从 Azure 机器学习外部访问数据(例如使用 Azure 存储资源管理器),则用户标识可能是所使用的标识。 有关特定信息,请参阅你正在使用的工具或服务的文档。 有关 Azure 机器学习如何处理数据的详细信息,请参阅对 Azure 上的存储服务的基于标识的数据访问。
从 Azure 机器学习工作室使用 Azure 存储帐户时,必须将工作区的托管标识添加到该存储帐户的以下 Azure RBAC 角色:
- Blob 数据读取器
- 如果存储帐户使用专用终结点连接到 VNet,则必须为托管标识授予对存储帐户专用终结点的读取者角色。
有关详细信息,请参阅在 Azure 虚拟网络中使用 Azure 机器学习工作室。
有关将 Azure 存储帐户与 VNet 中的工作区结合使用时存在的限制的信息,请参阅以下部分。
若要保护 Azure 机器学习和 Azure 存储帐户之间的通信,请将存储配置为授予对受信任的 Azure 服务的访问权限。
当 Azure 存储帐户位于虚拟网络后面时,通常可以使用存储防火墙来允许客户端通过 Internet 直接进行连接。 但是,使用工作室时,连接到存储帐户的不是客户端;请求是 Azure 机器学习服务发出的。 服务的 IP 地址没有记录并且经常更改。 启用存储防火墙将不允许工作室访问 VNet 配置中的存储帐户。
当工作区使用专用终结点并且存储帐户也位于 VNet 中时,使用工作室时有额外的验证要求:
- 如果存储帐户使用服务终结点,则工作区专用终结点和存储服务终结点必须位于 VNet 的同一子网中。
- 如果存储帐户使用专用终结点,则工作区专用终结点和存储服务终结点必须位于同一 VNet 中。 在这种情况下,它们可以位于不同的子网中。
使用 Azure Data Lake Storage Gen2 作为数据存储时,可以使用 Azure RBAC 和 POSIX 样式的访问控制列表 (ACL) 来控制虚拟网络内的数据访问。
若要使用 Azure RBAC,请按照“在 Azure 虚拟网络中使用 Azure 机器学习工作室”一文的数据存储:Azure 存储帐户部分中的步骤进行操作。 Data Lake Storage Gen2 基于 Azure 存储,因此在使用 Azure RBAC 时可应用相同的步骤。
若要使用 ACL,可以向工作区的托管标识分配访问权限,就像向任何其他安全主体分配访问权限一样。 有关详细信息,请参阅文件和目录上的访问控制列表。
若要使用托管标识访问存储在 Azure SQL 数据库中的数据,必须创建一个映射到托管标识的 SQL 包含用户。 若要详细了解如何从外部提供程序创建用户,请参阅创建映射到 Azure AD 标识的包含用户。
创建 SQL 包含用户后,使用 GRANT T-SQL 命令向该用户授予权限。
若要保护 Azure 机器学习与 Azure SQL 数据库之间的通信,有两种方式:
重要
这两种方式都支持订阅外部的服务连接到 SQL 数据库。 请确保 SQL 登录名和用户权限将访问权限限制为仅已授权用户使用。
允许 Azure 服务和资源访问 Azure SQL 数据库服务器。 启用设置“允许来自 Azure 的所有连接”,包括从其他客户的订阅到你的数据库服务器的连接。
有关启用此设置的信息,请参阅 IP 防火墙规则 - Azure SQL 数据库和 Synapse Analytics。
针对 Azure SQL 数据库,允许防火墙和虚拟网络中的 Azure 机器学习服务的 IP 地址范围。 允许 IP 地址通过防火墙限制连接到区域的 Azure 机器学习服务。
警告
Azure 机器学习服务的 IP 范围可能会随着时间的推移而更改。 无法通过内置方式在 IP 更改时自动更新防火墙规则。
若要获取 Azure 机器学习的 IP 地址列表,请下载 Azure IP 范围和服务标记,搜索文件中的
AzureMachineLearning.<region>
,其中<region>
是包含 Azure 机器学习工作区的 Azure 区域。若要将 IP 地址添加到 Azure SQL 数据库,请参阅 IP 防火墙规则 - Azure SQL 数据库和 Synapse Analytics。
有关在网络中启用工作室的信息,请参阅在 Azure 虚拟网络中使用 Azure 机器学习工作室。