部署堆栈资源
你已了解了部署堆栈,以及它为生命周期管理提供的优势。 在你开始为部署生成部署堆栈的过程之前,需要了解有关部署堆栈资源的详细信息。
在本单元中,你将了解部署堆栈资源及其可执行的一些操作。
部署堆栈资源
Azure 资源管理器 (ARM) 是在 Azure 中部署和管理资源的服务。 可以使用资源管理器来创建、更新和删除 Azure 订阅中的资源。
部署堆栈是一种本机 Azure 资源,它允许将典型的 ARM 操作作为一个整体在堆栈上执行。 部署堆栈可以继承 Azure 策略分配和 Azure 基于角色的访问控制 (RBAC) 分配,甚至继承 Microsoft Defender for Cloud 安全建议。 在部署堆栈中,有指向堆栈管理的所有资源、资源组和管理组的指针。 可以通过对部署堆栈资源的单个操作轻松创建、更新或删除堆栈中定义的受管理资源。
部署堆栈操作
资源提供程序是 REST 操作的集合,可为特定 Azure 服务启用功能。 例如,Azure SQL 数据库服务包含一个名为 Microsoft.Sql
的资源提供程序,其完整资源类型为 Microsoft.Sql/servers/databases
。
部署堆栈是 Microsoft.Resources
资源提供程序的一部分,其完整资源类型为 Microsoft.Resources/deploymentStacks
。 其 REST 操作包括创建新堆栈、列出堆栈、更新现有堆栈或删除堆栈。 对于其资源,你可以查看堆栈中的资源,添加和移除资源,并保护资源免受删除。
其中每个操作都有一些控制堆栈行为的关键属性。
拒绝设置选项
拒绝设置可防止更改堆栈中的资源。 它们是分配给部署堆栈及其受管理资源的特定权限类型。 这些拒绝设置取代了可能已设置的任何 Azure 基于角色的访问控制 (RBAC) 权限。
使用拒绝设置时,可以设置一个参数,该参数定义部署堆栈管理的资源上允许的操作。 此参数称为“拒绝设置模式”,用于确定堆栈中的资源在由堆栈管理时是否可以修改或删除。 拒绝设置模式的行为有三个可能的值:拒绝删除、拒绝写入和删除、无。
“拒绝删除”值允许修改堆栈管理的资源,但不允许删除。 “拒绝写入和删除”值可有效地使堆栈管理的资源成为只读。 “无”值允许修改和删除堆栈管理的资源。
拒绝设置还允许将设置应用于子范围和嵌套资源。 例如,如果在订阅范围内创建了具有拒绝设置的部署堆栈,则这些拒绝设置也适用于资源组范围。 此外,在 Bicep 文件、ARM JSON 模板或模板规格中定义的任何嵌套资源都将继承拒绝设置中定义的值。
可以替代特定基于角色的访问控制角色的拒绝设置。 假设你创建了一个部署堆栈,其拒绝设置模式设置为拒绝写入和删除。 该堆栈中的一个受管理资源是一个虚拟机。 你不希望对虚拟机的配置进行更改,但希望管理员能够打开和关闭虚拟机。 为了提供适当的访问权限,你使用“拒绝设置排除的操作”参数排除了“Microsoft.Compute/virtualMachines/start/action”和“Microsoft.Compute/virtualMachines/powerOff/action”操作。
可能存在的另一种方案是替代特定用户或服务主体的拒绝设置。 例如,如果使用基础结构即代码管道来创建部署堆栈,则执行管道的服务主体需要有权更改堆栈管理的资源。 “拒绝设置排除的主体”参数控制着此行为。
资源拆离和删除
不再由部署堆栈管理或跟踪的资源称为拆离的资源。 拆离的资源仍存在于 Azure 中,但堆栈不再跟踪它。 你能够控制 Azure 如何处理拆离的资源、资源组和管理组,方法是使用名为“action on unmanage”参数的属性。
使用此参数时,可以从三个可能的选项中进行选择,以确定如何处理拆离的资源:
- 删除资源 - 删除资源并拆离资源组和管理组。
- 删除全部 - 删除资源、资源组和管理组。
- 拆离全部 - 拆离资源、资源组和管理组。
在创建、修改或删除部署堆栈时,可以设置 action on unmanage 参数。 这三个操作都可以设置 action on unmanage 参数的行为。 假设你使用 Azure CLI 创建了部署堆栈,并设置了 action on unmanage 行为以拆离全部。 如果你删除了堆栈并将行为指定为“删除全部”,则该值优先。 将其视为对原始值的覆盖。