Inzicht in resourcevergrendeling in Azure Blueprints

Belangrijk

Op 11 juli 2026 worden blauwdrukken (preview) afgeschaft. Migreer uw bestaande blauwdrukdefinities en -toewijzingen naar sjabloonspecificaties en implementatiestacks. Blauwdrukartefacten moeten worden geconverteerd naar ARM JSON-sjablonen of Bicep-bestanden die worden gebruikt om implementatiestacks te definiëren. Zie voor meer informatie over het ontwerpen van een artefact als een ARM-resource:

Het maken van consistente omgevingen op schaal is alleen echt waardevol als er een mechanisme is om die consistentie te handhaven. In dit artikel wordt uitgelegd hoe resourcevergrendeling werkt in Azure Blueprints. Zie de zelfstudie over het beveiligen van nieuwe resources voor een voorbeeld van het vergrendelen van resources en het toepassen van weigeringstoewijzingen.

Notitie

Resourcevergrendelingen die door Azure Blueprints zijn geïmplementeerd, worden alleen toegepast op niet-extensieresources die zijn geïmplementeerd door de blauwdruktoewijzing. Bestaande resources, zoals resources in resourcegroepen die al bestaan, hebben geen vergrendelingen toegevoegd.

Vergrendelingsmodi en -statussen

De vergrendelingsmodus is van toepassing op de blauwdruktoewijzing en heeft drie opties: Niet 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 statussen: Niet vergrendeld, Alleen-lezen, Kan niet bewerken/verwijderen of Kan niet verwijderen. Elk artefacttype kan de status Niet vergrendeld hebben. De volgende tabel kan worden gebruikt om de status van een resource te bepalen:

Modus Resourcetype artefact Toestand Beschrijving
Niet vergrendelen * Niet vergrendeld Resources worden niet beveiligd door Azure Blueprints. Deze status wordt ook gebruikt voor resources die zijn toegevoegd aan een alleen-lezen artefact of niet verwijderen van resourcegroepartefacten buiten een blauwdruktoewijzing.
Alleen-lezen Resourcegroep Kan niet bewerken/verwijderen De resourcegroep is alleen-lezen en alle eigenschappen, met uitzondering van tags, kunnen niet worden gewijzigd. Geen vergrendelde resources kunnen worden toegevoegd, verplaatst, gewijzigd of verwijderd uit deze resourcegroep.
Alleen-lezen Niet-resourcegroep Alleen-lezen Met uitzondering van tags blijft de resource onveranderbaar en kan deze niet worden verwijderd of gewijzigd.
Niet verwijderen * Kan niet verwijderen De resources kunnen worden gewijzigd, maar kunnen niet worden verwijderd. Geen vergrendelde resources kunnen worden toegevoegd, verplaatst, gewijzigd of verwijderd uit deze resourcegroep.

Vergrendelingsstatussen overschrijven

Het is meestal mogelijk dat iemand met het juiste op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) in het abonnement, zoals de rol Eigenaar, elke resource mag wijzigen of verwijderen. Deze toegang is niet het geval wanneer Azure Blueprints vergrendeling toepast als onderdeel van een geïmplementeerde toewijzing. Als de toewijzing is ingesteld met de optie Alleen-lezen of Niet verwijderen , kan zelfs de eigenaar van het abonnement de geblokkeerde actie uitvoeren op de beveiligde resource.

Deze beveiligingsmaatregel beschermt de consistentie van de gedefinieerde blauwdruk en de omgeving die is ontworpen om te maken van onbedoelde of programmatische verwijdering of wijziging.

Toewijzen bij 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, verandert de REST API-aanroep om er als volgt uit te zien:

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

De beheergroep die is {assignmentMG} gedefinieerd door, moet zich in de hiërarchie van de beheergroep bevinden of dezelfde beheergroep zijn waarin de blauwdrukdefinitie wordt opgeslagen.

De hoofdtekst van de aanvraag van de blauwdruktoewijzing ziet er als volgt 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 aanvraagbody en één die wordt toegewezen aan een abonnement, is de properties.scope eigenschap. Deze vereiste eigenschap moet worden ingesteld op het abonnement waarop de blauwdruktoewijzing van toepassing is. Het abonnement moet een direct onderliggend element zijn van de hiërarchie van de beheergroep waarin de blauwdruktoewijzing wordt opgeslagen.

Notitie

Een blauwdruk die is toegewezen aan het bereik van beheergroepen werkt nog steeds als blauwdruktoewijzing op abonnementsniveau. Het enige verschil is waar de blauwdruktoewijzing wordt opgeslagen om te voorkomen dat abonnementseigenaren de toewijzing en de bijbehorende vergrendelingen verwijderen.

Vergrendelingsstatussen verwijderen

Als het nodig is om een resource te wijzigen of te verwijderen die is 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 door Azure Blueprints zijn gemaakt, verwijderd. De resource blijft echter achter en moet op normale wijze worden verwijderd.

Hoe blauwdrukvergrendelingen werken

Een weigeringsactie voor Azure RBAC-weigeringstoewijzingen wordt toegepast op artefactbronnen tijdens de toewijzing van een blauwdruk als de toewijzing de optie Alleen-lezen of Niet verwijderen heeft geselecteerd. De weigeringsactie wordt toegevoegd door de beheerde identiteit van de blauwdruktoewijzing en kan alleen worden verwijderd uit de artefactbronnen door dezelfde beheerde identiteit. Deze beveiligingsmaatregel dwingt het vergrendelingsmechanisme af en voorkomt dat de blauwdrukvergrendeling buiten Azure Blueprints wordt verwijderd.

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

De eigenschappen voor weigeringstoewijzing van elke modus zijn als volgt:

Modus Permissions.Actions Permissions.NotActions Principals[i]. Type ExcludePrincipals[i]. Id DoNotApplyToChildScopes
Alleen-lezen * */Lezen
Microsoft.Authorization/locks/delete
Microsoft.Network/virtualNetwork/subnetten/join/action
SystemDefined (iedereen) blauwdruktoewijzing en door de gebruiker gedefinieerd in excludedPrincipals Resourcegroep - waar; 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 - waar; Resource - onwaar

Belangrijk

Azure Resource Manager slaat de roltoewijzingsgegevens maximaal 30 minuten in de cache op. Als gevolg hiervan zijn weigeringstoewijzingen 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 weigeringstoewijzing

In sommige ontwerp- of beveiligingsscenario's kan het nodig zijn om een principal uit te sluiten van de weigeringstoewijzing die de blauwdruktoewijzing maakt. Deze stap wordt uitgevoerd in REST API door maximaal vijf waarden toe te voegen aan de uitgeslotenPrincipals-matrix in de eigenschap Vergrendelingen bij het maken van de toewijzing. De volgende toewijzingsdefinitie is een voorbeeld van een aanvraagbody met 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"
      }
    }
  }
}

Een actie uitsluiten van een weigeringstoewijzing

Net als bij het uitsluiten van een principal voor een weigeringstoewijzing in een blauwdruktoewijzing, kunt u specifieke bewerkingen van de Azure-resourceprovider uitsluiten. In het blok properties.locks kunnen 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 moeten zijn, kunnen excludedActions-vermeldingen gebruikmaken van * jokertekens die overeenkomen met resourceproviderbewerkingen.

Volgende stappen