Sdílet prostřednictvím


Zásobníky nasazení

Zásobník nasazení Azure je prostředek, který umožňuje spravovat skupinu prostředků Azure jako jednu jednotce, která je soudržná. Když do zásobníku nasazení odešlete soubor Bicep nebo šablonu JSON ARM, definuje prostředky, které tento zásobník spravuje. Pokud se prostředek dříve zahrnutý v šabloně odebere, odpojí se nebo odstraní na základě zadaného chování actionOnUnmanage zásobníku nasazení. Přístup ke zásobníku nasazení je možné omezit pomocí řízení přístupu na základě role v Azure (Azure RBAC), podobně jako u jiných prostředků Azure.

K vytvoření a aktualizaci zásobníku nasazení můžete společně se soubory Bicep využít Azure CLI, Azure PowerShell nebo Azure Portal. Tyto soubory Bicep se přeloží do šablon JSON ARM, které se pak nasadí jako objekt nasazení v zásobníku. Zásobník nasazení nabízí další možnosti nad rámec známých prostředků nasazení, které slouží jako nadmnožina těchto funkcí.

Microsoft.Resources/deploymentStacks je typ prostředku pro zásobníky nasazení. Skládá se z hlavní šablony, která může provádět 1:N aktualizací napříč rozsahy prostředků, které popisuje, a blokovat všechny nežádoucí změny těchto prostředků.

Při plánování nasazení a určení skupin prostředků, které by měly být součástí stejného zásobníku, je důležité zvážit životní cyklus správy těchto prostředků, včetně vytváření, aktualizace a odstranění. Předpokládejme například, že potřebujete zřídit testovací virtuální počítače pro různé aplikační týmy v různých oborech skupin prostředků. V tomto případě lze zásobník nasazení využít k vytvoření těchto testovacích prostředí a aktualizaci konfigurací testovacích virtuálních počítačů prostřednictvím následných aktualizací zásobníku nasazení. Po dokončení projektu může být nutné odebrat nebo odstranit všechny vytvořené prostředky, jako jsou testovací virtuální počítače. Pomocí zásobníku nasazení je možné spravované prostředky snadno odebrat zadáním příslušného příznaku odstranění. Tento zjednodušený přístup šetří čas během čištění prostředí, protože zahrnuje jednu aktualizaci prostředku zásobníku místo individuální úpravy nebo odebrání každého testovacího virtuálního počítače v různých oborech skupin prostředků.

Zásobníky nasazení vyžadují Azure PowerShell verze 12.0.0 nebo novější nebo Azure CLI verze 2.61.0 nebo novější.

Pokud chcete vytvořit první zásobník nasazení, projděte si rychlý start: vytvoření zásobníku nasazení.

Proč používat zásobníky nasazení?

Zásobníky nasazení poskytují následující výhody:

  • Zjednodušené zřizování a správa prostředků v různých oborech jako jednotná entita
  • Prevence nežádoucích úprav spravovaných prostředků prostřednictvím nastavení zamítnutí
  • Efektivní vyčištění prostředí pomocí příznaků odstranění během aktualizací zásobníku nasazení
  • Použití standardních šablon, jako jsou bicep, šablony ARM nebo specifikace šablon pro vaše zásobníky nasazení.

Známá omezení

  • Implicitně vytvořené prostředky nejsou spravovány zásobníkem nasazení. Proto není možné přiřazení zamítnutí ani vyčištění.
  • Zamítnutí přiřazení nepodporují značky.
  • Přiřazení zamítnutí nejsou podporována v oboru skupiny pro správu. Pokud je však nasazení nasměrováno na obor předplatného, podporují se v zásobníku skupin pro správu.
  • Zásobníky nasazení nemůžou odstranit tajné kódy trezoru klíčů. Pokud odebíráte tajné kódy trezoru klíčů ze šablony, nezapomeňte také spustit příkaz update/delete zásobníku nasazení s režimem odpojení.

Známé problémy

  • Odstranění skupin prostředků aktuálně obchází přiřazení zamítnutí. Při vytváření zásobníku nasazení v oboru skupiny prostředků soubor Bicep neobsahuje definici skupiny prostředků. I přes nastavení odepření přiřazení je možné odstranit skupinu prostředků a její obsažený zásobník. Pokud je však zámek aktivní u libovolného prostředku v rámci skupiny, operace odstranění selže.
  • Podpora citlivostní podpory ještě není k dispozici.
  • Zásobník s vymezeným oborem skupiny pro správu je omezen na nasazení do jiné skupiny pro správu. Může se nasadit pouze do skupiny pro správu samotného zásobníku nebo do podřízeného předplatného.
  • V nápovědě k příkazu PowerShellu ActionOnUnmanage je uvedena DeleteResourcesAndResourcesGroups hodnota přepínače. Při použití této hodnoty příkaz odpojte spravované prostředky a skupiny prostředků. Tato hodnota se odebere v další aktualizaci. Tuto hodnotu nepoužívejte.
  • V některých případech můžou rutiny New and Set Azure PowerShellu vracet obecnou chybu ověření šablony, která není jasně použitelná. Tato chyba bude opravena v příští verzi, ale pokud je tato chyba nejasná, můžete spustit rutinu v režimu ladění a zobrazit podrobnější chybu v nezpracované odpovědi.
  • Poskytovatel Microsoft Graphu nepodporuje zásobníky nasazení.

Předdefinované role

Upozorňující

Vynucování oprávnění RBAC Microsoft.Resources/deploymentStacks/manageDenySetting/action se zavádí napříč oblastmi, včetně cloudů pro státní správu.

Pro zásobník nasazení existují dvě předdefinované role:

  • Přispěvatel služby Azure Deployment Stack: Umožňuje uživatelům spravovat zásobníky nasazení, ale nemůžou vytvářet ani odstraňovat přiřazení zamítnutí v rámci zásobníků nasazení.
  • Vlastník služby Azure Deployment Stack: Umožňuje uživatelům spravovat zásobníky nasazení, včetně těch s přiřazením zamítnutí.

Vytváření zásobníků nasazení

Prostředek zásobníku nasazení je možné vytvořit v oboru skupiny prostředků, předplatného nebo skupiny pro správu. Šablona předaná do zásobníku nasazení definuje prostředky, které se mají vytvořit nebo aktualizovat v cílovém oboru určeném pro nasazení šablony.

  • Zásobník v oboru skupiny prostředků může nasadit předanou šablonu do stejného oboru skupiny prostředků, ve kterém existuje zásobník nasazení.
  • Zásobník v oboru předplatného může nasadit předanou šablonu do oboru skupiny prostředků (pokud je zadáno) nebo stejného oboru předplatného, ve kterém existuje zásobník nasazení.
  • Zásobník v oboru skupiny pro správu může nasadit předanou šablonu do zadaného oboru předplatného.

Je důležité si uvědomit, že pokud existuje zásobník nasazení, takže je vytvořené přiřazení zamítnutí s možností nastavení zamítnutí. Například vytvořením zásobníku nasazení v oboru předplatného, který nasadí šablonu do oboru skupiny prostředků a s režimem DenyDeleteodepřít nastavení , můžete snadno zřídit spravované prostředky pro zadanou skupinu prostředků a blokovat pokusy o odstranění těchto prostředků. Pomocí tohoto přístupu také zvýšíte zabezpečení zásobníku nasazení tím, že ho oddělíte na úrovni předplatného, a ne na úrovni skupiny prostředků. Toto oddělení zajišťuje, že vývojářské týmy, které pracují se zřízenými prostředky, budou mít k skupinám prostředků přístup pouze k viditelnosti a zápisu, zatímco zásobník nasazení zůstane izolovaný na vyšší úrovni. Tím se minimalizuje počet uživatelů, kteří můžou upravit zásobník nasazení a provádět změny přiřazení zamítnutí. Další informace najdete v tématu Ochrana spravovaného prostředku před odstraněním.

Příkazy pro vytváření zásobníku je také možné použít k aktualizaci zásobníků nasazení.

Vytvoření zásobníku nasazení v oboru skupiny prostředků:

New-AzResourceGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -ResourceGroupName "<resource-group-name>" `
  -TemplateFile "<bicep-file-name>" `
  -ActionOnUnmanage "detachAll" `
  -DenySettingsMode "none"

Vytvoření zásobníku nasazení v oboru předplatného:

New-AzSubscriptionDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -DeploymentResourceGroupName "<resource-group-name>" `
  -ActionOnUnmanage "detachAll" `
  -DenySettingsMode "none"

Parametr DeploymentResourceGroupName určuje skupinu prostředků použitou k ukládání spravovaných prostředků. Pokud parametr není zadaný, spravované prostředky se ukládají v oboru předplatného.

Vytvoření zásobníku nasazení v oboru skupiny pro správu:

New-AzManagementGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -DeploymentSubscriptionId "<subscription-id>" `
  -ActionOnUnmanage "detachAll" `
  -DenySettingsMode "none"

Parametr deploymentSubscriptionId určuje předplatné použité k ukládání spravovaných prostředků. Pokud parametr není zadaný, spravované prostředky se ukládají do oboru skupiny pro správu.

Výpis zásobníků nasazení

Seznam prostředků zásobníku nasazení v oboru skupiny prostředků:

Get-AzResourceGroupDeploymentStack `
  -ResourceGroupName "<resource-group-name>"

Zobrazení seznamu prostředků zásobníku nasazení v oboru předplatného:

Get-AzSubscriptionDeploymentStack

Seznam prostředků zásobníku nasazení v oboru skupiny pro správu:

Get-AzManagementGroupDeploymentStack `
  -ManagementGroupId "<management-group-id>"

Aktualizace zásobníků nasazení

Pokud chcete aktualizovat zásobník nasazení, který může zahrnovat přidání nebo odstranění spravovaného prostředku, musíte provést změny v podkladových souborech Bicep. Po provedení změn máte dvě možnosti aktualizace zásobníku nasazení: spusťte příkaz update nebo spusťte příkaz create znovu.

Seznam spravovaných prostředků lze plně ovládat prostřednictvím vzoru návrhu infrastruktury jako kódu (IaC).

Použití příkazu Set

Aktualizace zásobníku nasazení v oboru skupiny prostředků:

Set-AzResourceGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -ResourceGroupName "<resource-group-name>" `
  -TemplateFile "<bicep-file-name>" `
  -ActionOnUnmanage "detachAll" `
  -DenySettingsMode "none"

Aktualizace zásobníku nasazení v oboru předplatného:

Set-AzSubscriptionDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -DeploymentResourceGroupName "<resource-group-name>" `
  -ActionOnUnmanage "detachAll" `
  -DenySettingsMode "none"

Parametr DeploymentResourceGroupName určuje skupinu prostředků použitou k uložení prostředků zásobníku nasazení. Pokud nezadáte název skupiny prostředků, služba zásobníku nasazení za vás vytvoří novou skupinu prostředků.

Aktualizace zásobníku nasazení v oboru skupiny pro správu:

Set-AzManagementGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -DeploymentSubscriptionId "<subscription-id>" `
  -ActionOnUnmanage "detachAll" `
  -DenySettingsMode "none"

Použití příkazu Nový

Zobrazí se upozornění podobné následujícímu:

The deployment stack 'myStack' you're trying to create already exists in the current subscription/management group/resource group. Do you want to overwrite it? Detaching: resources, resourceGroups (Y/N)

Další informace najdete v tématu Vytváření zásobníků nasazení.

Řízení odpojení a odstranění

Odpojený prostředek (nebo nespravovaný prostředek) odkazuje na prostředek, který není sledován nebo spravován zásobníkem nasazení, ale stále existuje v Rámci Azure.

Pokud chcete Azure instruovat, aby odstranila nespravované prostředky, aktualizujte zásobník příkazem create stack následujícím přepínačem. Další informace najdete v tématu Vytvoření zásobníku nasazení.

ActionOnUnmanage Pomocí přepínače můžete definovat, co se stane s prostředky, které se už nespravují po aktualizaci nebo odstranění zásobníku. Povolené hodnoty jsou následující:

  • deleteAll: Používejte odstranění místo odpojení spravovaných prostředků a skupin prostředků.
  • deleteResources: Používejte odstranění místo odpojení jenom pro spravované prostředky.
  • detachAll: Odpojte spravované prostředky a skupiny prostředků.

Příklad:

New-AzSubscriptionDeploymentStack `
  -Name "<deployment-stack-name" `
  -TemplateFile "<bicep-file-name>" `
  -DenySettingsMode "none" `
  -ActionOnUnmanage "deleteAll" 

Upozorňující

Při odstraňování skupin prostředků s přepínačem nespravovaných akcí nastaveným na DeleteAllspravované skupiny prostředků a všechny prostředky obsažené v nich budou také odstraněny.

Zpracování chyby zásobníku mimo synchronizaci

Při aktualizaci nebo odstranění zásobníku nasazení se může zobrazit následující chyba při synchronizaci, která značí, že seznam prostředků zásobníku není správně synchronizovaný.

The deployment stack '{0}' may not have an accurate list of managed resources. To ensure no resources are accidentally deleted, please check that the managed resource list does not have any additional values. If there is any uncertainty, we recommend redeploying the stack with the same template and parameters as the current iteration. To bypass this warning, please specify the 'BypassStackOutOfSyncError' flag.

Seznam prostředků můžete získat z webu Azure Portal nebo znovu nasadit aktuálně nasazený soubor Bicep se stejnými parametry. Výstup zobrazuje spravované prostředky.

...
Resources: /subscriptions/9e8db52a-71bc-4871-9007-1117bf304622/resourceGroups/demoRg/providers/Microsoft.Network/virtualNetworks/vnetthmimleef5fwk
           /subscriptions/9e8db52a-71bc-4871-9007-1117bf304622/resourceGroups/demoRg/providers/Microsoft.Storage/storageAccounts/storethmimleef5fwk

Po kontrole a ověření seznamu prostředků v zásobníku můžete příkaz znovu spustit pomocí BypassStackOutOfSyncError přepínače v Azure PowerShellu (nebo bypass-stack-out-of-sync-error v Azure CLI). Tento přepínač by se měl použít až po důkladné kontrole seznamu prostředků v zásobníku před opětovným spuštěním příkazu. Tento přepínač by neměl být ve výchozím nastavení nikdy používán.

Odstranění zásobníků nasazení

Přepínač ActionOnUnmanage definuje akci na prostředky, které už nejsou spravovány. Přepínač má následující hodnoty:

  • DeleteAll: Odstraňte prostředky i skupiny prostředků.
  • DeleteResources: Odstraňte pouze prostředky.
  • DetachAll: Odpojte prostředky.

I když zadáte přepínač delete-all, nespravované prostředky ve skupině prostředků, ve které se nachází zásobník nasazení, zabrání odstranění nespravovaných prostředků i samotné skupiny prostředků.

Odstranění prostředků zásobníku nasazení v oboru skupiny prostředků:

Remove-AzResourceGroupDeploymentStack `
  -name "<deployment-stack-name>" `
  -ResourceGroupName "<resource-group-name>" `
  -ActionOnUnmanage "<deleteAll/deleteResources/detachAll>"

Odstranění prostředků zásobníku nasazení v oboru předplatného:

Remove-AzSubscriptionDeploymentStack `
  -Name "<deployment-stack-name>" `
  -ActionOnUnmanage "<deleteAll/deleteResources/detachAll>"

Odstranění prostředků zásobníku nasazení v oboru skupiny pro správu:

Remove-AzManagementGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -ManagementGroupId "<management-group-id>" `
  -ActionOnUnmanage "<deleteAll/deleteResources/detachAll>"

Zobrazení spravovaných prostředků v zásobníku nasazení

Služba zásobníku nasazení zatím nemá grafické uživatelské rozhraní (GUI) na webu Azure Portal. Pokud chcete zobrazit spravované prostředky v zásobníku nasazení, použijte následující příkazy Azure PowerShellu nebo Azure CLI:

Zobrazení spravovaných prostředků v oboru skupiny prostředků:

(Get-AzResourceGroupDeploymentStack -Name "<deployment-stack-name>" -ResourceGroupName "<resource-group-name>").Resources

Zobrazení spravovaných prostředků v oboru předplatného:

(Get-AzSubscriptionDeploymentStack -Name "<deployment-stack-name>").Resources

Zobrazení spravovaných prostředků v oboru skupiny pro správu:

(Get-AzManagementGroupDeploymentStack -Name "<deployment-stack-name>" -ManagementGroupId "<management-group-id>").Resources

Přidání prostředků do zásobníku nasazení

Pokud chcete přidat spravovaný prostředek, přidejte definici prostředku do podkladových souborů Bicep a pak spusťte příkaz update nebo spusťte příkaz create znovu. Další informace najdete v tématu Aktualizace zásobníků nasazení.

Odstranění spravovaných prostředků ze zásobníku nasazení

Pokud chcete odstranit spravovaný prostředek, odeberte definici prostředku ze základních souborů Bicep a pak spusťte příkaz update nebo spusťte příkaz create znovu. Další informace najdete v tématu Aktualizace zásobníků nasazení.

Ochrana spravovaných prostředků

Ke spravovaným prostředkům zásobníku nasazení můžete přiřadit konkrétní oprávnění, abyste zabránili neoprávněnému objektu zabezpečení v jejich odstranění nebo aktualizaci. Tato oprávnění se označují jako nastavení zamítnutí. Chcete ukládat zásobníky v nadřazené oblasti. Pokud chcete například chránit prostředky v předplatném, musíte umístit zásobník do nadřazeného oboru, což je okamžitá nadřazená skupina pro správu.

Nastavení zamítnutí se vztahuje pouze na operace řídicí roviny, ne na operace roviny dat. Účty úložiště a trezory klíčů se například vytvářejí prostřednictvím řídicí roviny, což umožňuje jejich správu pomocí zásobníku nasazení. Podřízené prostředky, jako jsou tajné kódy nebo kontejnery objektů blob vytvořené prostřednictvím roviny dat, však není možné spravovat pomocí zásobníku nasazení.

Nastavení zamítnutí se vztahuje pouze na explicitně vytvořené prostředky, nikoli implicitně vytvořené prostředky. Spravovaný cluster AKS například vytvoří několik dalších služeb, které ho podporují, například virtuální počítač. V tomto případě, protože virtuální počítač není definován v souboru Bicep a je implicitně vytvořený prostředek, není předmětem nastavení odepření zásobníku nasazení.

Poznámka:

Nejnovější verze vyžaduje konkrétní oprávnění v oboru zásobníku, aby:

  • Vytvořte nebo aktualizujte zásobník nasazení a nakonfigurujte nastavení zamítnutí na jinou hodnotu než None.
  • Aktualizujte nebo odstraňte zásobník nasazení s existujícím nastavením zamítnutí jiné hodnoty než None.

K udělení oprávnění použijte předdefinované role sady nasazení.

Azure PowerShell obsahuje tyto parametry pro přizpůsobení přiřazení zamítnutí:

  • DenySettingsMode: Definuje operace, které jsou zakázány na spravovaných prostředcích, aby se chránily před neoprávněnými objekty zabezpečení, které se pokouší odstranit nebo aktualizovat. Toto omezení platí pro všechny uživatele, pokud explicitně nepodělíte přístup. Mezi hodnoty patří: None, DenyDeletea DenyWriteAndDelete.
  • DenySettingsApplyToChildScopes: Při zadání se konfigurace režimu odepření vztahuje také na podřízený obor spravovaných prostředků. Například soubor Bicep definuje prostředek Microsoft.Sql/servers (nadřazený) a prostředek Microsoft.Sql/servers/databases (podřízený). Pokud je sada nasazení vytvořená pomocí souboru Bicep s povoleným DenySettingsApplyToChildScopes nastavením a nastavenou DenyWriteAndDeletena DenySettingsMode , nemůžete do prostředku Microsoft.Sql/servers nebo prostředku Microsoft.Sql/servers/databases přidat žádné další podřízené prostředky.
  • DenySettingsExcludedAction: Seznam operací správy založených na rolích, které jsou vyloučené z nastavení zamítnutí. Je povoleno až 200 akcí.
  • DenySettingsExcludedPrincipal: Seznam ID objektu zabezpečení Microsoft Entra vyloučených z zámku. Je povoleno až pět objektů zabezpečení.

Použití nastavení zamítnutí v oboru skupiny prostředků:

New-AzResourceGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -ResourceGroupName "<resource-group-name>" `
  -TemplateFile "<bicep-file-name>" `
  -ActionOnUnmanage "detachAll" `
  -DenySettingsMode "denyDelete" `
  -DenySettingsExcludedAction "Microsoft.Compute/virtualMachines/write Microsoft.StorageAccounts/delete" `
  -DenySettingsExcludedPrincipal "<object-id>,<object-id>"

Použití nastavení zamítnutí v oboru předplatného:

New-AzSubscriptionDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -ActionOnUnmanage "detachAll" `
  -DenySettingsMode "denyDelete" `
  -DenySettingsExcludedAction "Microsoft.Compute/virtualMachines/write Microsoft.StorageAccounts/delete" `
  -DenySettingsExcludedPrincipal "<object-id>,<object-id>"

Pomocí parametru DeploymentResourceGroupName zadejte název skupiny prostředků, ve které se vytvoří zásobník nasazení. Pokud není zadaný obor, použije obor zásobníku nasazení.

Použití nastavení zamítnutí v oboru skupiny pro správu:

New-AzManagementGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -Location "<location>" `
  -TemplateFile "<bicep-file-name>" `
  -ActionOnUnmanage "detachAll" `
  -DenySettingsMode "denyDelete" `
  -DenySettingsExcludedActions "Microsoft.Compute/virtualMachines/write Microsoft.StorageAccounts/delete" `
  -DenySettingsExcludedPrincipal "<object-id>,<object-id>"

Pomocí parametru DeploymentSubscriptionId zadejte ID předplatného, ve kterém se vytvoří zásobník nasazení. Pokud není zadaný obor, použije obor zásobníku nasazení.

Odpojení spravovaných prostředků ze zásobníku nasazení

Ve výchozím nastavení se zásobníky nasazení odpojí a neodstraňují nespravované prostředky, pokud už nejsou obsažené v oboru správy zásobníku. Další informace najdete v tématu Aktualizace zásobníků nasazení.

Export šablon ze zásobníků nasazení

Prostředky můžete exportovat ze zásobníku nasazení do výstupu JSON. Výstup můžete převést do souboru.

Export zásobníku nasazení v oboru skupiny prostředků:

Save-AzResourceGroupDeploymentStack `
   -Name "<deployment-stack-name>" `
   -ResourceGroupName "<resource-group-name>" `

Export zásobníku nasazení v oboru předplatného:

Save-AzSubscriptionDeploymentStack `
  -name "<deployment-stack-name>"

Export zásobníku nasazení v oboru skupiny pro správu:

Save-AzManagementGroupDeploymentStack `
  -Name "<deployment-stack-name>" `
  -ManagementGroupId "<management-group-id>"

Další kroky

Pokud chcete projít rychlý start, podívejte se na rychlý start: Vytvoření zásobníku nasazení.