你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
2026 年 7 月 11 日,蓝图(预览版)将弃用。 将现有蓝图定义和分配迁移到 模板规格 和 部署堆栈。 蓝图构件将被转换为 ARM JSON 模板或 Bicep 文件,以用于定义部署堆栈。 若要了解如何将工件创建为 ARM 资源,请参阅:
使用 Azure 蓝图 资源锁,可以保护新部署的资源免受篡改,即使是拥有 所有者 角色的帐户也是如此。 可以在 Azure 资源管理器模板(ARM 模板)项目创建的资源的蓝图定义中添加此保护。 蓝图资源锁是在蓝图分配期间设置的。
在本教程中,你将完成以下步骤:
- 创建蓝图定义
- 将蓝图定义标记为 已发布
- 将蓝图定义分配给现有订阅(设置资源锁)
- 检查新的资源组
- 取消分配蓝图以删除锁
先决条件
如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
创建蓝图定义
首先,创建蓝图定义。
在左窗格中选择 “所有服务 ”。 搜索并选择 “蓝图”。
在左侧的“入门”页上,选择“创建蓝图”下的“创建”。
在页面顶部查找 空白蓝图 示例。 选择 “以空白蓝图开头”。
在 “基本信息 ”选项卡上输入此信息:
- 蓝图名称:提供蓝图示例副本的名称。 在本教程中,我们将使用名称 locked-storageaccount。
- 蓝图说明:为蓝图定义添加说明。 使用“用于测试已部署资源中的蓝图资源锁定”。
- 定义位置:选择省略号按钮(...),然后选择管理组或订阅以将蓝图定义保存到。
选择页面顶部的“ 项目 ”选项卡,或选择“ 下一步: 页面底部的项目”。
在订阅级别添加资源组:
- 选择“订阅”下的“添加项目”行。
- 在项目类型下选择资源组。
- 将 项目显示名称 设置为 RGtoLock。
- 将“资源组名称和位置”框留空,但请确保在每个属性上选中该复选框以使它们成为动态参数。
- 选择 “添加” 以将项目添加到蓝图。
在资源组下添加模板:
选择 RGtoLock 条目下的 添加项目 行。
在“项目类型”下选择“Azure 资源管理器”模板,将“项目显示名称”设置为 StorageAccount,并将“说明”留空。
在 “模板 ”选项卡上,将以下 ARM 模板粘贴到编辑器框中。 粘贴模板后,选择“ 添加 ”将项目添加到蓝图。
注释
此步骤定义要部署的被蓝图资源锁锁定的资源,但不包括蓝图资源锁。 蓝图资源锁被配置为蓝图分配的一个参数。
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageAccountType": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_ZRS", "Premium_LRS" ], "metadata": { "description": "Storage Account type" } } }, "variables": { "storageAccountName": "[concat('store', uniquestring(resourceGroup().id))]" }, "resources": [{ "type": "Microsoft.Storage/storageAccounts", "name": "[variables('storageAccountName')]", "location": "[resourceGroup().location]", "apiVersion": "2018-07-01", "sku": { "name": "[parameters('storageAccountType')]" }, "kind": "StorageV2", "properties": {} }], "outputs": { "storageAccountName": { "type": "string", "value": "[variables('storageAccountName')]" } } }选择页面底部的 “保存草稿 ”。
此步骤在所选管理组或订阅中创建蓝图定义。
显示 “保存蓝图定义成功 ”门户通知后,转到下一步。
发布蓝图定义
蓝图定义现已在环境中创建。 它是在 草稿 模式下创建的,必须先发布,然后才能分配和部署它。
在左窗格中选择 “所有服务 ”。 搜索并选择 “蓝图”。
选择左侧的 “蓝图定义 ”页。 使用筛选器查找 locked-storageaccount 蓝图定义,然后选择它。
选择页面顶部的 “发布蓝图 ”。 在右侧的新窗格中,输入 1.0 作为 版本。 如果稍后进行更改,此属性非常有用。 输入更改注释,例如,“为锁定蓝图部署的资源而发布的第一个版本”。 然后选择页面底部的 “发布 ”。
使用此步骤可将蓝图分配到订阅。 发布蓝图定义后,仍可以进行更改。 如果进行更改,则需要使用新版本值发布定义,以跟踪相同蓝图定义版本之间的差异。
发布蓝图定义成功后,会显示门户通知,转到下一步。
分配蓝图定义
发布蓝图定义后,可将它分配到它所在的管理组中的某个订阅。 在此步骤中,您需要提供参数,以确保蓝图定义的每次部署各有不同。
在左窗格中选择 “所有服务 ”。 搜索并选择 “蓝图”。
选择左侧的 “蓝图定义 ”页。 使用筛选器查找 locked-storageaccount 蓝图定义,然后选择它。
选择蓝图定义页面顶部的“分配蓝图”。
提供蓝图分配的参数值:
基础知识
- 订阅:选择保存蓝图定义的管理组中的一个或多个订阅。 如果选择多个订阅,将使用输入的参数为每个订阅创建分配。
- 任务名称:该名称将根据蓝图定义的名称自动填充。 我们希望此分配表示锁定新资源组,因此请将分配名称更改为 assignment-locked-storageaccount-TestingBPLocks。
- 位置:选择要在其中创建托管标识的区域。 Azure 蓝图使用此托管标识来部署分配的蓝图中的所有项目。 若要了解详细信息,请参阅 Azure 资源的托管标识。 对于本教程,请选择 “美国东部 2”。
- 蓝图定义版本:选择蓝图定义的已发布版本 1.0 。
锁分配
选择“只读”蓝图锁定模式。 有关详细信息,请参阅 蓝图资源锁定。
注释
此步骤在新部署的资源上配置蓝图资源锁。
托管标识
使用默认选项: 系统分配。 有关详细信息,请参阅 托管标识。
项目参数
在本部分定义的参数将应用到定义了这些参数的项目。 这些参数是 动态参数 ,因为它们是在分配蓝图期间定义的。 对于每个项目,请将参数值设置为“ 值 ”列中显示的内容。
项目名称 工件类型 参数名称 价值 Description RGtoLock 资源组 资源组 Name TestingBPLocks 定义要向其应用蓝图锁的新资源组的名称。 RGtoLock 资源组 资源组 位置 美国西部 2 定义要向其应用蓝图锁的新资源组的位置。 StorageAccount Resource Manager 模板 存储账户类型(StorageAccount) Standard_GRS 存储 SKU。 默认值 为Standard_LRS。
输入所有参数后,选择页面底部的 “分配 ”。
此步骤部署定义的资源并配置所选锁定分配。 应用蓝图锁最多可能需要 30 分钟。
显示 “分配蓝图定义成功 ”门户通知后,转到下一步。
检查分配部署的资源
分配过程创建了资源组 TestingBPLocks,并通过 ARM 模板工件部署存储帐户。 分配详细信息页上会显示新的资源组和所选锁定状态。
在左窗格中选择 “所有服务 ”。 搜索并选择 “蓝图”。
选择左侧分配的蓝图页面。 使用筛选器找到 assignment-locked-storageaccount-TestingBPLocks 蓝图分配,并将其选中。
在此页中,可以看到分配成功消息和已部署资源的消息,以及新的蓝图锁定状态。 如果分配已更新,分配操作下拉列表将显示有关每个定义版本的部署的详细信息。 可以选择资源组以打开属性页。
选择 TestingBPLocks 资源组。
选择左侧的 “访问控制”(IAM) 页。 然后选择“ 角色分配 ”选项卡。
在此处可以看到,assignment-locked-storageaccount-TestingBPLocks 蓝图分配具有“所有者”角色。 它具有此角色,因为此角色用于部署和锁定资源组。
选择“ 拒绝分配 ”选项卡。
蓝图分配在部署的资源组上创建了 拒绝分配 ,以强制实施 只读 蓝图锁定模式。 拒绝分配可防止具有相应权限的人员在“角色分配”选项卡上执行特定操作。 拒绝分配会影响所有主体。
若要了解如何从拒绝分配中排除主体,请参阅蓝图资源锁定。
选择拒绝分配,然后在左侧选择拒绝权限页。
该拒绝分配正在阻止使用 * 和 Action 配置的所有操作,但允许通过 NotActions 排除“*/read”,以此进行读取访问。
在 Azure 门户痕迹导航中,选择“TestingBPLocks - 访问控制(IAM)”。 然后选择左侧的 “概述 ”页,然后选择“ 删除资源组 ”按钮。 输入名称 TestingBPLocks 以确认删除,然后选择窗格底部的 “删除 ”。
此时会显示门户通知 “删除资源组 TestingBPLocks”失败 。 错误中指出,尽管你的帐户有权删除资源组,但蓝图分配拒绝了访问。 请记住,我们在蓝图分配期间选择了 只读 蓝图锁定模式。 蓝图锁可防止具有权限(甚至 所有者)的帐户删除资源。 有关详细信息,请参阅 蓝图资源锁定。
这些步骤演示了部署的资源现在受到蓝图锁的保护,蓝图锁可以阻止意外的删除,甚至可以阻止具有权限的帐户删除资源。
取消分配蓝图
最后一步是取消蓝图定义的分配。 删除分配不会删除关联的项目。
在左窗格中选择 “所有服务 ”。 搜索并选择 “蓝图”。
选择左侧分配的蓝图页面。 使用筛选器找到 assignment-locked-storageaccount-TestingBPLocks 蓝图分配,并将其选中。
选择页面顶部的 “取消分配蓝图”按钮。 在确认对话框中阅读警告,然后选择“ 确定”。
删除蓝图分配后,蓝图锁也会被删除。 具有适当权限的帐户可以再次删除资源。
从 Azure 菜单中选择 资源组 ,然后选择 TestingBPLocks。
选择左侧的 “访问控制”(IAM) 页,然后选择“ 角色分配 ”选项卡。
资源组的安全性显示该蓝图分配不再拥有“所有者”访问权限。
当“删除蓝图分配成功”的门户界面通知出现后,转到下一步。
清理资源
完成本教程后,请删除以下资源:
- 资源组 TestingBPLocks
- 蓝图定义 locked-storageaccount
后续步骤
本教程介绍了如何保护使用 Azure 蓝图部署的新资源。 若要详细了解 Azure 蓝图,请继续阅读蓝图生命周期文章。