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

审核和管理 Azure AI Foundry 中心和项目

注释

本文中的信息特定于 基于中心的项目,不适用于 Foundry 项目。 请参阅 如何知道我拥有哪种类型的项目?创建基于中心的项目

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

Azure AI Foundry 中心和项目的策略

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

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

下表列出了适用于 Azure AI Foundry 和 Azure 机器学习的内置策略。 有关所有 Azure 内置策略的列表,请参阅内置策略

重要

一旦分配了策略,它就会应用于 Azure AI Foundry 和 Azure 机器学习工作区。 例如,订阅级别的禁用公用网络访问的策略将适用于所有 Azure AI Foundry 中心和项目以及 Azure 机器学习工作区。

名称
(Azure 门户)
DESCRIPTION 影响 版本
(GitHub)
计算实例应处于空闲关闭状态 使用空闲关闭计划可降低成本,方法是关闭在预先确定活动期后处于空闲状态的计算。 Audit、Deny、Disabled 1.0.0
应重新创建计算实例以获取最新软件更新 确保计算实例在最新的可用操作系统上运行。 通过使用最新的安全修补程序运行,提高了安全性并减少了漏洞。 有关详细信息,请访问 https://aka.ms/azureml-ci-updates/ [参数('effects')] 1.0.3
计算应位于虚拟网络中 Azure 虚拟网络增强了计算群集和实例的安全性和隔离性,并提供子网、访问控制策略和其他功能来进一步限制访问。 为计算配置虚拟网络后,该计算不可公开寻址,并且只能从虚拟网络中的虚拟机和应用程序进行访问。 Audit、Disabled 1.0.1
计算应已禁用本地身份验证方法 禁用本地身份验证方法可确保计算需要专用于身份验证的 Microsoft Entra ID 标识,从而提高安全性。 有关详细信息,请访问:https://aka.ms/azure-ml-aad-policy Audit、Deny、Disabled 2.1.0
中心应使用客户管理的密钥进行加密 使用客户管理的密钥来管理数据的静态加密。 默认情况下,使用服务管理的密钥对客户数据进行加密,但为了满足法规符合性标准,通常需要使用客户管理的密钥。 客户管理的密钥允许使用由你创建并拥有的 Azure Key Vault 密钥对数据进行加密。 你可以完全控制并负责关键生命周期,包括轮换和管理。 更多信息请访问 https://aka.ms/azureml-workspaces-cmk Audit、Deny、Disabled 1.1.0
中心应禁用公用网络访问 禁用公用网络访问可确保中心和项目不会在公共 Internet 上公开,从而提高安全性。 你可以通过创建专用端点来控制工作区的曝光。 有关详细信息,请访问:https://learn.microsoft.com/azure/ai-studio/how-to\configure-private-link Audit、Deny、Disabled 2.0.1
中心应使用专用链接 通过 Azure 专用链接,在没有源位置或目标位置的公共 IP 地址的情况下,也可以将虚拟网络连接到 Azure 服务。 专用链接平台处理使用者与服务之间通过 Azure 主干网络进行的连接。 通过将专用终结点映射到中心,降低数据泄露风险。 有关专用链接的详细信息,请访问:https://learn.microsoft.com/azure/ai-studio/how-to/configure-private-link Audit、Disabled 1.0.0
中心应使用用户分配的托管标识 使用用户分配的托管标识管理对中心和相关资源、Azure 容器注册表、KeyVault、存储和应用见解的访问。 默认情况下,中心使用系统分配的托管标识来访问关联的资源。 用户分配的托管标识允许你将标识创建为 Azure 资源并维护该标识的生命周期。 Audit、Deny、Disabled 1.0.0
可禁用本地身份验证方法的计算 禁用本地身份验证方法,使计算需要专用于身份验证的 Microsoft Entra ID 标识。 有关详细信息,请访问:https://aka.ms/azure-ml-aad-policy 修改,禁用 2.1.0
将中心配置为使用专用 DNS 区域 使用专用 DNS 区域来替代专用终结点的 DNS 解析。 专用 DNS 区域会链接到你的虚拟网络,以解析到 Azure AI Foundry 中心。 DeployIfNotExists、Disabled 1.1.0
将中心配置为禁用公用网络访问 禁用对中心和项目的公用网络访问,确保无法通过公共 Internet 对其进行访问。 这有助于防范工作区的数据泄露风险。 你可以通过创建专用端点来控制工作区的曝光。 有关详细信息,请访问:https://learn.microsoft.com/azure/ai-studio/how-to/configure-private-link 修改,禁用 1.0.3
为 Azure 中心配置专用终结点 专用终结点可在源或目标位置没有公共 IP 地址的情况下将虚拟网络连接到 Azure 服务。 通过将专用终结点映射到中心,可以降低数据泄露风险。 有关专用链接的详细信息,请访问:https://learn.microsoft.com/azure/ai-studio/how-to/configure-private-link DeployIfNotExists、Disabled 1.0.0
为中心配置诊断设置,以便流式传输到 Log Analytics 工作区 为 Azure AI Foundry 中心部署诊断设置,以便在创建或更新缺少此诊断设置的任何中心时,将资源日志流式传输到 Log Analytics 工作区。 DeployIfNotExists、Disabled 1.0.1
应启用中心内的资源日志 发生安全事件或网络遭到入侵时,通过资源日志可重新创建用于调查的活动线索。 AuditIfNotExists、Disabled 1.0.1

可以在不同的范围(如订阅或资源组级别)内设置策略。 有关详细信息,请参阅 Azure Policy 文档

分配内置策略

若要查看内置策略定义,请使用以下步骤:

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

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

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

条件性访问策略

若要控制谁可以访问 Azure AI Foundry 中心和项目,请使用 Microsoft Entra 条件访问。 若要对中心使用条件访问, 请将条件访问策略分配给 以下应用:

应用名称 应用标识 DESCRIPTION
Azure AI Foundry 应用 cb2ff863-7f30-4ced-ab89-a00194bcf6d9 用于控制对 Azure AI Foundry 门户的访问。
Azure 机器学习 Web 应用 d7304df8-741f-47d3-9bc2-df0e24e2071f 用于控制对 Azure 机器学习工作室的访问。
Azure 机器学习 0736f41a-0425-bdb5-1563eff02385 用于控制对 Azure 机器学习 API 的直接访问。 例如,使用 SDK 或 REST API 时。 基于 Azure AI Foundry 中心的项目依赖于 Azure 机器学习 API。

配置内置策略

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

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

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

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

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

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

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

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

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

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

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

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

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

中心应使用客户管理的密钥进行加密

控制是应使用客户管理的密钥对中心及其项目进行加密,还是应使用 Microsoft 管理的密钥来加密指标和元数据。 若要详细了解如何使用客户管理的密钥,请参阅客户管理的密钥一文。

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

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

将中心配置为禁用公用网络访问

控制中心及其项目是否应禁用公用 Internet 的网络访问。

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

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

控制中心及其项目是否应使用 Azure 专用链接与 Azure 虚拟网络进行通信。 有关使用专用链接的详细信息,请参阅配置专用终结点

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

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

中心应使用用户分配的托管标识

控制是使用系统分配的托管标识(默认设置)还是使用用户分配的托管标识创建中心。 中心的托管标识用于访问关联的资源,例如 Azure 存储、Azure 容器注册表、Azure Key Vault 和 Azure Application Insights。

若要配置此策略,请将 effect 参数设置为 AuditDenyDisabled。 如果设置为 Audit,则可以在不指定用户分配的托管标识的情况下创建中心。 将使用系统分配的标识,并在活动日志中创建一个警告事件。

如果将此策略设置为 Deny,那么除非在创建过程中提供用户分配的标识,否则无法创建中心。 尝试在不提供用户分配的标识的情况下创建中心会导致错误。 系统还会将该错误记录到活动日志中。 策略标识符将作为此错误的一部分返回。

将计算配置为修改/禁用本地身份验证

此策略修改任何计算群集或实例创建请求,以禁用本地身份验证 (SSH)。

若要配置此策略,请将 effect 参数设置为“Modify”或“Disabled”。 如果设为“Modify”,则应用策略的范围内的任何计算群集或实例的创建将自动禁用本地身份验证。

将中心配置为使用专用 DNS 区域

此策略将中心配置为使用专用 DNS 区域,替代专用终结点的默认 DNS 解析。

若要配置此策略,请将 effect 参数设置为 “DeployIfNotExists”。 将 “privateDnsZoneId” 设置为要使用的专用 DNS 区域的 Azure 资源管理器 ID。

将中心配置为禁用公用网络访问

将中心及其项目配置为禁用公用 Internet 的网络访问。 禁用公用网络访问有助于防范数据泄露风险。 可以通过创建专用终结点来访问中心和项目。 有关详细信息,请参阅配置专用终结点

若要配置此策略,请将 effect 参数设置为“Modify”或“Disabled”。 如果设为“Modify”,则在应用策略的范围内创建中心会自动禁用公用网络访问。

为中心配置专用终结点

配置中心,以便在 Azure 虚拟网络的指定子网内创建专用终结点。

若要配置此策略,请将 effect 参数设置为 “DeployIfNotExists”。 将 privateEndpointSubnetID 设置为子网的 Azure 资源管理器 ID。

将诊断中心配置为将日志发送到 Log Analytics 工作区

将中心的诊断设置配置为将日志发送到 Log Analytics 工作区。

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

应启用中心内的资源日志

审核是否已为中心启用资源日志。 资源日志提供有关对中心内的资源执行的操作的详细信息。

若要配置此策略,请将 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')]"
            }
        }
    }
}