你当前正在访问 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
。