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

使用 Azure 资源管理器 (ARM) 锁保护 Azure Quantum 资源

Microsoft 建议使用 Azure 资源管理器 (ARM) 资源锁锁定所有 Azure Quantum 工作区和链接存储帐户,以防意外删除或恶意删除。 例如,教授可能希望限制学生修改提供程序 SKU,但仍允许他们使用笔记本和提交作业。

有两种类型的 ARM 资源锁:

  • CannotDelete 锁可防止用户删除资源,但允许读取和修改其配置。
  • ReadOnly 锁可防止用户修改资源的配置(包括防止删除它),但允许读取资源的配置。 有关资源锁的详细信息,请参阅锁定资源以防止意外更改

注意

如果已使用一个用于管理 Azure Quantum 工作区的 ARM 或 Bicep 模板,则可将本文中的过程添加到现有模板。

下表显示了建议为 Azure Quantum 工作区部署的资源锁配置。

资源 锁类型 说明
工作区 删除 阻止删除工作区。
工作区 只读 防止对工作区进行任何修改(包括添加或删除提供程序),但仍允许用户创建和删除笔记本以及提交作业。 若要在设置此锁时修改提供程序,需要删除资源锁,进行更改,然后重新部署该锁。
存储帐户 Delete 阻止删除存储帐户。

应避免以下配置:

重要

设置以下 ARM 锁可能会导致工作区无法正常运行。

资源 锁类型 说明
存储帐户 只读 在存储帐户上设置只读资源锁可能会导致工作区创建失败、Jupyter Notebook 接口故障以及提交和提取作业失败。
工作区的父订阅,或者工作区或存储帐户的父资源组 只读 将资源锁应用于父资源时,该父级下的所有资源(包括以后创建的资源)将继承相同的锁。 若要进行更精细的控制,应直接在资源级别应用资源锁。

先决条件

你必须是资源的“所有者”或“用户访问管理员”才能应用 ARM 资源锁。 有关详细信息,请参阅 Azure 内置角色

命令行部署

你需要使用 Azure PowerShell 或 Azure CLI 来部署该锁。 如果使用 Azure CLI,则必须具有最新版本。 有关安装说明,请参阅:

重要

如果之前尚未将 Azure CLI 与 Azure Quantum 配合使用,请按照环境设置部分的步骤添加 quantum 扩展并注册 Azure Quantum 命名空间。

登录 Azure

安装 Azure CLI 或 Azure PowerShell 后,请确保首次登录。 选择以下选项卡之一,并运行相应的命令行命令登录到 Azure:

az login

如果你有多个 Azure 订阅,请选择要锁定其资源的订阅。 将 SubscriptionName 替换为你的订阅名称或订阅 ID。 例如,

az account set --subscription "Azure subscription 1"

创建 ARM 资源锁

部署资源锁时,请指定锁的名称、锁的类型以及有关该资源的其他信息。 可以从 Azure Quantum 门户中的资源主页复制并粘贴此信息。

az lock create \
    --name <lock> \
    --resource-group <resource-group> \
    --resource <workspace> \
    --lock-type CanNotDelete \
    --resource-type Microsoft.Quantum/workspaces

  • name:锁的说明性名称
  • resource-group:父资源组的名称。
  • resource:要向其应用锁的资源的名称。
  • lock-type:要应用的锁的类型,可以是 CanNotDelete 或 ReadOnly。
  • resource-type:资源的类型 target 。

例如,若要在工作区上创建 CanNotDelete 锁,请执行以下命令:

az lock create \
    --name ArmLockWkspDelete \
    --resource-group armlocks-resgrp \
    --resource armlocks-wksp \
    --lock-type CanNotDelete \
    --resource-type Microsoft.Quantum/workspaces

如果成功,Azure 会返回 JSON 格式的锁配置:

{
  "id": "/subscriptions/<ID>/resourcegroups/armlocks-resgrp/providers/Microsoft.Quantum/workspaces/armlocks-wksp/providers/Microsoft.Authorization/locks/ArmLockWkspDelete",
  "level": "CanNotDelete",
  "name": "ArmLockWkspDelete",
  "notes": null,
  "owners": null,
  "resourceGroup": "armlocks-resgrp",
  "type": "Microsoft.Authorization/locks"
}

若要在工作区上创建 ReadOnly 锁,请执行以下命令:

az lock create \
    --name ArmLockWkspRead \
    --resource-group armlocks-resgrp \
    --resource armlocks-wksp \
    --lock-type ReadOnly \
    --resource-type Microsoft.Quantum/workspaces
{
  "id": "/subscriptions/<ID>/resourcegroups/armlocks-resgrp/providers/Microsoft.Quantum/workspaces/armlocks-wksp/providers/Microsoft.Authorization/locks/ArmLockWkspRead",
  "level": "ReadOnly",
  "name": "ArmLockWkspRead",
  "notes": null,
  "owners": null,
  "resourceGroup": "armlocks-resgrp",
  "type": "Microsoft.Authorization/locks"
}

若要在存储帐户上创建 CanNotDelete 锁,请执行以下命令:

az lock create \
    --name ArmLockStoreDelete \
    --resource-group armlocks-resgrp \
    --resource armlocksstorage \--lock-type CanNotDelete \
    --resource-type Microsoft.Storage/storageAccounts
{
  "id": "/subscriptions/<ID>/resourcegroups/armlocks-resgrp/providers/Microsoft.Storage/storageAccounts/armlocksstorage/providers/Microsoft.Authorization/locks/ArmLockStoreDelete",
  "level": "CanNotDelete",
  "name": "ArmLockStoreDelete",
  "notes": null,
  "owners": null,
  "resourceGroup": "armlocks-resgrp",
  "type": "Microsoft.Authorization/locks"
}

查看和删除锁

查看或删除锁:

有关详细信息,请查看 az lock 参考

查看订阅中的所有锁

az lock list

查看工作区中的所有锁

az lock list \
    --resource-group armlocks-resgrp \
    --resource-name armlocks-wksp  \
    --resource-type Microsoft.Quantum/workspaces

查看一个资源组中的所有资源的所有锁

az lock list --resource-group armlocks-resgrp

查看单个锁的属性

az lock show \
    --name ArmLockStoreDelete \
    --resource-group armlocks-resgrp \
    --resource-name armlocksstorage \
    --resource-type  Microsoft.Storage/storageAccounts

删除锁

az lock delete \
    --name ArmLockStoreDelete \
    --resource-group armlocks-resgrp \
    --resource-name armlocksstorage \
    --resource-type  Microsoft.Storage/storageAccounts

如果删除成功,Azure 不会返回消息。 若要验证该删除,可以运行 az lock list

后续步骤