In manchen Fällen möchten Sie wichtige Ressourcen vor versehentlichem Löschen schützen. Einige Beispiele sind ein Speicherkonto mit Quelldaten für die Verarbeitung, ein Key Vault mit Festplattenverschlüsselungsschlüsseln oder eine andere Schlüsselkomponente in Ihrer Infrastruktur. Wenn Sie einige Ressourcen verlieren, die für Ihre Infrastruktur wichtig sind, kann die Wiederherstellung dramatisch sein. Mit Resource Manager-Sperren können Sie diese wichtigen Ressourcen vor dem Löschen schützen.
Sperren des Ressourcenmanagers Sperren des Ressourcenmanagers beziehen sich auf die Verwaltungsfunktion der gesperrten Ressourcen. Die Sperren haben keinen Einfluss auf die normalen Funktionen der Ressource. Sie haben zwei mögliche Arten von Sperren für eine Ressource:
Das Sperren einer Ressource kann Ihre Mitwirkenden davor bewahren, versehentlich eine wichtige Ressource zu löschen. Ein "Ups... ich habe die falsche Ressource gelöscht" Moment sollte der Vergangenheit angehören.
CannotDelete bedeutet, dass autorisierte Benutzer eine Ressource zwar lesen und ändern können, aber nicht löschen können. ReadOnly bedeutet, dass autorisierte Benutzer eine Ressource lesen, aber nicht löschen oder aktualisieren können. Die Anwendung dieser Sperre ist vergleichbar mit der Beschränkung aller autorisierten Benutzer auf die von der Rolle Leser gewährten Berechtigungen. In der Praxis haben Benutzer oder Dienstprinzipien die Rolle Contributor für eine Ressource. Diese Rolle erlaubt es dem Benutzer, die Ressource zu löschen. Eine Sperre für die Ressource verhindert, dass der Benutzer mit der Rolle Contributor die Ressource löschen kann. Nur die Rollen Eigentümer und User Access Administrator können die Sperren der Ressourcen ändern.
Wenn Sie eine Sperre aus einer VSTS-Release-Pipeline bereitstellen, sollte der Service Principle die Rolle User Access Administrator für die Ressourcengruppe haben.
Bereitstellen von Resource Manager-Sperren Das Bereitstellen von Sperren kann mit ARM-Vorlagen oder Powershell erfolgen. Ich bevorzuge es, sie zu meiner ARM-Vorlage hinzuzufügen und sie mit meiner Release-Pipeline bereitzustellen. Eine einfache Vorlage zum Hinzufügen einer Sperre sieht so aus:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"Parameter": {
"lockedResource": {
"Typ": "string"
}
},
"Ressourcen": [
{
"name": "[concat(parameters('lockedResource'), '/Microsoft.Authorization/myLock')]",
"Typ": "Microsoft.Storage/storageAccounts/providers/locks",
"apiVersion": "2015-01-01",
"Eigenschaften": {
"level": "CannotDelete",
"Anmerkungen": "Ressource vor versehentlicher Löschung schützen"
}
}
]
}
Der Parameter lockedResource sollte wie folgt aussehen: '/Microsoft.Authorization/' im Falle der Sperrung eines Speicherkontos.
Wenn Sie im Portal eine Gruppe mit einer gesperrten Ressource löschen, wird
das Löschen verhindert und dem Benutzer wird die folgende Meldung angezeigt:
Nachdem Sie die Sperre des Speicherkontos aufgehoben haben, können Sie die Ressourcengruppe entfernen.
Fazit Das Sperren kritischer Ressourcen kann Sie vor versehentlichen und schwer wiederherstellbaren Ausfallzeiten bewahren. Die Anwendung dieser Sperren aus Ihrer Arm-Vorlage heraus ist sehr einfach und ermöglicht es Ihnen, sie wie jede andere Ressource zu verwalten.
Verfasst von
Peter Groenewegen
Contact



