团队在 Azure 机器学习上协作时,可能会面临针对资源的配置和组织的不同要求。 机器学习团队可能希望能够灵活地根据协作来组织工作区,或根据用例要求来调整计算群集的大小。 在这些情况下,如果应用程序团队能够管理自己的基础设施,工作效率可能会提高。
作为平台管理员,你可以使用策略设置防护规则,使团队能够管理自己的资源。 Azure Policy 有助于审核和治理资源状态。 本文介绍如何使用适用于 Azure 机器学习的审核控制和治理做法。
Azure 机器学习的策略
Azure Policy 是一种管理工具,你可用它来确保 Azure 资源符合你的策略。
Azure Policy 提供了一组策略,可用于 Azure 机器学习的常见方案。 你可以将这些策略定义分配给你现有的订阅,也可以将它们作为基础来创建你自己的自定义定义。
下表列出了可在 Azure 机器学习中分配的内置策略。 有关所有 Azure 内置策略的列表,请参阅内置策略。
| 名称 (Azure 门户) |
说明 | 效果(单个或多个) | 版本 (GitHub) |
|---|---|---|---|
| Azure 机器学习计算实例应启用空闲自动关闭。 | 使用空闲关闭计划可降低成本,方法是在计算实例空闲达到预设时长后将其关闭。 | Audit, Deny, Disabled | 1.0.0 |
| 应重新创建 Azure 机器学习计算实例以获取最新的软件更新 | 确保 Azure 机器学习计算实例在最新的可用操作系统上运行。 通过安装最新的安全补丁,提高了安全性并减少了漏洞。 有关详细信息,请访问 https://docs.azure.cn/machine-learning/concept-vulnerability-management?view=azureml-api-2#compute-instance。 | [parameters('effects')] | 1.0.3 |
| Azure 机器学习计算应位于虚拟网络中 | Azure 虚拟网络为 Azure 机器学习计算群集和实例提供了更高的安全性和隔离性,并提供子网、访问控制策略和其他功能来进一步限制访问。 为计算资源配置虚拟网络后,该计算资源不可公开寻址,并且只能从虚拟网络中的虚拟机和应用程序进行访问。 | 审核, 已禁用 | 1.0.1 |
| Azure 机器学习计算应禁用本地身份验证方法 | 禁用本地身份验证方法可确保机器学习计算仅使用 Azure Active Directory 标识进行身份验证,从而提高安全性。 有关详细信息,请访问:https://docs.azure.cn/machine-learning/security-controls-policy?view=azureml-api-2。 | 审核、拒绝、已禁用 | 2.1.0 |
| 应使用客户管理的密钥对 Azure 机器学习工作区进行加密 | 使用客户管理的密钥管理 Azure 机器学习工作区数据的静态数据加密。 默认情况下,使用服务管理的密钥对客户数据进行加密,但为了满足法规符合性标准,通常需要使用客户管理的密钥。 客户管理的密钥允许使用由你创建并拥有的 Azure 密钥保管库 密钥对数据进行加密。 你可以完全控制并负责密钥生命周期,包括轮替和管理。 更多信息请访问 https://docs.azure.cn/machine-learning/how-to-create-workspace-template#deploy-an-encrypted-workspace。 | 审核、拒绝、已禁用 | 1.1.0 |
| 应使用客户管理的密钥对 Azure 机器学习工作区进行加密 | 使用客户管理的密钥管理 Azure 机器学习工作区数据的静态数据加密。 默认情况下,使用服务管理的密钥对客户数据进行加密,但为了满足法规符合性标准,通常需要使用客户管理的密钥。 客户管理的密钥允许使用由你创建并拥有的 Azure 密钥保管库 密钥对数据进行加密。 你可以完全控制并负责密钥生命周期,包括轮替和管理。 更多信息请访问 https://docs.azure.cn/machine-learning/how-to-create-workspace-template#deploy-an-encrypted-workspace。 | AuditIfNotExists, Disabled | 1.0.0 |
| Azure 机器学习工作区应禁用公用网络访问 | 禁用公用网络访问可确保机器学习工作区不会在公共 Internet 上公开,从而提高安全性。 你可以转而通过创建专用终结点来控制工作区的暴露范围。 有关详细信息,请参阅:https://docs.azure.cn/machine-learning/how-to-configure-private-link?view=azureml-api-2&tabs=azure-portal。 | 审核、拒绝、已禁用 | 2.0.1 |
| Azure 机器学习工作区应使用专用链接 | 通过 Azure 专用 Link,在源或目标位置没有公共 IP 地址的情况下,也可以将虚拟网络连接到 Azure 服务。 专用链接 平台处理使用者与服务之间通过 Azure 主干网络进行的连接。 通过将专用终结点映射到 Azure 机器学习工作区,可以降低数据泄露风险。 有关专用链接的详细信息,请访问:https://docs.azure.cn/machine-learning/how-to-configure-private-link。 | Audit, Disabled | 1.0.0 |
| Azure 机器学习工作区应使用用户分配的托管标识 | 使用用户分配的托管标识管理对 Azure ML 工作区和相关资源、Azure 容器注册表、KeyVault、存储和 Application Insights 的访问。 默认情况下,Azure ML 工作区使用系统分配的托管标识来访问关联的资源。 用户分配的托管标识允许你将标识创建为 Azure 资源并维护该标识的生命周期。 更多信息请访问 https://docs.azure.cn/machine-learning/how-to-use-managed-identities?tabs=python。 | 审核、拒绝、已禁用 | 1.0.0 |
| 配置 Azure 机器学习计算以禁用本地身份验证方法 | 禁用位置身份验证方法,使机器学习计算仅使用 Azure Active Directory 标识进行身份验证。 有关详细信息,请访问:https://docs.azure.cn/machine-learning/security-controls-policy。 | 修改,已禁用 | 2.1.0 |
| 将 Azure 机器学习工作区配置为使用专用 DNS 区域 | 使用专用 DNS 区域来替代专用端点的 DNS 解析。 专用 DNS 区域会链接到虚拟网络,以将 DNS 解析到 Azure 机器学习工作区。 有关详细信息,请访问:https://docs.azure.cn/machine-learning/how-to-network-security-overview。 | DeployIfNotExists, Disabled | 1.1.0 |
| 将 Azure 机器学习工作区配置为禁用公用网络访问 | 禁用对 Azure 机器学习工作区的公用网络访问,确保无法通过公共 Internet 访问工作区。 这有助于防范工作区的数据泄露风险。 你可以通过创建专用终结点来控制工作区的暴露范围。 有关详细信息,请参阅:https://docs.azure.cn/machine-learning/how-to-configure-private-link?view=azureml-api-2&tabs=azure-portal。 | 修改,已禁用 | 1.0.3 |
| 为 Azure 机器学习工作区配置专用终结点 | 专用端点可在源或目标位置没有公共 IP 地址的情况下将虚拟网络连接到 Azure 服务。 通过将专用终结点映射到 Azure 机器学习工作区,可以降低数据泄露风险。 有关专用链接的详细信息,请访问:https://docs.azure.cn/machine-learning/how-to-configure-private-link。 | DeployIfNotExists, Disabled | 1.0.0 |
| 将 Azure 机器学习工作区的诊断设置配置为 Log Analytics 工作区 | 在创建或更新任何缺少此诊断设置的 Azure 机器学习工作区时,为 Azure 机器学习工作区部署诊断设置,以便将资源日志流式传输到 Log Analytics 工作区。 | DeployIfNotExists, Disabled | 1.0.1 |
| 应启用 Azure 机器学习工作区中的资源日志 | 发生安全事件或网络遭到入侵时,通过资源日志可重新创建用于调查的活动线索。 | AuditIfNotExists, Disabled | 1.0.1 |
可以在不同的范围(如订阅或资源组级别)内设置策略。 有关详细信息,请参阅 Azure Policy 文档。
分配内置策略
若要查看与 Azure 机器学习相关的内置策略定义,请使用以下步骤:
- 转到 Azure 门户中的 Azure Policy。
- 选择“定义”。
- 对于“类型”,请选择“内置”。 对于“类别”,请选择“机器学习”。
可在此选择策略定义以进行查看。 查看定义时,可使用“分配”链接将策略分配到某个特定范围,并配置策略的参数。 有关更多信息,请参阅使用 Azure 门户创建策略分配,以识别不合规的资源。
还可以使用 Azure PowerShell、Azure CLI 或模板来分配策略。
条件访问策略
若要控制谁可以访问 Azure 机器学习工作区,请使用 Microsoft Entra 条件访问。 若要对 Azure 机器学习工作区使用条件访问,请将条件访问策略分配给名为 Azure 机器学习的应用。 应用 ID 为 0736f41a-0425-bdb5-1563eff02385。
使用着陆区启用自助服务
着陆区是一种体系结构模式,在设置 Azure 环境时考虑到可伸缩性、治理、安全性和工作效率。 数据着陆区是应用程序团队用来托管数据和分析工作负载的管理员配置环境。
着陆区的用途是确保团队在 Azure 环境中启动时,所有基础结构配置工作都已完成。 例如,已将安全控制设置为符合组织标准,并已设置网络连接。
使用登陆区域模式时,可以让机器学习团队能够以自助方式部署和管理自己的资源。 使用 Azure 策略作为管理员,可以审核和管理 Azure 资源以满足合规性。
Azure 机器学习与云采用框架数据管理和分析方案中的数据着陆区集成。 此引用实现提供了一个优化的环境(可以将机器学习工作负荷迁移到 Azure 机器学习 中),并包括预配置的策略。
配置内置策略
计算实例应启用空闲时关闭
此策略控制 Azure 机器学习计算实例是否应启用空闲关闭。 空闲关闭会在指定时间段内处于空闲状态时自动停止计算实例。 此策略可用于节省成本,以及确保资源不会被不必要地使用。
若要配置此策略,请将 effect 参数设置为 Audit、Deny 或 Disabled。 如果设置为 Audit,则可以创建未启用空闲关闭的计算实例,并在活动日志中创建警告事件。
应重新创建计算实例以获取软件更新
控制是否应审核 Azure 机器学习计算实例,以确保它们正在运行最新的可用软件更新。 此策略有助于确保计算实例正在运行最新的软件更新,以维护安全性和性能。 有关详细信息,请参阅 Azure 机器学习的漏洞管理。
若要配置此策略,请将 effect 参数设置为 Audit 或 Disabled。 如果设置为 Audit,则计算未运行最新软件更新时,将在活动日志中创建警告事件。
计算群集和实例应位于虚拟网络中
控制虚拟网络中的计算群集和实例资源的审核。
若要配置此策略,请将 effect 参数设置为 Audit 或 Disabled。 如果设置为 Audit,则可以创建未配置在虚拟网络后面的计算资源,并在活动日志中创建警告事件。
计算实例应禁用本地身份验证方法。
控制 Azure 机器学习计算群集或实例是否应禁用本地身份验证 (SSH)。
若要配置此策略,请将 effect 参数设置为 Audit、Deny 或 Disabled。 如果设置为 Audit,则可以创建启用了 SSH 的计算实例,并在活动日志中创建警告事件。
如果策略设置为 Deny,则无法创建计算实例,除非禁用 SSH。 尝试创建启用了 SSH 的计算实例会导致错误。 还会在活动日志中记录该错误。 策略标识符将作为此错误的一部分返回。
工作区应使用客户管理的密钥进行加密
控制工作区应使用客户管理的密钥进行加密,还是使用 Azure 托管密钥来加密指标和元数据。 若要详细了解如何使用客户管理的密钥,请参阅数据加密文章的 Azure Cosmos DB 部分。
若要配置此策略,请将 effect 参数设置为 Audit 或 Deny。 如果设置为 Audit,您可以在不使用客户管理的密钥的情况下创建工作区,并且活动日志中会创建一条警告事件。
如果策略设置为 Deny,则无法创建工作区,除非该工作区指定了客户管理的密钥。 尝试在不使用客户管理的密钥的情况下创建工作区会导致类似于“Resource 'clustername' was disallowed by policy”的错误,并在活动日志中记录一条错误。 策略标识符也作为此错误的一部分返回。
将工作区配置为禁用公用网络访问
控制工作区是否应禁用来自公共互联网的网络访问。
若要配置此策略,请将 effect 参数设置为 Audit、Deny 或 Disabled。 如果设置为 Audit,则可创建具有公共访问权限的工作区,并在活动日志中创建警告事件。
如果策略设置为 Deny,则无法创建允许从公用 Internet 进行网络访问的工作区。
工作区应启用 V1LegacyMode 以支持网络隔离后向兼容性
控制工作区是否应启用 V1LegacyMode 以支持网络隔离后向兼容性。 如果要在专用网络中保留 Azure 机器学习控制平面数据,此策略非常有用。 有关更多信息,请参阅新 API 平台的网络隔离更改。
若要配置此策略,请将 effect 参数设置为 Audit、Deny 或 Disabled。 如果设置为 Audit,则无需启用 V1LegacyMode 即可创建工作区,并在活动日志中创建警告事件。
如果策略设置为 Deny,则无法创建工作区,除非该工作区启用了 V1LegacyMode。
工作区应使用专用链接
控制工作区是否应使用 Azure 专用链接与 Azure 虚拟网络进行通信。 有关使用专用链接的详细信息,请参阅为 Azure 机器学习工作区配置专用终结点。
若要配置此策略,请将 effect 参数设置为 Audit 或 Deny。 如果设置为 Audit,则无需使用专用链接即可创建工作区,并在活动日志中创建警告事件。
如果策略设置为 Deny,则无法创建工作区,除非该工作区使用了专用链接。 尝试不使用专用链接创建工作区会导致错误。 还会在活动日志中记录该错误。 策略标识符将作为此错误的一部分返回。
工作区应使用用户分配的托管标识
控制是使用系统分配的托管标识(默认设置)还是使用用户分配的托管标识创建工作区。 工作区的托管标识用于访问关联的资源,例如 Azure 存储、Azure 容器注册表、Azure 密钥保管库 和 Azure 应用程序 Insights。 有关详细信息,请参阅在 Azure 机器学习和其他服务之间设置身份验证。
若要配置此策略,请将 effect 参数设置为 Audit、Deny 或 Disabled。 如果设置为 Audit,则可以在不指定用户分配的托管标识的情况下创建工作区。 将使用系统分配的标识,并在活动日志中创建一个警告事件。
如果将此策略设置为 Deny,那么除非在创建过程中提供用户分配的标识,否则无法创建工作区。 尝试在不提供用户分配的标识的情况下创建工作区会导致错误。 系统还会将该错误记录到活动日志中。 策略标识符将作为此错误的一部分返回。
将计算资源配置为修改/禁用本地身份验证
此策略对任何 Azure 机器学习计算群集或实例创建请求进行修改,以禁用本地身份验证 (SSH)。
若要配置此策略,请将 effect 参数设置为“Modify”或“Disabled”。 如果设为Modify,则应用策略的范围内的任何计算群集或实例的创建将自动禁用本地身份验证。
将工作区配置为使用专用 DNS 区域
此策略将工作区配置为使用专用 DNS 区域,替代私有终结点的默认 DNS 解析。
若要配置此策略,请将 effect 参数设置为 DeployIfNotExists。 将 “privateDnsZoneId” 设置为要使用的专用 DNS 区域的 Azure 资源管理器 ID。
将工作区配置为禁用公用网络访问
将工作区配置为禁用公用 Internet 的网络访问。 禁用公用网络访问有助于防范工作空间的数据泄露风险。 可以通过创建专用终结点来访问工作区。 有关详细信息,请参阅为 Azure 机器学习工作区配置专用终结点。
若要配置此策略,请将 effect 参数设置为“Modify”或“Disabled”。 如果设为Modify,则应用策略的范围内创建任何工作区时,都会自动禁用公用网络访问。
为工作区配置专用终结点
配置工作区,以便在 Azure 虚拟网络的指定子网内创建专用终结点。
若要配置此策略,请将 effect 参数设置为 DeployIfNotExists。 将 privateEndpointSubnetID 设置为子网的 Azure 资源管理器 ID。
将诊断工作区配置为将日志发送到 Log Analytics 工作区
将 Azure 机器学习工作区的诊断设置配置为将日志发送到 Log Analytics 工作区。
若要配置此策略,请将 effect 参数设置为 DeployIfNotExists 或 Disabled。 如果设置为 DeployIfNotExists,则策略会在诊断设置尚不存在时创建该设置,以将日志发送到 Log Analytics 工作区。
应启用工作区中的资源日志
审核是否已为 Azure 机器学习工作区启用资源日志。 资源日志提供有关对工作区中的资源执行的操作的详细信息。
若要配置此策略,请将 effect 参数设置为 AuditIfNotExists 或 Disabled。 如果设置为 AuditIfNotExists,如果未为工作区启用资源日志,则策略会进行审核。
创建自定义定义
需要为组织创建自定义策略时,可以使用 Azure Policy 定义结构创建自己的定义。 可以使用 Azure Policy Visual Studio Code 扩展创作和测试策略。
若要发现可在定义中使用的策略别名,请使用以下 Azure CLI 命令列出 Azure 机器学习的别名:
az provider show --namespace Microsoft.MachineLearningServices --expand "resourceTypes/aliases" --query "resourceTypes[].aliases[].name"
若要发现特定别名的允许值,请访问 Azure 机器学习 REST API 参考文档。
有关如何创建自定义策略的教程(而不是特定于 Azure 机器学习),请访问创建自定义策略定义。
示例:无服务器 Spark 计算作业块
{
"properties": {
"displayName": "Deny serverless Spark compute jobs",
"description": "Deny serverless Spark compute jobs",
"mode": "All",
"policyRule": {
"if": {
"allOf": [
{
"field": "Microsoft.MachineLearningServices/workspaces/jobs/jobType",
"in": [
"Spark"
]
}
]
},
"then": {
"effect": "Deny"
}
},
"parameters": {}
}
}
示例:不为托管计算配置公共 IP
{
"properties": {
"displayName": "Deny compute instance and compute cluster creation with public IP",
"description": "Deny compute instance and compute cluster creation with public IP",
"mode": "all",
"parameters": {
"effectType": {
"type": "string",
"defaultValue": "Deny",
"allowedValues": [
"Deny",
"Disabled"
],
"metadata": {
"displayName": "Effect",
"description": "Enable or disable the execution of the policy"
}
}
},
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.MachineLearningServices/workspaces/computes"
},
{
"allOf": [
{
"field": "Microsoft.MachineLearningServices/workspaces/computes/computeType",
"notEquals": "AKS"
},
{
"field": "Microsoft.MachineLearningServices/workspaces/computes/enableNodePublicIP",
"equals": true
}
]
}
]
},
"then": {
"effect": "[parameters('effectType')]"
}
}
}
}
相关内容
云采用框架数据登陆区提供了在 Azure 中管理数据和分析工作负荷的参考实现