Förstå resurslåsning i Azure Blueprints

Viktigt!

Den 11 juli 2026 kommer skisser (förhandsversion) att bli inaktuella. Migrera dina befintliga skissdefinitioner och tilldelningar till mallspecifikationer och distributionsstackar. Skissartefakter ska konverteras till ARM JSON-mallar eller Bicep-filer som används för att definiera distributionsstackar. Information om hur du skapar en artefakt som en ARM-resurs finns i:

Skapandet av konsekventa miljöer i stor skala är bara värdefullt om det finns en mekanism för att upprätthålla den konsekvensen. Den här artikeln beskriver hur resurslåsning fungerar i Azure Blueprints. Om du vill se ett exempel på resurslåsning och program för neka tilldelningar kan du läsa självstudien skydda nya resurser .

Kommentar

Resurslås som distribueras av Azure Blueprints tillämpas endast på resurser som inte är tillägg som distribueras av skisstilldelningen. Befintliga resurser, till exempel de i resursgrupper som redan finns, har inte lås som har lagts till i dem.

Låslägen och tillstånd

Låsningsläget gäller för skisstilldelningen och har tre alternativ: Lås inte, Skrivskyddad eller Ta inte bort. Låsningsläget konfigureras under artefaktdistributionen under en skisstilldelning. Du kan ange ett annat låsläge genom att uppdatera skisstilldelningen. Låsningslägen kan dock inte ändras utanför Azure Blueprints.

Resurser som skapats av artefakter i en skisstilldelning har fyra tillstånd: Inte låst, Skrivskyddad, Kan inte redigera/ta bort eller Kan inte ta bort. Varje artefakttyp kan vara i tillståndet Inte låst . Följande tabell kan användas för att fastställa tillståndet för en resurs:

Läge Resurstyp för artefakt Stat/län beskrivning
Lås inte * Inte låst Resurser skyddas inte av Azure Blueprints. Det här tillståndet används också för resurser som läggs till i en skrivskyddad eller Ta inte bort resursgruppsartefakt utanför en skisstilldelning.
Skrivskyddad Resursgrupp Det går inte att redigera/ta bort Resursgruppen är skrivskyddad och alla dess egenskaper, förutom taggar, kan inte ändras. Inte låsta resurser kan läggas till, flyttas, ändras eller tas bort från den här resursgruppen.
Skrivskyddad Grupp som inte är resurs Skrivskyddad Förutom taggar förblir resursen oförändrat och kan inte tas bort eller ändras.
Ta inte bort * Det går inte att ta bort Resurserna kan ändras men kan inte tas bort. Inte låsta resurser kan läggas till, flyttas, ändras eller tas bort från den här resursgruppen.

Åsidosättande låsningstillstånd

Det är vanligtvis möjligt för någon med lämplig rollbaserad åtkomstkontroll i Azure (Azure RBAC) för prenumerationen, till exempel rollen "Ägare", att tillåtas att ändra eller ta bort en resurs. Den här åtkomsten är inte fallet när Azure Blueprints tillämpar låsning som en del av en distribuerad tilldelning. Om tilldelningen har angetts med alternativet Skrivskyddad eller Ta inte bort kan inte ens prenumerationsägaren utföra den blockerade åtgärden på den skyddade resursen.

Det här säkerhetsmåttet skyddar konsekvensen i den definierade skissen och miljön som den har utformats för att skapa från oavsiktlig eller programmatisk borttagning eller ändring.

Tilldela i hanteringsgrupp

Det enda alternativet för att förhindra att prenumerationsägare tar bort en skisstilldelning är att tilldela skissen till en hanteringsgrupp. I det här scenariot har endast ägare av hanteringsgruppen de behörigheter som krävs för att ta bort skisstilldelningen.

Om du vill tilldela skissen till en hanteringsgrupp i stället för en prenumeration ändras REST API-anropet så här:

PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{assignmentMG}/providers/Microsoft.Blueprint/blueprintAssignments/{assignmentName}?api-version=2018-11-01-preview

Hanteringsgruppen som definieras av {assignmentMG} måste antingen finnas i hanteringsgruppshierarkin eller vara samma hanteringsgrupp där skissdefinitionen sparas.

Begärandetexten i skisstilldelningen ser ut så här:

{
    "identity": {
        "type": "SystemAssigned"
    },
    "location": "eastus",
    "properties": {
        "description": "enforce pre-defined simpleBlueprint to this XXXXXXXX subscription.",
        "blueprintId": "/providers/Microsoft.Management/managementGroups/{blueprintMG}/providers/Microsoft.Blueprint/blueprints/simpleBlueprint",
        "scope": "/subscriptions/{targetSubscriptionId}",
        "parameters": {
            "storageAccountType": {
                "value": "Standard_LRS"
            },
            "costCenter": {
                "value": "Contoso/Online/Shopping/Production"
            },
            "owners": {
                "value": [
                    "johnDoe@contoso.com",
                    "johnsteam@contoso.com"
                ]
            }
        },
        "resourceGroups": {
            "storageRG": {
                "name": "defaultRG",
                "location": "eastus"
            }
        }
    }
}

Den viktigaste skillnaden i den här begärandetexten och en som tilldelas till en prenumeration är egenskapen properties.scope . Den här obligatoriska egenskapen måste anges till den prenumeration som skisstilldelningen gäller för. Prenumerationen måste vara ett direkt underordnat i hanteringsgruppshierarkin där skisstilldelningen lagras.

Kommentar

En skiss som tilldelats hanteringsgruppens omfång fungerar fortfarande som en skisstilldelning på prenumerationsnivå. Den enda skillnaden är var skisstilldelningen lagras för att förhindra att prenumerationsägare tar bort tilldelningen och tillhörande lås.

Ta bort låsningstillstånd

Om det blir nödvändigt att ändra eller ta bort en resurs som skyddas av en tilldelning finns det två sätt att göra det på.

  • Uppdatera skisstilldelningen till låsläget Lås inte
  • Ta bort skisstilldelningen

När tilldelningen tas bort tas låsen som skapats av Azure Blueprints bort. Resursen lämnas dock kvar och skulle behöva tas bort på normalt sätt.

Så här fungerar skisslås

En åtgärd som nekar tilldelningar i Azure RBAC tillämpas på artefaktresurser under tilldelningen av en skiss om tilldelningen har valt alternativet Skrivskyddad eller Ta inte bort. Åtgärden neka läggs till av den hanterade identiteten för skisstilldelningen och kan bara tas bort från artefaktresurserna med samma hanterade identitet. Den här säkerhetsåtgärden tillämpar låsmekanismen och förhindrar att skisslåset tas bort utanför Azure Blueprints.

Screenshot of the Access control (I A M) page and the Deny assignments tab for a resource group.

Egenskaperna för nekandetilldelning för varje läge är följande:

Läge Permissions.Actions Permissions.NotActions Principals[i]. Typ ExcludePrincipals[i]. Id DoNotApplyToChildScopes
Skrivskyddad * */Läsa
Microsoft.Authorization/locks/delete
Microsoft.Network/virtualNetwork/subnets/join/action
SystemDefined (alla) skisstilldelning och användardefinierad i excludedPrincipals Resursgrupp – sant; Resurs – falskt
Ta inte bort */Ta bort Microsoft.Authorization/locks/delete
Microsoft.Network/virtualNetwork/subnets/join/action
SystemDefined (alla) skisstilldelning och användardefinierad i excludedPrincipals Resursgrupp – sant; Resurs – falskt

Viktigt!

Azure Resource Manager cachelagrar rolltilldelningsinformation i upp till 30 minuter. Det innebär att neka tilldelningar neka åtgärd på skissresurser kanske inte omedelbart är i full effekt. Under den här tidsperioden kan det vara möjligt att ta bort en resurs som är avsedd att skyddas av skisslås.

Undanta ett huvudnamn från en neka-tilldelning

I vissa design- eller säkerhetsscenarier kan det vara nödvändigt att undanta ett huvudnamn från den nekandetilldelning som skisstilldelningen skapar. Det här steget görs i REST-API:et genom att lägga till upp till fem värden i matrisen excludedPrincipals i låsegenskapennär tilldelningen skapas. Följande tilldelningsdefinition är ett exempel på en begärandetext som innehåller excludedPrincipals:

{
  "identity": {
    "type": "SystemAssigned"
  },
  "location": "eastus",
  "properties": {
    "description": "enforce pre-defined simpleBlueprint to this XXXXXXXX subscription.",
    "blueprintId": "/providers/Microsoft.Management/managementGroups/{mgId}/providers/Microsoft.Blueprint/blueprints/simpleBlueprint",
    "locks": {
        "mode": "AllResourcesDoNotDelete",
        "excludedPrincipals": [
            "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
            "38833b56-194d-420b-90ce-cff578296714"
        ]
    },
    "parameters": {
      "storageAccountType": {
        "value": "Standard_LRS"
      },
      "costCenter": {
        "value": "Contoso/Online/Shopping/Production"
      },
      "owners": {
        "value": [
          "johnDoe@contoso.com",
          "johnsteam@contoso.com"
        ]
      }
    },
    "resourceGroups": {
      "storageRG": {
        "name": "defaultRG",
        "location": "eastus"
      }
    }
  }
}

Undanta en åtgärd från en nekandetilldelning

På samma sätt som att exkludera ett huvudnamn för en neka-tilldelning i en skisstilldelning kan du exkludera specifika åtgärder för Azure-resursprovidern. I blocket properties.locks, på samma plats som excludedPrincipals är, kan en excludedActions läggas till:

"locks": {
    "mode": "AllResourcesDoNotDelete",
    "excludedPrincipals": [
        "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
        "38833b56-194d-420b-90ce-cff578296714"
    ],
    "excludedActions": [
        "Microsoft.ContainerRegistry/registries/push/write",
        "Microsoft.Authorization/*/read"
    ]
},

Även om excludedPrincipals måste vara explicita, kan exkluderadeÅtgärder som poster kan använda * för jokerteckenmatchning av resursprovideråtgärder.

Nästa steg