Förstå resurslåsning i Azure Blueprints
Att skapa 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. Ett exempel på resurslåsning och program för nekandetilldelningar finns i självstudien skydda nya resurser .
Anteckning
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 ha tillståndet Inte låst . Följande tabell kan användas för att fastställa tillståndet för en resurs:
Läge | Artefaktresurstyp | Stat | 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. |
Skrivskydd | Resursgrupp | Det går inte att redigera/ta bort | Resursgruppen är skrivskyddad och taggar i resursgruppen kan inte ändras. Inte låsta resurser kan läggas till, flyttas, ändras eller tas bort från den här resursgruppen. |
Skrivskydd | Grupp som inte är resurs | Skrivskydd | Resursen kan inte ändras på något sätt. Inga ändringar och det går inte att ta bort. |
Ta inte bort | * | Det går inte att ta bort | Resurserna kan ändras, men det går inte att ta bort dem. Inte låsta resurser kan läggas till, flyttas, ändras eller tas bort från den här resursgruppen. |
Åsidosätta låsningstillstånd
Det är vanligtvis möjligt att någon med lämplig rollbaserad åtkomstkontroll i Azure (Azure RBAC) för prenumerationen, till exempel rollen Ägare, kan ä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 den miljö 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 för 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 properties.scope
och en som tilldelas till en prenumeration är egenskapen . 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.
Anteckning
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.
- Uppdatera skisstilldelningen till ett låsningsläge för 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 måste 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 valde 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.
Egenskaperna för nekad tilldelning för varje läge är följande:
Läge | Permissions.Actions | Permissions.NotActions | Principals[i]. Typ | ExcludePrincipals[i]. Id | DoNotApplyToChildScopes |
---|---|---|---|---|---|
Skrivskydd | * | */Läsa Microsoft. Auktorisering/lås/ta bort Microsoft. Nätverk/virtualNetwork/undernät/koppling/åtgärd |
SystemDefined (alla) | skisstilldelning och användardefinierad i excludedPrincipals | Resursgrupp – sant; Resurs – falskt |
Ta inte bort | */Ta bort | Microsoft. Auktorisering/lås/ta bort Microsoft. Nätverk/virtualNetwork/undernät/koppling/åtgärd |
SystemDefined (alla) | skisstilldelning och användardefinierad i excludedPrincipals | Resursgrupp – sant; Resurs – falskt |
Viktigt
Azure Resource Manager cachelagrar rolltilldelningsinformation i upp till 30 minuter. Därför kan det hända att neka tilldelningar neka åtgärd på skissresurser 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 nekandetilldelning
I vissa design- eller säkerhetsscenarier kan det vara nödvändigt att undanta ett huvudnamn från den nekande tilldelning som skisstilldelningen skapar. Det här steget görs i REST API genom att lägga till upp till fem värden i matrisen excludedPrincipals i egenskapen locks nä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 du exkluderar 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 explicit, kan exkluderadeÅtgärdsposter använda sig av *
för jokerteckenmatchning av resursprovideråtgärder.
Nästa steg
- Följ självstudien Skydda nya resurser .
- Mer information om livscykeln för en skiss.
- Förstå hur du använder statiska och dynamiska parametrar.
- Lär dig hur du anpassar sekvensordningen för en skiss.
- Lär dig hur du uppdaterar befintliga tilldelningar.
- Lös problem som kan uppstå vid tilldelningen av en skiss med allmän felsökning.