Meer informatie over resourcevergrendeling in Azure Blueprints
Het maken van consistente omgevingen op schaal is alleen echt waardevol als er een mechanisme is om die consistentie te behouden. In dit artikel wordt uitgelegd hoe resourcevergrendeling werkt in Azure Blueprints. Zie de zelfstudie Over het beveiligen van nieuwe resources voor een voorbeeld van resourcevergrendeling en de toepassing van toewijzingen voor weigeren.
Notitie
Resourcevergrendelingen die door Azure Blueprints worden alleen toegepast op niet-extensieresources die zijn geïmplementeerd door de blauwdruktoewijzing. Aan bestaande resources, zoals resources in resourcegroepen die al bestaan, zijn geen vergrendelingen toegevoegd.
Vergrendelingsmodi en -staten
De vergrendelingsmodus is van toepassing op de blauwdruktoewijzing en heeft drie opties: Vergrendelen, Alleen-lezen of Niet verwijderen. De vergrendelingsmodus wordt geconfigureerd tijdens de implementatie van artefacten tijdens een blauwdruktoewijzing. U kunt een andere vergrendelingsmodus instellen door de blauwdruktoewijzing bij te werken. Vergrendelingsmodi kunnen echter niet worden gewijzigd buiten Azure Blueprints.
Resources die zijn gemaakt door artefacten in een blauwdruktoewijzing hebben vier staten: Niet vergrendeld, Alleen-lezen, Kan niet bewerken/verwijderen of Kan niet verwijderen. Elk type artefact kan de status Niet vergrendeld hebben. De volgende tabel kan worden gebruikt om de status van een resource te bepalen:
| Modus | Resourcetype artefact | Staat | Beschrijving |
|---|---|---|---|
| Niet vergrendelen | * | Niet vergrendeld | Resources worden niet beveiligd door Azure Blueprints. Deze status wordt ook gebruikt voor resources die zijn toegevoegd aan een artefact van een resourcegroep dat alleen-lezen of niet verwijderen is van buiten een blauwdruktoewijzing. |
| Alleen-lezen | Resourcegroep | Kan niet bewerken/verwijderen | De resourcegroep is alleen-lezen en tags in de resourcegroep kunnen niet worden gewijzigd. Vergrendelde resources kunnen niet worden toegevoegd, verplaatst, gewijzigd of verwijderd uit deze resourcegroep. |
| Alleen-lezen | Niet-resourcegroep | Alleen-lezen | De resource kan op geen enkele manier worden gewijzigd. Er zijn geen wijzigingen en deze kunnen niet worden verwijderd. |
| Niet verwijderen | * | Kan niet verwijderen | De resources kunnen worden gewijzigd, maar kunnen niet worden verwijderd. Vergrendelde resources kunnen niet worden toegevoegd, verplaatst, gewijzigd of verwijderd uit deze resourcegroep. |
Vergrendelings states overschrijven
Het is doorgaans mogelijk dat iemand met het juiste op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) voor het abonnement, zoals de rol 'Eigenaar', resources mag wijzigen of verwijderen. Deze toegang is niet het geval wanneer Azure Blueprints vergrendeling als onderdeel van een geïmplementeerde toewijzing wordt toegepast. Als de toewijzing is ingesteld met de optie Alleen-lezen of Niet verwijderen, kan zelfs de eigenaar van het abonnement de geblokkeerde actie niet uitvoeren op de beveiligde resource.
Deze beveiligingsmaatregel beschermt de consistentie van de gedefinieerde blauwdruk en de omgeving die is ontworpen voor het maken van een onbedoelde of programmatische verwijdering of wijziging.
Toewijzen in beheergroep
De enige optie om te voorkomen dat abonnementseigenaren een blauwdruktoewijzing verwijderen, is door de blauwdruk toe te wijzen aan een beheergroep. In dit scenario hebben alleen eigenaren van de beheergroep de machtigingen die nodig zijn om de blauwdruktoewijzing te verwijderen.
Als u de blauwdruk wilt toewijzen aan een beheergroep in plaats van een abonnement, REST API de volgende wijzigingen aanroepen:
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{assignmentMG}/providers/Microsoft.Blueprint/blueprintAssignments/{assignmentName}?api-version=2018-11-01-preview
De beheergroep die door is gedefinieerd, moet zich binnen de hiërarchie van de beheergroep of in dezelfde beheergroep als de beheergroep waarin de {assignmentMG} blauwdrukdefinitie is opgeslagen, zijn.
De aanvraag body van de blauwdruktoewijzing ziet er als volgende uit:
{
"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"
}
}
}
}
Het belangrijkste verschil in deze aanvraag body en één die wordt toegewezen aan een abonnement is de properties.scope eigenschap . Deze vereiste eigenschap moet worden ingesteld op het abonnement waar de blauwdruktoewijzing op van toepassing is. Het abonnement moet een direct onderliggend onderliggend gegeven zijn van de hiërarchie van de beheergroep waarin de blauwdruktoewijzing is opgeslagen.
Notitie
Een blauwdruk die is toegewezen aan het bereik van een beheergroep, werkt nog steeds als blauwdruktoewijzing op abonnementsniveau. Het enige verschil is waar de blauwdruktoewijzing wordt opgeslagen om te voorkomen dat abonnementseigenaren de toewijzing en bijbehorende vergrendelingen verwijderen.
Vergrendelings states verwijderen
Als het nodig is om een resource te wijzigen of te verwijderen die wordt beveiligd door een toewijzing, zijn er twee manieren om dit te doen.
- De blauwdruktoewijzing bijwerken naar een vergrendelingsmodus van Niet vergrendelen
- De blauwdruktoewijzing verwijderen
Wanneer de toewijzing wordt verwijderd, worden de vergrendelingen die zijn gemaakt door Azure Blueprints verwijderd. De resource wordt echter op een normale manier achter gelaten en moet worden verwijderd.
Hoe blauwdrukvergrendelingen werken
Een actie voor weigeren van Azure RBAC-toewijzingen wordt toegepast op artefactbronnen tijdens de toewijzing van een blauwdruk als voor de toewijzing de optie Alleen-lezen of Niet verwijderen is geselecteerd. De actie weigeren wordt toegevoegd door de beheerde identiteit van de blauwdruktoewijzing en kan alleen worden verwijderd uit de artefactbronnen door dezelfde beheerde identiteit. Met deze beveiligingsmaatregel wordt het vergrendelingsmechanisme afgedwongen en wordt voorkomen dat de blauwdrukvergrendeling buiten Azure Blueprints.
De eigenschappen van de toewijzing weigeren van elke modus zijn als volgt:
| Modus | Permissions.Actions | Permissions.NotActions | Principals[i]. Type | ExcludePrincipals[i]. Id | DoNotApplyToChildScopes |
|---|---|---|---|---|---|
| Alleen-lezen | **** _ | _ * /read Microsoft.Authorization/locks/delete Microsoft.Network/virtualNetwork/subnets/join/action* |
SystemDefined (iedereen) | blauwdruktoewijzing en door de gebruiker gedefinieerd in excludedPrincipals | Resourcegroep - true; Resource - onwaar |
| Niet verwijderen | */ verwijderen | Microsoft.Authorization/locks/delete Microsoft.Network/virtualNetwork/subnetten/join/action |
SystemDefined (iedereen) | blauwdruktoewijzing en door de gebruiker gedefinieerd in excludedPrincipals | Resourcegroep - true; Resource - onwaar |
Belangrijk
Azure Resource Manager roltoewijzingsdetails worden maximaal 30 minuten in de cache opgeslagen. Als gevolg hiervan zijn weigerende toewijzingen weigeren van de actie voor blauwdrukbronnen mogelijk niet onmiddellijk volledig van kracht. Gedurende deze periode is het mogelijk om een resource te verwijderen die is bedoeld om te worden beveiligd door blauwdrukvergrendelingen.
Een principal uitsluiten van een toewijzing voor weigeren
In sommige ontwerp- of beveiligingsscenario's kan het nodig zijn om een principal uit te sluiten van de toewijzing voor weigeren die door de blauwdruktoewijzing wordt gemaakt. Deze stap wordt uitgevoerd in REST API door maximaal vijf waarden toe te voegen aan de matrix excludedPrincipals in de eigenschap locks bij het maken van de toewijzing. De volgende toewijzingsdefinitie is een voorbeeld van een aanvraaghoofditie die excludedPrincipals bevat:
{
"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"
}
}
}
}
Een actie uitsluiten van een toewijzing voor weigeren
Net als bij het uitsluiten van een principal voor een toewijzing voor weigeren in een blauwdruktoewijzing, kunt u specifieke bewerkingen van de Azure-resourceprovider uitsluiten. In het blok properties.locks kan op dezelfde plaats als excludedPrincipals een excludedActions worden toegevoegd:
"locks": {
"mode": "AllResourcesDoNotDelete",
"excludedPrincipals": [
"7be2f100-3af5-4c15-bcb7-27ee43784a1f",
"38833b56-194d-420b-90ce-cff578296714"
],
"excludedActions": [
"Microsoft.ContainerRegistry/registries/push/write",
"Microsoft.Authorization/*/read"
]
},
Hoewel excludedPrincipals expliciet moet zijn, kunnen excludedActions-vermeldingen gebruikmaken van voor jokertekens die overeenkomen met * resourceproviderbewerkingen.
Volgende stappen
- Volg de zelfstudie Nieuwe resources beveiligen.
- Meer informatie over de levenscyclus van een blauwdruk.
- Meer informatie over hoe u statische en dynamische parameters gebruikt.
- Meer informatie over hoe u de blauwdrukvolgorde aanpast.
- Meer informatie over hoe u bestaande toewijzingen bijwerkt.
- Problemen oplossen tijdens de toewijzing van een blauwdruk met algemene probleemoplossing.