你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure 机器学习进行数据加密
Azure 机器学习在你训练模型和执行推理时依赖于各种 Azure 数据存储服务和计算资源。 本文介绍每项服务在静态和传输中的数据加密。
对于训练期间的生产级加密,我们建议使用 Azure 机器学习计算群集。 对于推理过程中的生产级加密,我们建议使用 Azure Kubernetes 服务 (AKS)。
Azure 机器学习计算实例是开发/测试环境。 使用它时,我们建议将文件(如笔记本和脚本)存储在文件共享中。 将数据存储在数据存储中。
静态加密
Azure 机器学习端到端项目与 Azure Blob 存储、Azure Cosmos DB 和 Azure SQL 数据库等服务集成。 本文介绍此类服务的加密方法。
Azure Blob 存储
Azure 机器学习在绑定到 Azure 机器学习工作区和订阅的 Azure Blob 存储帐户(默认存储帐户)中存储快照、输出和日志。 Azure Blob 存储中存储的所有数据都使用 Microsoft 托管密钥进行静态加密。
有关如何将自己的密钥用于存储在 Azure Blob 存储中的数据的信息,请参阅在 Azure Key Vault 中使用客户管理的密钥进行 Azure 存储加密。
训练数据通常也存储在 Azure Blob 存储中,以便训练计算目标可以访问它。 Azure 机器学习不管理此存储。 此存储作为远程文件系统装载到计算目标。
如果需要轮换或撤销密钥,则可以随时执行此操作。 轮换密钥时,存储帐户会开始使用新密钥(最新版本)来加密静态数据。 撤销(禁用)密钥时,存储帐户负责处理失败的请求。 轮换或撤消操作通常需要一小时才能生效。
有关重新生成访问密钥的信息,请参阅重新生成存储帐户访问密钥。
Azure Data Lake Storage
注意
Azure Data Lake Storage Gen1 将于 2024 年 2 月 29 日停用。 有关详细信息,请查看官方公告。 如果使用 Azure Data Lake Storage Gen1,请确保在该日期之前迁移到 Azure Data Lake Storage Gen2。 若要了解如何操作,请参阅使用 Microsoft Azure 门户将 Azure Data Lake Storage 从 Gen1 迁移到 Gen2。
除非已有 Azure Data Lake Storage Gen1 帐户,否则无法创建新帐户。
Azure Data Lake Storage Gen2 基于 Azure Blob 存储而构建,专为企业大数据分析设计。 Data Lake Storage Gen2 用作 Azure 机器学习的数据存储。 与 Azure Blob 存储类似,静态数据也使用 Microsoft 管理的密钥进行加密。
有关如何将自己的密钥用于存储在 Azure Data Lake Storage 中的数据的信息,请参阅在 Azure Key Vault 中使用客户管理的密钥进行 Azure 存储加密。
Azure 关系数据库
Azure 机器学习服务支持来自以下数据源的数据。
Azure SQL 数据库
透明数据加密通过加密静态数据,帮助保护 Azure SQL 数据库免受恶意脱机活动的威胁。 默认情况下,为所有使用 Microsoft 管理的密钥的新部署的 SQL 数据库启用透明数据加密。
有关如何使用客户管理的密钥进行透明数据加密的信息,请参阅 Azure SQL 数据库透明数据加密。
Azure Database for PostgreSQL
默认情况下,Azure Database for PostgreSQL 使用 Azure 存储加密,通过 Microsoft 管理的密钥来加密静态数据。 这与 SQL Server 等其他数据库中的透明数据加密相似。
有关如何使用客户管理的密钥进行透明数据加密的信息,请参阅使用客户管理的密钥进行 Azure Database for PostgreSQL 单服务器数据加密。
Azure Database for MySQL
在 Microsoft 云中,Azure Database for MySQL 是关系数据库服务。 它基于 MySQL 社区版数据库引擎。 Azure Database for MySQL 服务使用 FIPS 140-2 验证的加密模块对静态数据进行 Azure 存储加密。
若要使用客户管理的密钥加密数据,请参阅使用客户管理的密钥进行 Azure Database for MySQL 数据加密。
Azure Cosmos DB
Azure 机器学习在 Azure Cosmos DB 实例中存储元数据。 此实例与 Azure 机器学习管理的 Microsoft 订阅相关联。 Azure Cosmos DB 中存储的所有数据都使用 Microsoft 托管密钥进行静态加密。
在使用你自己的(客户管理的)密钥来加密 Azure Cosmos DB 实例时,你的订阅中会创建 Microsoft 托管的 Azure Cosmos DB 实例。 此实例会在受 Microsoft 管理的资源组中创建,该资源组不同于你的工作区的资源组。 有关详细信息,请参阅用于 Azure 机器学习的客户管理的密钥。
Azure 容器注册表
容器注册表(Azure 容器注册表的实例)中的所有容器映像均静态加密。 Azure 会在存储映像之前自动将其加密,并在 Azure 机器学习提取映像时将其解密。
若要使用客户管理的密钥加密容器注册表,需要在预配工作区时创建并附加容器注册表。 可以加密在预配工作区时创建的默认实例。
重要
Azure 机器学习要求在容器注册表上启用管理员帐户。 创建容器注册表时,默认情况下此设置已禁用。 有关启用管理员帐户的信息,请参阅本文后面的管理员帐户。
为工作区创建容器注册表后,请勿将其删除。 删除该注册表将损坏 Azure 机器学习工作区。
有关使用现有的容器注册表创建工作区的示例,请参阅以下文章:
Azure 容器实例
重要
到 Azure 容器实例的部署依赖于 Azure 机器学习 Python SDK 和 CLI v1。
可以使用客户管理的密钥来加密已部署的 Azure 容器实例资源。 用于容器实例的客户管理的密钥可以存储在工作区的密钥保管库中。
若要在将模型部署到容器实例时使用密钥,请使用 AciWebservice.deploy_configuration()
创建新的部署配置。 使用以下参数提供密钥信息:
cmk_vault_base_url
:包含密钥的密钥保管库的 URL。cmk_key_name
:键的名称。cmk_key_version
:密钥版本。
有关如何创建和使用部署配置的详细信息,请参阅以下文章:
有关如何将客户管理的密钥用于容器实例的详细信息,请参阅加密部署数据。
Azure Kubernetes 服务
你可以随时使用客户管理的密钥加密已部署的 Azure Kubernetes 服务资源。 有关详细信息,请参阅在 Azure Kubernetes 服务中使用自己的密钥。
借助此过程,你可以加密 Kubernetes 群集中已部署的虚拟机的数据和操作系统 (OS) 磁盘。
重要
此过程仅适用于 AKS 版本 1.17 或更高版本。 Azure 机器学习在 2020 年 1 月 13 日添加了对 AKS 1.17 的支持。
机器学习计算
计算群集
存储在 Azure 存储中的每个计算节点的 OS 磁盘都使用 Azure 机器学习存储帐户中的 Microsoft 托管密钥进行加密。 此计算目标是临时的,不存在排队的作业时,通常便会纵向缩减群集。 基础虚拟机已取消预配,并已删除 OS 磁盘。
默认情况下,不会为工作区启用 Azure 磁盘加密。 如果创建工作区时将 hbi_workspace
参数设置为 TRUE
,则将对 OS 磁盘进行加密。
每个虚拟机还包含一个本地临时磁盘用于 OS 操作。 如果需要,可以使用该磁盘来暂存训练数据。 如果创建工作区时将 hbi_workspace
参数设置为 TRUE
,则将对临时磁盘进行加密。 此环境短暂存在(仅在作业期间),加密支持仅限于系统管理的密钥。
托管联机终结点和批处理终结点在后端使用 Azure 机器学习计算,它们遵循相同的加密机制。
计算实例
存储计算实例的 OS 磁盘使用 Azure 机器学习存储帐户中 Microsoft 管理的密钥进行加密。 如果创建工作区时将 hbi_workspace
参数设置为 TRUE
,则将使用 Microsoft 托管密钥对计算实例上的本地 OS 和临时磁盘加密。 OS 和临时磁盘不支持客户管理的密钥加密。
有关详细信息,请参阅用于 Azure 机器学习的客户管理的密钥。
Azure 数据工厂
Azure 数据工厂管道会引入数据,供 Azure 机器学习使用。 Azure 数据工厂对静态数据进行加密,其中包括实体定义和在运行期间缓存的所有数据。 默认情况下,使用随机生成并由 Microsoft 管理的密钥加密数据,该密钥只会分配到数据工厂。
有关如何使用客户管理的密钥进行加密的信息,请参阅通过客户管理的密钥加密 Azure 数据工厂。
Azure Databricks
可以在 Azure 机器学习管道中使用 Azure Databricks。 默认情况下,Azure Databricks 使用的 Databricks 文件系统 (DBFS) 通过 Microsoft 管理的密钥进行加密。 若要将 Azure Databricks 配置为使用客户管理的密钥,请参阅在默认(根)DBFS 上配置客户管理的密钥。
Microsoft 生成的数据
使用 Azure 机器学习等服务时,Microsoft 可能会生成用于训练多个模型的暂时性预处理数据。 此数据存储在工作区的数据存储中,以便你适当地强制执行访问控制和加密操作。
可能还需要加密从部署的终结点记录到 Application Insights 中的诊断信息。
传输中加密
Azure 机器学习使用传输层安全性 (TLS) 来帮助保护各种 Azure 机器学习微服务之间的内部通信。 所有 Azure 存储访问也都通过安全通道进行。
Azure 机器学习使用 TLS 来帮助保护对评分终结点的外部调用。 有关详细信息,请参阅使用 TLS 通过 Azure 机器学习来保护 Web 服务。
数据收集和处理
出于诊断目的,Microsoft 可能会收集不识别用户身份的信息。 例如,Microsoft 可能会收集资源名称(例如数据集名称或机器学习试验名称)或作业环境变量。 所有这些数据都通过 Microsoft 管理的密钥存储在 Microsoft 拥有的订阅所托管的存储中。 该存储遵循 Microsoft 的标准隐私策略和数据处理标准。 此数据与你的工作区处于同一区域内。
我们建议不要在环境变量中存储敏感信息(例如帐户密钥机密)。 Microsoft 日志、加密和存储环境变量。 同样,为作业命名时,请避免包含用户名或机密项目名称等敏感信息。 此信息可能会显示在 Microsoft 支持工程师可以访问的遥测日志中。
通过在预配工作区时将 hbi_workspace
参数设置为 TRUE
,可以选择退出诊断数据收集。 使用 Azure 机器学习 Python SDK、Azure CLI、REST API 或 Azure 资源管理器模板时支持此功能。
Azure Key Vault 中的凭据存储
Azure 机器学习使用与工作区关联的 Azure Key Vault 实例来存储各种类型的凭据:
- 存储帐户的关联连接字符串
- Azure 容器注册表实例的密码
- 数据存储的连接字符串
计算目标(如 Azure HDInsight 和虚拟机)的安全外壳 (SSH) 密码和密钥存储在与 Microsoft 订阅关联的单独的密钥保管库中。 Azure 机器学习不存储用户提供的任何密码或密钥。 相反,它会生成、授权并存储自己的 SSH 密钥,以连接到虚拟机和 HDInsight 来运行试验。
每个工作区有一个关联的系统分配的托管标识,该标识与工作区同名。 此托管标识可以访问密钥保管库中的所有密钥、机密和证书。