Låsa resurser för att förhindra oväntade ändringar
Som administratör kan du låsa en prenumeration, resursgrupp eller resurs så att inga andra användare i organisationen tar bort eller ändrar viktiga resurser av misstag. Låset åsidosätter alla behörigheter som användaren kan ha.
Du kan ange låsnivån till CanNotDelete eller ReadOnly. I portalen heter låsen Ta bort respektive Skrivskyddad.
- CanNotDelete innebär att behöriga användare fortfarande kan läsa och ändra en resurs, men de kan inte ta bort resursen.
- ReadOnly innebär att behöriga användare kan läsa en resurs, men de kan inte ta bort eller uppdatera resursen. Att tillämpa det här låset liknar att begränsa alla behöriga användare till de behörigheter som beviljas av rollen Läsare.
Till skillnad från rollbaserad åtkomstkontroll använder du hanteringslås för att tillämpa en begränsning för alla användare och roller. Mer information om hur du anger behörigheter för användare och roller finns i Rollbaserad åtkomstkontroll i Azure (Azure RBAC).
Lås arv
När du tillämpar ett lås i ett överordnat omfång ärver alla resurser inom det omfånget samma lås. Även resurser som du lägger till senare ärver låset från den överordnade. Det mest restriktiva låset i arvet har företräde.
Förstå omfång för lås
Anteckning
Det är viktigt att förstå att lås inte gäller för alla typer av åtgärder. Azure-åtgärder kan delas in i två kategorier – kontrollplan och dataplan. Lås gäller endast för kontrollplansåtgärder.
Kontrollplansåtgärder är åtgärder som skickas till https://management.azure.com . Dataplansåtgärder är åtgärder som skickas till din instans av en tjänst, till exempel https://myaccount.blob.core.windows.net/ . Mer information finns i Azure-kontrollplanet och dataplanet. Information om vilka åtgärder som använder kontrollplanets URL finns i Azure REST API.
Den här skillnaden innebär att lås förhindrar ändringar i en resurs, men de begränsar inte hur resurser utför sina egna funktioner. Ett ReadOnly-lås på en logisk SQL Database hindrar dig från att ta bort eller ändra servern. Det hindrar dig inte från att skapa, uppdatera eller ta bort data i databaserna på den servern. Datatransaktioner tillåts eftersom dessa åtgärder inte skickas till https://management.azure.com.
Fler exempel på skillnaderna mellan kontroll- och dataplansåtgärder beskrivs i nästa avsnitt.
Att tänka på innan du använder lås
Att tillämpa lås kan leda till oväntade resultat eftersom vissa åtgärder som inte verkar ändra resursen faktiskt kräver åtgärder som blockeras av låset. Lås förhindrar åtgärder som kräver en POST-begäran till Azure Resource Manager API. Några vanliga exempel på åtgärder som blockeras av lås är:
Ett skrivskyddade lås för ett lagringskonto hindrar användare från att visa kontonycklarna. Åtgärden Azure Storage listnycklar hanteras via en POST-begäran för att skydda åtkomsten till kontonycklarna, som ger fullständig åtkomst till data i lagringskontot. När ett skrivskyddat lås har konfigurerats för ett lagringskonto måste användare som inte har kontonycklarna använda Azure AD-autentiseringsuppgifter för att få åtkomst till blob- eller ködata. Ett skrivskyddat lås förhindrar också tilldelning av Azure RBAC-roller som är begränsade till lagringskontot eller till en datacontainer (blobcontainer eller kö).
Ett lås för att inte ta bort på ett lagringskonto förhindrar inte att data i det kontot tas bort eller ändras. Den här typen av lås skyddar endast själva lagringskontot från att tas bort. Om en begäran använder dataplansåtgärderskyddar inte låset på lagringskontot blob-, kö-, tabell- eller fildata i det lagringskontot. Men om begäran använder kontrollplansåtgärderskyddar låset dessa resurser.
Om en begäran till exempel använder filresurser – Ta bort, vilket är en kontrollplansåtgärd, nekas borttagningen. Om begäran använder Ta bort resurs, vilket är en dataplansåtgärd, lyckas borttagningen. Vi rekommenderar att du använder kontrollplanåtgärderna.
Ett skrivskyddat lås för ett lagringskonto förhindrar inte att data i det kontot tas bort eller ändras. Den här typen av lås skyddar endast själva lagringskontot från att tas bort eller ändras och skyddar inte blob-, kö-, tabell- eller fildata i det lagringskontot.
Ett skrivskyddade lås på en App Service förhindrar Visual Studio Server Explorer att visa filer för resursen eftersom den interaktionen kräver skrivåtkomst.
Ett skrivskyddad lås på en resursgrupp som innehåller App Service plan förhindrar att du skalar upp eller ut planen.
Ett skrivskyddade lås för en resursgrupp som innehåller en virtuell dator hindrar alla användare från att starta eller starta om den virtuella datorn. De här åtgärderna kräver en POST-begäran.
Ett skrivskyddade lås för en resursgrupp som innehåller ett Automation-konto förhindrar att alla runbooks startas. De här åtgärderna kräver en POST-begäran.
Ett lås för att inte ta bort en resursgrupp förhindrar Azure Resource Manager automatiskt tar bort distributioner i historiken. Om du når 800 distributioner i historiken misslyckas dina distributioner.
Det går inte att ta bort lås för resursgruppen som skapats Azure Backup Service gör att säkerhetskopieringar misslyckas. Tjänsten stöder högst 18 återställningspunkter. När säkerhetskopieringstjänsten är låst kan den inte rensa återställningspunkter. Mer information finns i Vanliga frågor och svar – Back up Azure VMs (Back up Azure VMs ).
Ett lås för att inte ta bort en resursgrupp förhindrar Azure Machine Learning från att Azure Machine Learning beräkningskluster för att ta bort noder som inte används.
Ett skrivskyddade lås för en prenumeration förhindrar Azure Advisor fungerar korrekt. Advisor kan inte lagra resultatet av sina frågor.
Ett skrivskyddat lås på en Application Gateway förhindrar att du får hälsotillståndet för programgatewayen i backend. Åtgärden använder POST, som blockeras av det skrivskyddade låset.
Ett skrivskyddad lås på ett AKS-kluster hindrar alla användare från att komma åt klusterresurser från avsnittet Kubernetes-resurser på AKS-klustrets vänstra blad på Azure Portal. De här åtgärderna kräver en POST-begäran för autentisering.
Vem kan skapa eller ta bort lås
Om du vill skapa eller ta bort hanteringslås måste du ha åtkomst Microsoft.Authorization/* till eller Microsoft.Authorization/locks/* åtgärder. Av de inbyggda rollerna har endast Ägare och Administratör för användaråtkomst åtkomst till dessa åtgärder.
Hanterade program och lås
Vissa Azure-tjänster, till Azure Databricks, använder hanterade program för att implementera tjänsten. I så fall skapar tjänsten två resursgrupper. En resursgrupp innehåller en översikt över tjänsten och är inte låst. Den andra resursgruppen innehåller infrastrukturen för tjänsten och är låst.
Om du försöker ta bort resursgruppen för infrastrukturen visas ett felmeddelande om att resursgruppen är låst. Om du försöker ta bort låset för infrastrukturresursgruppen visas ett felmeddelande om att låset inte kan tas bort eftersom det ägs av ett systemprogram.
Ta i stället bort tjänsten, som även tar bort resursgruppen infrastruktur.
För hanterade program väljer du den tjänst som du har distribuerat.

Observera att tjänsten innehåller en länk för en hanterad resursgrupp. Resursgruppen innehåller infrastrukturen och är låst. Den kan inte tas bort direkt.

Om du vill ta bort allt för tjänsten, inklusive resursgruppen för låst infrastruktur, väljer du Ta bort för tjänsten.

Konfigurera lås
Portalen
På bladet Inställningar för den resurs, resursgrupp eller prenumeration som du vill låsa upp väljer du Lås.
Om du vill lägga till ett lås väljer du Lägg till. Om du vill skapa ett lås på en överordnad nivå väljer du det överordnade. Den markerade resursen ärver låset från den överordnade resursen. Du kan till exempel låsa resursgruppen för att tillämpa ett lås på alla dess resurser.
Ge låset ett namn och en låsnivå. Om du vill kan du lägga till anteckningar som beskriver låset.
Om du vill ta bort låset väljer du knappen Ta bort.
Mall
När du använder en Azure Resource Manager-mall (ARM-mall) eller Bicep-fil för att distribuera ett lås måste du vara medveten om omfånget för låset och omfånget för distributionen. Om du vill tillämpa ett lås i distributionsomfånget, till exempel låsa en resursgrupp eller prenumeration, ska du inte ange omfångsegenskapen. När du låser en resurs inom distributionsomfånget anger du omfångsegenskapen.
Följande mall tillämpar ett lås på resursgruppen som den distribueras till. Observera att det inte finns någon omfångsegenskap för låsresursen eftersom omfånget för låset matchar omfånget för distributionen. Den här mallen distribueras på resursgruppsnivå.
{
"$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."
}
}
]
}
Om du vill skapa en resursgrupp och låsa den distribuerar du följande mall på prenumerationsnivå.
{
"$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": {}
}
När du använder ett lås för en resurs i resursgruppen lägger du till omfångsegenskapen. Ange omfånget till namnet på resursen som ska låsas.
I följande exempel visas en mall som skapar en App Service-plan, en webbplats och ett lås på webbplatsen. Låsets omfång är inställt på webbplatsen.
{
"$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
Du låser distribuerade resurser med Azure PowerShell med hjälp av kommandot New-AzResourceLock.
Om du vill låsa en resurs anger du namnet på resursen, dess resurstyp och dess resursgruppnamn.
New-AzResourceLock -LockLevel CanNotDelete -LockName LockSite -ResourceName examplesite -ResourceType Microsoft.Web/sites -ResourceGroupName exampleresourcegroup
Om du vill låsa en resursgrupp anger du namnet på resursgruppen.
New-AzResourceLock -LockName LockGroup -LockLevel CanNotDelete -ResourceGroupName exampleresourcegroup
Om du vill ha information om ett lås använder du Get-AzResourceLock. Om du vill hämta alla lås i din prenumeration använder du:
Get-AzResourceLock
Om du vill hämta alla lås för en resurs använder du:
Get-AzResourceLock -ResourceName examplesite -ResourceType Microsoft.Web/sites -ResourceGroupName exampleresourcegroup
Om du vill hämta alla lås för en resursgrupp använder du:
Get-AzResourceLock -ResourceGroupName exampleresourcegroup
Om du vill ta bort ett lås för en resurs använder du:
$lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup -ResourceName examplesite -ResourceType Microsoft.Web/sites).LockId
Remove-AzResourceLock -LockId $lockId
Om du vill ta bort ett lås för en resursgrupp använder du:
$lockId = (Get-AzResourceLock -ResourceGroupName exampleresourcegroup).LockId
Remove-AzResourceLock -LockId $lockId
Azure CLI
Du låser distribuerade resurser med Azure CLI med hjälp av kommandot az lock create.
Om du vill låsa en resurs anger du namnet på resursen, dess resurstyp och dess resursgruppnamn.
az lock create --name LockSite --lock-type CanNotDelete --resource-group exampleresourcegroup --resource-name examplesite --resource-type Microsoft.Web/sites
Om du vill låsa en resursgrupp anger du namnet på resursgruppen.
az lock create --name LockGroup --lock-type CanNotDelete --resource-group exampleresourcegroup
Om du vill ha information om ett lås använder du az lock list. Om du vill hämta alla lås i din prenumeration använder du:
az lock list
Om du vill hämta alla lås för en resurs använder du:
az lock list --resource-group exampleresourcegroup --resource-name examplesite --namespace Microsoft.Web --resource-type sites --parent ""
Om du vill hämta alla lås för en resursgrupp använder du:
az lock list --resource-group exampleresourcegroup
Om du vill ta bort ett lås för en resurs använder du:
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
Om du vill ta bort ett lås för en resursgrupp använder du:
lockid=$(az lock show --name LockSite --resource-group exampleresourcegroup --output tsv --query id)
az lock delete --ids $lockid
REST API
Du kan låsa distribuerade resurser med REST API för hanteringslås. Med REST API kan du skapa och ta bort lås och hämta information om befintliga lås.
Skapa ett lås genom att köra:
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/locks/{lock-name}?api-version={api-version}
Omfånget kan vara en prenumeration, resursgrupp eller resurs. Låsnamnet är det du vill kalla låset. För API-version använder du 2016-09-01.
Ta med ett JSON-objekt som anger låsets egenskaper i begäran.
{
"properties": {
"level": "CanNotDelete",
"notes": "Optional text notes."
}
}
Nästa steg
- Mer information om att organisera dina resurser logiskt finns i Använda taggar för att organisera dina resurser.
- Du kan tillämpa begränsningar och konventioner i din prenumeration med anpassade principer. Mer information finns i Vad är Azure Policy?.
- Vägledning för hur företag kan använda resurshanteraren för att effektivt hantera prenumerationer finns i Azure enterprise scaffold - förebyggande prenumerationsåtgärder.