你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

审核和管理 Azure 机器学习

团队在 Azure 机器学习上协作时,可能会面临针对资源的配置和组织的不同要求。 机器学习团队可能希望能够灵活地根据协作来组织工作区,或根据用例要求来调整计算群集的大小。 在这些情况下,只有应用程序团队可以管理自己的基础结构,才能提高工作效率。

作为平台管理员,你可以使用策略进行护栏布局,使团队可以管理自己的资源。 Azure Policy 有助于审核和治理资源状态。 本文介绍如何使用适用于 Azure 机器学习的审核控制和治理做法。

Azure 机器学习的策略

Azure Policy 是一种管理工具,你可用它来确保 Azure 资源符合你的策略。

Azure Policy 提供了一组策略,可用于 Azure 机器学习的常见方案。 你可以将这些策略定义分配给现有订阅,也可以将它们作为基础来创建你自己的自定义定义

下表列出了可以使用 Azure 机器学习来分配的内置策略。 有关所有 Azure 内置策略的列表,请参阅内置策略

名称
(Azure 门户)
说明 效果 版本
(GitHub)
[预览]:Azure 机器学习部署应仅使用批准的注册表模型 限制注册表模型的部署,以控制在组织内使用的由外部创建的模型 Audit、Deny、Disabled 1.0.0-preview
[预览版]:Azure 机器学习模型注册表部署受到限制,但允许的注册表除外 仅在允许的注册表中部署注册表模型,这些模型不受限制。 拒绝、已禁用 1.0.0-preview
Azure 机器学习计算实例应处于空闲关闭状态。 使用空闲关闭计划可降低成本,方法是关闭在预先确定活动期后处于空闲状态的计算。 Audit、Deny、Disabled 1.0.0
应重新创建 Azure 机器学习计算实例以获取最新的软件更新 确保 Azure 机器学习计算实例在最新的可用操作系统上运行。 通过使用最新的安全修补程序运行,提高了安全性并减少了漏洞。 有关详细信息,请访问 https://aka.ms/azureml-ci-updates/ [parameters('effects')] 1.0.3
Azure 机器学习计算应位于虚拟网络中 Azure 虚拟网络增强了 Azure 机器学习计算群集和实例的安全性和隔离性,并提供子网、访问控制策略和其他功能来进一步限制访问。 为计算配置虚拟网络后,该计算不可公开寻址,并且只能从虚拟网络中的虚拟机和应用程序进行访问。 Audit、Disabled 1.0.1
Azure 机器学习计算应禁用本地身份验证方法 禁用本地身份验证方法可确保机器学习计算需要专用于身份验证的 Azure Active Directory 标识,从而提高安全性。 有关详细信息,请访问:https://aka.ms/azure-ml-aad-policy Audit、Deny、Disabled 2.1.0
应使用客户管理的密钥对 Azure 机器学习工作区进行加密 使用客户管理的密钥管理 Azure 机器学习工作区数据的静态加密。 默认情况下,使用服务管理的密钥对客户数据进行加密,但为了满足法规符合性标准,通常需要使用客户管理的密钥。 客户管理的密钥允许使用由你创建并拥有的 Azure Key Vault 密钥对数据进行加密。 你可以完全控制并负责关键生命周期,包括轮换和管理。 更多信息请访问 https://aka.ms/azureml-workspaces-cmk Audit、Deny、Disabled 1.1.0
Azure 机器学习工作区应禁用公用网络访问 禁用公用网络访问可确保机器学习工作区不会在公共 Internet 上公开,从而提高安全性。 你可以通过创建专用终结点来控制工作区的公开。 有关详细信息,请参阅:https://learn.microsoft.com/azure/machine-learning/how-to-configure-private-link?view=azureml-api-2&tabs=azure-portal Audit、Deny、Disabled 2.0.1
Azure 机器学习工作区应启用 V1LegacyMode 以支持网络隔离后向兼容性 Azure ML 正在 Azure 资源管理器上过渡到新的 V2 API 平台,并且可以使用 V1LegacyMode 参数控制 API 平台版本。 启用 V1LegacyMode 参数,你可以将工作区与 V1 保持在相同的网络隔离中,尽管你不会使用新的 V2 功能。 我们建议,仅在希望将 AzureML 控制平面数据保留在专用网络中时才打开 V1 旧模式。 有关详细信息,请访问:https://aka.ms/V1LegacyMode Audit、Deny、Disabled 1.0.0
Azure 机器学习工作区应使用专用链接 通过 Azure 专用链接,在没有源位置或目标位置的公共 IP 地址的情况下,也可以将虚拟网络连接到 Azure 服务。 专用链接平台处理使用者与服务之间通过 Azure 主干网络进行的连接。 通过将专用终结点映射到 Azure 机器学习工作区,可以降低数据泄露风险。 有关专用链接的详细信息,请访问:https://docs.microsoft.com/azure/machine-learning/how-to-configure-private-link Audit、Disabled 1.0.0
Azure 机器学习工作区应使用用户分配的托管标识 使用用户分配的托管标识管理对 Azure ML 工作区和相关资源、Azure 容器注册表、KeyVault、存储和应用见解的访问。 默认情况下,Azure ML 工作区使用系统分配的托管标识来访问关联的资源。 用户分配的托管标识允许你将标识创建为 Azure 资源并维护该标识的生命周期。 更多信息请访问 https://docs.microsoft.com/azure/machine-learning/how-to-use-managed-identities?tabs=python Audit、Deny、Disabled 1.0.0
配置 Azure 机器学习计算以禁用本地身份验证方法 禁用本地身份验证方法,使机器学习计算需要专用于身份验证的 Azure Active Directory 标识。 有关详细信息,请访问:https://aka.ms/azure-ml-aad-policy 修改,已禁用 2.1.0
将 Azure 机器学习工作区配置为使用专用 DNS 区域 使用专用 DNS 区域来替代专用终结点的 DNS 解析。 专用 DNS 区域会链接到虚拟网络,以解析到 Azure 机器学习工作区。 有关详细信息,请访问:https://docs.microsoft.com/azure/machine-learning/how-to-network-security-overview DeployIfNotExists、Disabled 1.1.0
将 Azure 机器学习工作区配置为禁用公用网络访问 禁用对 Azure 机器学习工作区的公用网络访问,确保无法通过公共 Internet 访问工作区。 这有助于防范工作区的数据泄露风险。 你可以通过创建专用终结点来控制工作区的公开。 有关详细信息,请参阅:https://learn.microsoft.com/azure/machine-learning/how-to-configure-private-link?view=azureml-api-2&tabs=azure-portal 修改,已禁用 1.0.3
为 Azure 机器学习工作区配置专用终结点 专用终结点可在源或目标位置没有公共 IP 地址的情况下将虚拟网络连接到 Azure 服务。 通过将专用终结点映射到 Azure 机器学习工作区,可以降低数据泄露风险。 有关专用链接的详细信息,请访问:https://docs.microsoft.com/azure/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 机器学习相关的内置策略定义,请使用以下步骤:

  1. Azure 门户中转到“Azure Policy”。
  2. 选择“定义”。
  3. 对于“类型”,请选择“内置”。 对于“类别”,请选择“机器学习”。

可在此选择策略定义以进行查看。 查看定义时,可使用“分配”链接将策略分配到某个特定范围,并配置策略的参数。 有关更多信息,请参阅使用 Azure 门户创建策略分配,以识别不合规的资源

还可以使用 Azure PowerShellAzure CLI模板来分配策略。

条件性访问策略

若要控制谁可以访问 Azure 机器学习工作区,请使用 Microsoft Entra 条件访问。 若要对 Azure 机器学习工作区使用条件访问,请将条件访问策略分配给名为 Azure 机器学习的应用。 应用 ID 为 0736f41a-0425-bdb5-1563eff02385

使用登陆区域启用自助服务

登陆区域是一种体系结构模式,在设置 Azure 环境时负责缩放、治理、安全性和工作效率。 数据登陆区域是应用程序团队用来托管数据和分析工作负荷的管理员配置环境。

登陆区域的用途是确保团队在 Azure 环境中启动时,所有基础结构配置工作都已完成。 例如,已将安全控制设置为符合组织标准,并已设置网络连接。

使用登陆区域模式时,可以让机器学习团队能够以自助方式部署和管理自己的资源。 使用 Azure 策略作为管理员,可以审核和管理 Azure 资源以满足合规性。

Azure 机器学习与云采用框架数据管理和分析方案中的数据登陆区域集成。 此引用实现提供了一个优化的环境(可以将机器学习工作负荷迁移到 Azure 机器学习中),并包括预配置的策略。

配置内置策略

计算实例应处于空闲关闭状态

此策略控制 Azure 机器学习计算实例是否应启用空闲关闭。 空闲关闭会在指定时间段内处于空闲状态时自动停止计算实例。 此策略可用于节省成本,以及确保不必要地使用资源。

若要配置此策略,请将 effect 参数设置为 AuditDenyDisabled。 如果设置为 Audit,则可以创建未启用空闲关闭的计算实例,并在活动日志中创建警告事件。

应重新创建计算实例以获取软件更新

控制是否应审核 Azure 机器学习计算实例,以确保它们正在运行最新的可用软件更新。 此策略有助于确保计算实例正在运行最新的软件更新,以维护安全性和性能。 有关详细信息,请参阅 Azure 机器学习的漏洞管理

若要配置此策略,请将 effect 参数设置为 AuditDisabled。 如果设置为 Audit,则计算未运行最新软件更新时,将在活动日志中创建警告事件。

计算群集和实例应位于虚拟网络中

控制虚拟网络后的计算群集和实例资源的审核。

若要配置此策略,请将 effect 参数设置为 AuditDisabled。 如果设置为 Audit,则可以创建未在虚拟网络后配置的计算,并在活动日志中创建警告事件。

计算应已禁用本地身份验证方法。

控制 Azure 机器学习计算群集或实例是否应禁用本地身份验证 (SSH)。

若要配置此策略,请将 effect 参数设置为 AuditDenyDisabled。 如果设置为 Audit,则可以创建启用了 SSH 的计算,并在活动日志中创建警告事件。

如果策略设置为 Deny,则无法创建计算,除非禁用 SSH。 尝试创建启用了 SSH 的计算会导致错误。 还会在活动日志中记录该错误。 策略标识符将作为此错误的一部分返回。

工作区应使用客户管理的密钥进行加密

控制是应使用客户管理的密钥对工作区进行加密,还是应使用 Microsoft 管理的密钥来加密指标和元数据。 若要详细了解如何使用客户管理的密钥,请参阅数据加密文章的 Azure Cosmos DB 部分。

若要配置此策略,请将 effect 参数设置为 AuditDeny。 如果设置为 Audit,则无需客户管理的密钥即可创建工作区,并在活动日志中创建警告事件。

如果策略设置为 Deny,则无法创建工作区,除非该策略指定了客户管理的密钥。 尝试在不使用客户管理的密钥的情况下创建工作区会导致类似于“Resource 'clustername' was disallowed by policy”的错误,会在活动日志中创建一个错误。 策略标识符也作为此错误的一部分返回。

将工作区配置为禁用公用网络访问

控制工作区是否应禁用公用 Internet 的网络访问。

若要配置此策略,请将 effect 参数设置为 AuditDenyDisabled。 如果设置为 Audit,则可创建具有公共访问权限的工作区,并在活动日志中创建警告事件。

如果策略设置为 Deny,则无法创建允许从公用 Internet 进行网络访问的工作区。

工作区应启用 V1LegacyMode 以支持网络隔离后向兼容性

控制工作区是否应启用 V1LegacyMode 以支持网络隔离后向兼容性。 如果要在专用网络中保留 Azure 机器学习控制平面数据,此策略非常有用。 有关更多信息,请参阅新 API 平台的网络隔离更改

若要配置此策略,请将 effect 参数设置为 AuditDenyDisabled。 如果设置为 Audit,则无需启用 V1LegacyMode 即可创建工作区,并在活动日志中创建警告事件。

如果策略设置为 Deny,则无法创建工作区,除非该策略启用了 V1LegacyMode。

控制工作区是否应使用 Azure 专用链接与 Azure 虚拟网络进行通信。 有关使用专用链接的详细信息,请参阅为 Azure 机器学习工作区配置专用终结点

若要配置此策略,请将 effect 参数设置为 AuditDeny。 如果设置为 Audit,则无需使用专用链接即可创建工作区,并在活动日志中创建警告事件。

如果策略设置为 Deny,则无法创建工作区,除非该策略使用了专用链接。 尝试不使用专用链接创建工作区会导致错误。 还会在活动日志中记录该错误。 策略标识符将作为此错误的一部分返回。

工作区应使用用户分配的托管标识

控制是使用系统分配的托管标识(默认设置)还是使用用户分配的托管标识创建工作区。 工作区的托管标识用于访问关联的资源,例如 Azure 存储、Azure 容器注册表、Azure Key Vault 和 Azure Application Insights。 有关详细信息,请参阅在 Azure 机器学习和其他服务之间设置身份验证

若要配置此策略,请将 effect 参数设置为 AuditDenyDisabled。 如果设置为 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 参数设置为 DeployIfNotExistsDisabled。 如果设置为 DeployIfNotExists,则策略会创建诊断设置,以在日志不存在的情况下将日志发送到 Log Analytics 工作区。

应启用工作区中的资源日志

审核是否已为 Azure 机器学习工作区启用资源日志。 资源日志提供有关对工作区中的资源执行的操作的详细信息。

若要配置此策略,请将 effect 参数设置为 AuditIfNotExistsDisabled。 如果设置为 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')]"
            }
        }
    }
}