Uzamčení prostředků za účelem zajištění ochrany infrastruktury
Jako správce můžete uzamknout předplatné, skupinu prostředků nebo prostředek Azure, abyste je ochránili před náhodným odstraněním a úpravami uživatelů. Zámek přepíše všechna uživatelská oprávnění.
Můžete nastavit zámky, které brání odstranění nebo úpravám. Na portálu se tyto zámky nazývají Odstranit a Jen pro čtení. V příkazovém řádku se tyto zámky nazývají CanNotDelete a ReadOnly.
- CanNotDelete znamená, že autorizovaní uživatelé můžou prostředek číst a upravovat, ale nemůžou ho odstranit.
- ReadOnly znamená, že autorizovaní uživatelé můžou prostředek číst, ale nemůžou ho odstranit ani aktualizovat. Použití tohoto zámku je podobné omezení všech oprávněných uživatelů na oprávnění, která poskytuje role Čtenář .
Na rozdíl od řízení přístupu na základě role (RBAC) používáte zámky správy k uplatnění omezení pro všechny uživatele a role. Informace o nastavení oprávnění pro uživatele a role najdete v tématu Azure RBAC.
Zámek dědičnosti
Když použijete zámek u nadřazeného oboru, všechny prostředky v rámci tohoto oboru dědí stejný zámek. I prostředky, které přidáte později, dědí stejný nadřazený zámek. Nejvíce omezující zámek v dědičnosti má přednost.
Prostředky rozšíření dědí zámky z prostředku, na který jsou použité. Například Microsoft.Insights/diagnosticSettings je typ prostředku rozšíření. Pokud použijete nastavení diagnostiky u objektu blob úložiště a uzamknete účet úložiště, nemůžete nastavení diagnostiky odstranit. Tato dědičnost dává smysl, protože úplné ID prostředku nastavení diagnostiky je:
/subscriptions/{sub-id}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-name}/blobServices/default/providers/microsoft.insights/diagnosticSettings/{setting-name}"
To odpovídá rozsahu ID prostředku, který je uzamčený:
/subscriptions/{sub-id}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-name}
Pokud máte u prostředku zámek odstranění a pokusíte se odstranit jeho skupinu prostředků, funkce zablokuje celou operaci odstranění. I když jsou skupina prostředků nebo jiné prostředky ve skupině prostředků odemknuté, k odstranění nedojde. Nikdy nemáte částečné odstranění.
Při zrušení předplatného Azure:
- Zámek prostředku neblokuje zrušení předplatného.
- Azure vaše prostředky zachová tak, že je místo okamžitého odstranění deaktivuje.
- Azure trvale odstraní vaše prostředky jenom po uplynutí čekací doby.
Principy rozsahu zámků
Poznámka
Zámky se vztahují pouze na operace Azure v řídicí rovině, nikoli na operace roviny dat.
Operace řídicí roviny Azure přejděte na https://management.azure.com
. Operace roviny dat Azure přejdou do vaší instance služby, například https://myaccount.blob.core.windows.net/
. Viz Řídicí rovina Azure a rovina dat. Informace o tom, které operace používají adresu URL řídicí roviny, najdete v tématu Rozhraní Azure REST API.
Rozdíl znamená, že zámky chrání prostředek před změnami, ale neomezují způsob, jakým prostředek plní své funkce. Například zámek ReadOnly na logickém serveru SQL Database chrání před odstraněním nebo úpravami. Umožňuje vytvářet, aktualizovat nebo odstraňovat data v databázi serveru. Operace roviny dat umožňují transakce dat. Tyto požadavky nejdou na https://management.azure.com
adresu .
Důležité informace před použitím zámků
Použití zámků může vést k neočekávaným výsledkům. Některé operace, u kterých se zdá, že prostředek neupravují, vyžadují blokované akce. Zámky brání metodě POST v odesílání dat do rozhraní API Azure Resource Manager (ARM). Mezi běžné příklady blokovaných operací patří:
Zámek účtu úložiště jen pro čtení brání uživatelům v výpisu klíčů účtu. Požadavek POST zpracovává operaci Azure Storage List Keys pro ochranu přístupu ke klíčům účtu. Klíče účtu poskytují úplný přístup k datům v účtu úložiště. Pokud je pro účet úložiště nakonfigurovaný zámek jen pro čtení, uživatelé, kteří nemají klíče účtu, musí pro přístup k datům objektů blob nebo fronty používat Azure AD přihlašovací údaje. Zámek jen pro čtení také zabraňuje přiřazení rolí Azure RBAC, které jsou vymezeny na účet úložiště nebo ke kontejneru dat (kontejner objektů blob nebo fronta).
Zámek účtu úložiště jen pro čtení chrání přiřazení RBAC vymezená pro účet úložiště nebo kontejner dat (kontejner objektů blob nebo frontu).
Zámek účtu úložiště jen pro čtení brání vytvoření kontejneru objektů blob.
Zámek jen pro čtení nebo zámek, který nejde odstranit u účtu úložiště , nezabrání odstranění nebo úpravě jeho dat. Také nechrání data v objektu blob, frontě, tabulce nebo souboru.
Rozhraní API účtu úložiště zveřejňuje operace roviny dat a řídicí roviny . Pokud požadavek používá operace roviny dat , zámek v účtu úložiště nechrání data objektů blob, fronty, tabulky nebo souborů v rámci daného účtu úložiště. Pokud ale požadavek používá operace řídicí roviny , zámek tyto prostředky chrání.
Pokud například požadavek používá sdílené složky – Odstranění, což je operace řídicí roviny, odstranění se nezdaří. Pokud požadavek používá odstranit sdílenou složku, což je operace roviny dat, odstranění proběhne úspěšně. Doporučujeme použít operaci řídicí roviny.
Zámek jen pro čtení nebo zámek nelze odstranit ve skupině zabezpečení sítě (NSG) brání vytvoření protokolu toku provozu pro skupinu zabezpečení sítě.
Zámek jen pro čtení u prostředku App Service zabraňuje Průzkumníku serveru Sady Visual Studio v zobrazení souborů pro prostředek, protože tato interakce vyžaduje přístup k zápisu.
Zámek jen pro čtení u skupiny prostředků, která obsahuje plán App Service, vám brání v vertikálním navýšení nebo snížení kapacity plánu.
Zámek jen pro čtení u skupiny prostředků , která obsahuje virtuální počítač , brání všem uživatelům ve spuštění nebo restartování virtuálního počítače. Tyto operace vyžadují požadavek metody POST.
Zámek jen pro čtení u skupiny prostředků , která obsahuje účet Automation , brání spuštění všech runbooků. Tyto operace vyžadují požadavek metody POST.
Zámek skupiny prostředků, který nejde odstranit, brání azure Resource Manager v automatickém odstraňování nasazení v historii. Pokud v historii dosáhnete 800 nasazení, vaše nasazení se nezdaří.
Zámek skupiny prostředků vytvořené službou Azure Backup service nemůže odstranit, což způsobí selhání zálohování. Služba podporuje maximálně 18 bodů obnovení. Po uzamčení nemůže služba zálohování vyčistit body obnovení. Další informace najdete v tématu Nejčastější dotazy k zálohování virtuálních počítačů Azure.
Zámek skupiny prostředků , která obsahuje pracovní prostory služby Azure Machine Learning , zabraňuje správnému fungování automatického škálování výpočetních clusterů Služby Azure Machine Learning . Díky zámku nemůže automatické škálování odebrat nepoužívané uzly. Vaše řešení spotřebovává více prostředků, než je pro úlohu potřeba.
Zámek jen pro čtení v pracovním prostoru služby Log Analytics zabraňuje povolení analýzy chování uživatelů a entit (UEBA).
Zámek, který nejde odstranit v pracovním prostoru služby Log Analytics , nezabrání operacím vyprázdnění dat. Místo toho uživateli odeberete roli vymazání dat .
Zámek jen pro čtení u předplatného brání službě Azure Advisor ve správném fungování. Advisor nemůže ukládat výsledky svých dotazů.
Zámek jen pro čtení na Application Gateway brání v získání stavu back-endu služby Application Gateway. Tato operace používá metodu POST, kterou blokuje zámek jen pro čtení.
Zámek jen pro čtení v clusteru Azure Kubernetes Service (AKS) omezuje přístup k prostředkům clusteru prostřednictvím portálu. Zámek jen pro čtení vám brání v použití oddílu prostředků Kubernetes clusteru AKS v Azure Portal zvolit prostředek clusteru. Tyto operace vyžadují pro ověřování požadavek metody POST.
Zámek virtuálního počítače, který je chráněný Site Recovery brání správnému odebrání určitých propojení prostředků souvisejících s Site Recovery, když odeberete ochranu nebo zakážete replikaci. Pokud budete chtít virtuální počítač chránit znovu později, musíte zámek před zakázáním ochrany odebrat. Pokud zámek neodeberete, musíte před ochranou virtuálního počítače vyčistit zastaralá propojení podle určitých kroků. Další informace najdete v tématu Řešení potíží s replikací virtuálních počítačů Azure.
Kdo může vytvářet nebo odstraňovat zámky
K vytváření nebo odstraňování zámků pro správu potřebujete přístup k akcím Microsoft.Authorization/*
nebo Microsoft.Authorization/locks/*
k jejich akcím. Zámky pro správu můžou vytvářet a odstraňovat pouze předdefinované role vlastníka a správce uživatelských přístupů. Můžete vytvořit vlastní roli s požadovanými oprávněními.
Spravované aplikace a zámky
Některé služby Azure, například Azure Databricks, používají k implementaci služby spravované aplikace . V takovém případě služba vytvoří dvě skupiny prostředků. Jedna je odemčená skupina prostředků, která obsahuje přehled služby. Druhá je uzamčená skupina prostředků, která obsahuje infrastrukturu služby.
Pokud se pokusíte odstranit skupinu prostředků infrastruktury, zobrazí se chyba oznamující, že je skupina prostředků uzamčená. Pokud se pokusíte odstranit zámek pro skupinu prostředků infrastruktury, zobrazí se chyba s oznámením, že zámek nejde odstranit, protože ho vlastní systémová aplikace.
Místo toho odstraňte službu, čímž odstraníte také skupinu prostředků infrastruktury.
U spravovaných aplikací zvolte službu, kterou jste nasadili.
Všimněte si, že služba obsahuje odkaz na spravovanou skupinu prostředků. Tato skupina prostředků obsahuje infrastrukturu a je uzamčená. Odstranit ho můžete jenom nepřímo.
Pokud chcete odstranit všechno pro službu, včetně uzamčené skupiny prostředků infrastruktury, zvolte pro službu Odstranit .
Konfigurace zámků
Portál
V levém navigačním panelu je název funkce zámku předplatného Zámky prostředků, zatímco název funkce zámku skupiny prostředků je Zámky.
V okně Nastavení pro prostředek, skupinu prostředků nebo předplatné, které chcete zamknout, vyberte Zámky.
Zámek přidáte výběrem tlačítka Přidat. Pokud chcete vytvořit zámek na nadřazené úrovni, vyberte nadřazený objekt. Aktuálně vybraný prostředek dědí zámek z nadřazeného objektu. Skupinu prostředků můžete například uzamknout, aby se použil zámek na všechny její prostředky.
Pojmenujte zámek a zadejte jeho úroveň. Volitelně můžete přidat poznámky s jeho popisem.
Pokud chcete zámek odstranit, vyberte tlačítko Odstranit .
Template (Šablona)
Při použití šablony ARM nebo souboru Bicep k nasazení zámku je dobré pochopit, jak obor nasazení a obor zámku spolupracují. Pokud chcete použít zámek v oboru nasazení, například uzamčení skupiny prostředků nebo předplatného, ponechte vlastnost scope nenasazení. Při zamykání prostředku v rámci oboru nasazení nastavte vlastnost scope na zámek.
Následující šablona použije zámek na skupinu prostředků, do které je nasazená. Všimněte si, že u prostředku zámku není vlastnost oboru, protože obor zámku odpovídá oboru nasazení. Nasaďte tuto šablonu na úrovni skupiny prostředků.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
},
"resources": [
{
"type": "Microsoft.Authorization/locks",
"apiVersion": "2016-09-01",
"name": "rgLock",
"properties": {
"level": "CanNotDelete",
"notes": "Resource group should not be deleted."
}
}
]
}
Pokud chcete vytvořit skupinu prostředků a uzamknout ji, nasaďte následující šablonu na úrovni předplatného.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"rgName": {
"type": "string"
},
"rgLocation": {
"type": "string"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"apiVersion": "2021-04-01",
"name": "[parameters('rgName')]",
"location": "[parameters('rgLocation')]",
"properties": {}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "lockDeployment",
"resourceGroup": "[parameters('rgName')]",
"dependsOn": [
"[resourceId('Microsoft.Resources/resourceGroups/', parameters('rgName'))]"
],
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
"type": "Microsoft.Authorization/locks",
"apiVersion": "2016-09-01",
"name": "rgLock",
"properties": {
"level": "CanNotDelete",
"notes": "Resource group and its resources should not be deleted."
}
}
],
"outputs": {}
}
}
}
],
"outputs": {}
}
Při použití zámku na prostředek v rámci skupiny prostředků přidejte vlastnost scope. Nastavte obor na název prostředku, který chcete uzamknout.
Následující příklad ukazuje šablonu, která vytvoří plán služby App Service, web a zámek na webu. Rozsah zámku je nastavený na web.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"hostingPlanName": {
"type": "string"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"siteName": "[concat('ExampleSite', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2020-12-01",
"name": "[parameters('hostingPlanName')]",
"location": "[parameters('location')]",
"sku": {
"tier": "Free",
"name": "f1",
"capacity": 0
},
"properties": {
"targetWorkerCount": 1
}
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2020-12-01",
"name": "[variables('siteName')]",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]"
],
"properties": {
"serverFarmId": "[parameters('hostingPlanName')]"
}
},
{
"type": "Microsoft.Authorization/locks",
"apiVersion": "2016-09-01",
"name": "siteLock",
"scope": "[concat('Microsoft.Web/sites/', variables('siteName'))]",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('siteName'))]"
],
"properties": {
"level": "CanNotDelete",
"notes": "Site should not be deleted."
}
}
]
}
Azure PowerShell
Nasazené prostředky pomocí Azure PowerShell uzamknete pomocí příkazu New-AzResourceLock.
Pokud chcete prostředek uzamknout, zadejte jeho název, typ prostředku a název jeho skupiny prostředků.
New-AzResourceLock -LockLevel CanNotDelete -LockName LockSite -ResourceName examplesite -ResourceType Microsoft.Web/sites -ResourceGroupName exampleresourcegroup
Pokud chcete skupinu prostředků uzamknout, zadejte název skupiny prostředků.
New-AzResourceLock -LockName LockGroup -LockLevel CanNotDelete -ResourceGroupName exampleresourcegroup
Pokud chcete získat informace o zámku, použijte rutinu Get-AzResourceLock. Pokud chcete získat všechny zámky ve vašem předplatném, použijte:
Get-AzResourceLock
Pokud chcete získat všechny zámky pro prostředek, použijte:
Get-AzResourceLock -ResourceName examplesite -ResourceType Microsoft.Web/sites -ResourceGroupName exampleresourcegroup
Pokud chcete získat všechny zámky pro skupinu prostředků, použijte:
Get-AzResourceLock -ResourceGroupName exampleresourcegroup
Pokud chcete odstranit zámek prostředku, použijte:
$lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup -ResourceName examplesite -ResourceType Microsoft.Web/sites).LockId
Remove-AzResourceLock -LockId $lockId
Pokud chcete odstranit zámek skupiny prostředků, použijte:
$lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup).LockId
Remove-AzResourceLock -LockId $lockId
Azure CLI
Nasazené prostředky můžete uzamknout pomocí Azure CLI pomocí příkazu az lock create .
Pokud chcete prostředek uzamknout, zadejte jeho název, typ prostředku a název jeho skupiny prostředků.
az lock create --name LockSite --lock-type CanNotDelete --resource-group exampleresourcegroup --resource-name examplesite --resource-type Microsoft.Web/sites
Pokud chcete skupinu prostředků uzamknout, zadejte název skupiny prostředků.
az lock create --name LockGroup --lock-type CanNotDelete --resource-group exampleresourcegroup
Pokud chcete získat informace o zámku, použijte příkaz az lock list. Pokud chcete získat všechny zámky ve vašem předplatném, použijte:
az lock list
Pokud chcete získat všechny zámky pro prostředek, použijte:
az lock list --resource-group exampleresourcegroup --resource-name examplesite --namespace Microsoft.Web --resource-type sites --parent ""
Pokud chcete získat všechny zámky pro skupinu prostředků, použijte:
az lock list --resource-group exampleresourcegroup
Pokud chcete odstranit zámek prostředku, použijte:
lockid=$(az lock show --name LockSite --resource-group exampleresourcegroup --resource-type Microsoft.Web/sites --resource-name examplesite --output tsv --query id)
az lock delete --ids $lockid
Pokud chcete odstranit zámek skupiny prostředků, použijte:
lockid=$(az lock show --name LockSite --resource-group exampleresourcegroup --output tsv --query id)
az lock delete --ids $lockid
REST API
Nasazené prostředky můžete uzamknout pomocí rozhraní REST API pro zámky správy. Rozhraní REST API umožňuje vytvářet a odstraňovat zámky a načítat informace o existujících zámcích.
Zámek vytvoříte spuštěním příkazu:
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/locks/{lock-name}?api-version={api-version}
Oborem může být předplatné, skupina prostředků nebo prostředek. Název zámku může být libovolný. Jako verzi rozhraní API použijte 1. 9. 2016.
Do požadavku zahrňte objekt JSON, který určuje vlastnosti zámku.
{
"properties": {
"level": "CanNotDelete",
"notes": "Optional text notes."
}
}
Další kroky
- Další informace o logickém uspořádání prostředků najdete v tématu Použití značek k uspořádání prostředků.
- Pomocí přizpůsobených zásad můžete v rámci předplatného použít omezení a konvence. Další informace najdete v tématu Co je Azure Policy?.
- Pokyny k tomu, jak můžou podniky používat Resource Manager k efektivní správě předplatných, najdete v části Základní kostra Azure Enterprise – zásady správného řízení pro předplatná.