Blog
Azure-Richtlinie enthüllt: Entfachen Sie Ihre Cloud-Management-Leidenschaft

Stellen Sie sich vor, Ihr Unternehmen verfügt über eine Vielzahl von Azure-Ressourcen, und Sie möchten sicherstellen, dass alle mit den Standards Ihres Unternehmens übereinstimmen. Sie könnten jede einzelne Ressource durchgehen und prüfen, ob sie konform ist, aber das wäre eine Menge Arbeit. Glücklicherweise kann Ihnen Azure Policy dabei helfen. Azure Policy ist ein Verwaltungstool, mit dem Sie die Einstellungen und Konfigurationen von Ressourcen in Ihrer Azure Cloud-Umgebung durchsetzen und kontrollieren können. Es ermöglicht Ihnen die Definition und Durchsetzung von Regeln und Richtlinien, um sicherzustellen, dass Ihre Ressourcen bestimmte Compliance- und Governance-Anforderungen erfüllen. Diese Richtlinien können verschiedene Aspekte abdecken, wie z.B. Sicherheit, Ressourcenkennzeichnung und Namenskonventionen, und helfen Ihnen, eine konsistente und sichere Cloud-Infrastruktur zu erhalten. Azure Policy bietet eine zentrale Möglichkeit, diese Richtlinien zu überwachen und durchzusetzen. So stellen Sie sicher, dass Ihre Azure-Ressourcen mit den Standards und Best Practices Ihres Unternehmens übereinstimmen.
Azure Policy arbeitet mit Definitionen, um die Bedingungen und Regeln festzulegen, die ausgeführt werden sollen. Definitionen legen die Logik fest, gefolgt von Zuweisungen, die die Logik auf einen Bereich anwenden. Ein Bereich kann eine Verwaltungsgruppe, ein Abonnement, eine Ressourcengruppe oder eine Ressource sein. Wenn eine Zuweisung erfolgt ist, können Sie die Compliance Ihrer Ressourcen im Compliance-Dashboard überprüfen.
Wenn Sie bereit sind, sich mit Azure-Richtlinien zu beschäftigen, werden Sie wahrscheinlich überwältigt sein. Glücklicherweise stellt Microsoft Azure Ihnen eine Reihe von integrierten Richtlinien zur Verfügung, die Sie für den Anfang verwenden können. Und wenn die eingebauten Richtlinien für Ihre Bedürfnisse nicht ausreichen, haben Sie die Möglichkeit, eigene Richtlinien zu erstellen. Nachfolgend eine kurze Zusammenfassung der Unterschiede:
- Integrierte Richtliniendefinitionen werden von Microsoft bereitgestellt und können zur Überprüfung Ihrer Umgebung verwendet werden.
- Benutzerdefinierte Richtliniendefinitionen werden von Ihnen erstellt und können für die Prüfung Ihrer Umgebung verwendet werden.
Wichtiger Hinweis für integrierte Richtlinien: Sie werden in der Root Tenant Group eingesetzt und ihre Namen sind GUIDs. Ihr Anzeigename erklärt besser, was die jeweilige Richtliniendefinition tut.
Abbildung 1: Compliance Dashboard
Warum sollte ich es benutzen?
Azure Policy ist sehr leistungsfähig und ermöglicht Ihrem Unternehmen die Durchsetzung von Standards und die Bewertung der Compliance. Außerdem hilft es Ihnen, Ihre Ressourcen durch Massenanpassungen für bestehende Ressourcen und automatische Anpassungen für neue Ressourcen konform zu machen. Aber warum sollten Sie es verwenden? Lassen Sie uns einen Blick auf einige der Vorteile von Azure Policy werfen:
- Standards durchsetzen: Azure Policy hilft bei der Durchsetzung von Standards und der Bewertung der Compliance. Sie können Richtlinien auch verwenden, um nicht konforme Ressourcen zu verhindern oder (automatisch) zu korrigieren.
- Zentralisierte Verwaltung: Azure Policy bietet eine zentralisierte Verwaltung für alle Ihre Richtlinien. Sie können Richtlinien von einem einzigen Ort aus erstellen, zuweisen und verwalten.
- Aggregierte Ansicht: Azure Policy bietet eine aggregierte Ansicht des Zustands Ihrer Umgebung über das Compliance-Dashboard, das den Gesamtzustand der Umgebung anzeigt und Ihnen die Möglichkeit gibt, den Zustand einzelner Ressourcen oder Richtlinien zu betrachten.
- Eingebaute Compliance-Standards: Azure Policy bietet integrierte Konformitätsstandards, die für die Prüfung Ihrer Umgebung verwendet werden können. Zu diesen Standards gehören CIS, PCI, HIPAA, ISO, NIST, SOC und mehr.
- Bringen Sie Ressourcen zur Konformität: Azure Policy hilft Ihnen dabei, Ihre Ressourcen durch Massenkorrekturen für bestehende Ressourcen und automatische Korrekturen für neue Ressourcen konform zu machen.
- Benutzerdefinierte Compliance-Standards: Azure Policy bietet die Möglichkeit, benutzerdefinierte Compliance-Standards zu erstellen, die für die Prüfung Ihrer Umgebung verwendet werden können.
- Überprüfen und korrigieren: Azure Policy bietet die Möglichkeit, Ihre Umgebung zu überprüfen und zu bereinigen. Sie können Ihre Umgebung mit dem Effekt
auditüberprüfen. Sie können Ihre Umgebung mit Hilfe desdeployIfNotExistsEffekts wiederherstellen. - Lenken Sie das Benutzerverhalten: Mit Azure Policy können Sie das Nutzerverhalten steuern, indem Sie die Nutzung bestimmter Ressourcentypen einschränken. Sie können zum Beispiel die Nutzung öffentlicher IPs einschränken.
Jetzt wissen wir, warum wir Azure Policy verwenden sollten. Werfen wir einen Blick auf einige der realen Szenarien, die mit Azure Policy gelöst werden können:
- Beschränkung des Standorts der Ressourcen , d.h. alle Ressourcen sollten in West- oder Nordeuropa eingesetzt werden
- Erzwingen der Markierung von Ressourcen , d.h. alle Ressourcen sollten eine Kostenstellenmarkierung haben
- Lenken Sie das Benutzerverhalten, indem Sie die Nutzung bestimmter Ressourcentypen oder SKUs einschränken , z.B. keine Nutzung öffentlicher IPs, Verweigerung der Erstellung von GPU-VMs
- Erzwingen der Konfiguration bestimmter Ressourcenkonfigurationen , z.B. Soft Delete bei Schlüsseltresoren oder Verschlüsselung bei Speicherkonten
- Konfigurieren Sie die Einstellungen für die private DNS-Zone automatisch auf privaten Endpunkten , d.h. konfigurieren Sie die Einstellungen für die private DNS-Zone auf privaten Endpunkten, um die private DNS-Zone zu verwenden
- Erzwingen Sie die Benennung von Ressourcen für Ressourcengruppen , d.h. alle Ressourcengruppen sollten mit rg- beginnen.
Wie verwende ich die Azure-Richtlinie?
Zunächst beginnen Sie mit einer Richtliniendefinition, die die auszuführende Logik vorgibt. Dies kann entweder eine integrierte oder eine benutzerdefinierte Richtlinie sein. Integrierte Richtlinien werden für die Root Tenant Group bereitgestellt und sind daher überall in Ihrer Verwaltungsgruppe und Subscription-Hierarchie verfügbar. Benutzerdefinierte Richtlinien werden für einen bestimmten Bereich bereitgestellt und sind daher nur in diesem Bereich oder einem untergeordneten Bereich verfügbar. Die Bereitstellung einer Richtliniendefinition ist nichts anderes als die Bereitstellung der Richtliniendefinition für die Verwendung.
Um die Logik einer Richtliniendefinition auf einen bestimmten Bereich anzuwenden, kann es sich um den Bereich handeln, in dem die Richtliniendefinition bereitgestellt wurde, oder um einen der untergeordneten Bereiche in der Hierarchie. Sie müssen eine Richtlinienzuweisung erstellen. Eine Richtlinienzuweisung ist die eigentliche Zuweisung der Richtliniendefinition zu einem Bereich. Bei der Richtlinienzuweisung werden die Ressourcen im Bereich anhand der Richtliniendefinition bewertet. Die Richtlinienzuweisung zeigt auch die Konformität der Ressourcen im Bereich an.
Aber was ist, wenn ich mehrere Richtliniendefinitionen kombinieren und sie als Teil einer einzigen Richtlinie zuweisen möchte? An dieser Stelle kommen Richtlinieninitiativen ins Spiel. Richtlinieninitiativen sind eine Sammlung von einer oder mehreren Richtliniendefinitionen. Wie Richtliniendefinitionen werden sie in einem bestimmten Bereich eingesetzt und können einem Bereich zugewiesen werden. Die Zuweisung einer Richtlinieninitiative ist die gleiche wie die Zuweisung einer Richtliniendefinition.
Abbildung 2: Umfang und Zuweisung von Richtlinien
Politische Definitionen
Eine Richtliniendefinition ist ein JSON-Dokument, das die Logik der Richtlinie definiert. Lassen Sie uns gemeinsam eine Richtliniendefinition erstellen.
- Name: Der Name der Richtliniendefinition.
- Beschreibung: Eine Beschreibung der Definition der Richtlinie.
- PolicyRule: Die Richtlinienregel, die die Logik der Richtliniendefinition definiert.
- Metadaten: Metadaten über die Richtliniendefinition.
- Parameter: Parameter, die in der Richtlinienregel verwendet werden können.
Name
Der Name der Richtliniendefinition. Der Name wird verwendet, um die Richtliniendefinition zu identifizieren. Der Name muss innerhalb des Geltungsbereichs der Richtliniendefinition eindeutig sein.
Beschreibung
Eine Beschreibung der Richtliniendefinition. Die Beschreibung wird zur Beschreibung der Richtliniendefinition verwendet. Die Beschreibung ist optional.
PolicyRule
Richtliniendefinitionen verwenden Richtlinienregeln, um die auszuführende oder zu validierende Logik festzulegen. Diese Regeln werden mithilfe eines Wenn-Dann-Konstrukts erstellt. Der WENN-Teil enthält die zu suchende(n) Ressource(n), der DANN-Teil enthält die zu ergreifende Aktion.
Der IF-Teil der politischen Regeln
Die IF-Teile enthalten mehrere Optionen, um den Geltungsbereich der Richtlinie zu bestimmen. Diese verwenden logische Operatoren, um die Bedingungen zu prüfen. Innerhalb der logischen Operatoren werden die Bedingungen verwendet, um zu bestimmen, ob die Richtlinie den DANN-Teil ausführen soll. Sie können die folgenden Operatoren verwenden:
- nicht - die Bedingungen sollten nicht wahr sein (was das Ergebnis invertiert).
- allOf - jede Bedingung im Block sollte wahr sein.
- anyOf - jede Bedingung im Block sollte wahr sein.
Mit diesen logischen Operatoren sind Sie flexibel, wenn es darum geht, welche Ressourcen in der jeweiligen Richtlinie verwendet werden sollen. Sie können sogar verschachtelte Operatoren verwenden. Die logischen Operatoren verwenden Bedingungen, um zu bestimmen, wann der DANN-Teil der Richtlinie ausgeführt werden soll. Bedingungen werden immer mit einem Feldwert und einer Option beschrieben, die ein wahres oder falsches Ergebnis liefert. Mögliche Optionen sind:
- equals - true, wenn der Feldwert mit dem Wert von equals übereinstimmt.
- notEquals - true, wenn der Feldwert nicht mit dem Wert von notEquals übereinstimmt.
- exists - true, wenn der Feldwert existiert.
- in - true, wenn der Feldwert in der Liste der Werte enthalten ist.
Die Feldwerte können eine Vielzahl von verschiedenen Optionen enthalten. Lassen Sie uns einige der häufig verwendeten Optionen durchgehen:
- Typ gibt den tatsächlichen Ressourcentyp an (z.B. "Microsoft.KeyVault/vaults")
- Ort gibt den Standort der Ressource an (z.B. "WestEuropa")
- Id gibt die tatsächliche Ressourcen-ID einer Azure-Ressource an (siehe Eigenschaften einer Ressource, um die Ressourcen-ID anzuzeigen/zu kopieren)
- Aliase können verwendet werden, um auf eine Eigenschaft eines Ressourcentyps zuzugreifen.
- Und viele mehr .
Der DANN-Teil der Richtlinienregeln
Für den DANN-Teil verwendet Azure Policy einen Effekt, um die Aktion festzulegen, die durchgeführt werden soll, wenn die Bedingungen der Definition oder Initiative nicht erfüllt sind. Es sind acht Arten von Effekten verfügbar:
- Ablehnen stellt sicher, dass die nicht konforme Ressource nicht erstellt oder bereitgestellt werden kann.
- Audit prüft die Konformität der Ressourcen und zeigt den Status im Compliance-Dashboard an.
- DeployIfNotExists stellt die in der Definition angegebene Konfiguration in der Ressource bereit, wenn die Konfiguration nicht existiert.
- AuditIfNotExists prüft die in der Definition angegebene Konfiguration und meldet nur, wenn die Ressourcenkonfiguration nicht existiert.
- Ändern wird verwendet, um Eigenschaften oder Tags eines Abonnements oder einer Ressource während der Erstellung oder Aktualisierung hinzuzufügen, zu aktualisieren oder zu entfernen.
- Anhängen wird verwendet, um der angeforderten Ressource bei der Erstellung oder Aktualisierung weitere Felder hinzuzufügen.
- Manuell ermöglicht es Ihnen, die Konformität von Ressourcen oder Bereichen selbst zu überprüfen.
- Deaktiviert bedeutet, dass die Logik in der Definition effektiv nichts tut und ausgeschaltet ist.
Metadaten
Dies sind Metadaten über die Richtliniendefinition. Die Metadaten werden verwendet, um zusätzliche Informationen über die Richtliniendefinition bereitzustellen. Die Metadaten sind optional. Übliche Metadaten-Eigenschaften sind:
- Kategorie: Die Kategorie der Richtliniendefinition.
- Version: Die Version der Richtliniendefinition.
- Veraltet: Zeigt an, ob die Richtliniendefinition veraltet ist.
- Vorschau: Zeigt an, ob die Richtliniendefinition in der Vorschau ist.
Parameter
Parameter sind optional. Sie können verwendet werden, um die Definition der Richtlinie flexibler zu gestalten. Parameter werden im Abschnitt Parameter der Richtliniendefinition definiert. Parameter werden in der Richtlinienregel mit der folgenden Syntax referenziert: [parameters('parameterName')]. Parameter werden bei der Zuweisung der Richtliniendefinition abgefragt.
Ergebnis
Werfen wir einen Blick auf ein Beispiel für eine Richtliniendefinition. Die folgende Richtliniendefinition wird verwendet, um die Verwendung der Eigenschaft Microsoft.Storage/storageAccounts/networkAcls/defaultAction zu überprüfen. Die Richtliniendefinition trägt den Namen audit-storage-account-network-acl-default-action und hat die folgenden Eigenschaften:
- Beschreibung: Prüfen Sie die Nutzung des Grundstücks
Microsoft.Storage/storageAccounts/networkAcls/defaultAction. - PolicyRule: Wenn die
typeder RessourceMicrosoft.Storage/storageAccountsist und die EigenschaftMicrosoft.Storage/storageAccounts/networkAcls/defaultActionnicht gleichDenyist, dann prüfen Sie die Ressource. - Metadaten: Die Kategorie ist
Storageund die Version ist1.0.0.
{
"properties": {
"displayName": "Audit storage account network ACL default action",
"description": "Audit the use of the Microsoft.Storage/storageAccounts/networkAcls/defaultAction property.",
"mode": "Indexed",
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
},
{
"field": "Microsoft.Storage/storageAccounts/networkAcls/defaultAction",
"notEquals": "Deny"
}
]
},
"then": {
"effect": "audit"
}
},
"metadata": {
"category": "Storage",
"version": "1.0.0"
}
}
}
Beispiele
- Ich möchte nur die Bereitstellung von Ressourcen in der Region Westeuropa zulassen. Dies kann mit dem DENY-Effekt erreicht werden, der die Bedingung prüft und die Bereitstellung verweigert, wenn die Bedingung als wahr zurückgegeben wird.
"policyRule": { "if": { "not": { "field": "location", "equals": "WestEurope" } }, "then": { "effect": "Deny" } } - Ich möchte bei der Erstellung von Schlüsseltresoren immer ein softes Löschen hinzufügen. Für dieses Szenario können wir APPEND als Effekt verwenden, d.h. wir prüfen, ob die Bedingung erfüllt ist, und fügen dann eine bestimmte Konfiguration/Eigenschaft hinzu. In diesem Fall prüfen wir, ob der Typ der Ressource ein Key Vault ist und ob die Option Soft Delete nicht erfüllt ist. Wenn die Bedingungen überprüft wurden, fügen wir DANN die Option zum sanften Löschen an.
"policyRule": { "if": { "anyOf": [ { "allOf": [ { "field": "type", "equals": "Microsoft.KeyVault/vaults" }, { "field": "Microsoft.KeyVault/vaults/enableSoftDelete", "notEquals": true } ] } ] }, "then": { "effect": "append", "details": [ { "field": "Microsoft.KeyVault/vaults/enableSoftDelete", "value": true } ] } }
Wie kann ich Richtliniendefinitionen verteilen?
Wie immer bei Cloud-Ressourcen ist die bevorzugte Art der Bereitstellung die Verwendung von Infrastructure as Code (IaC). Azure Policy-Definitionen können mit ARM-Vorlagen, Azure CLI, Bicep, Terraform oder PowerShell bereitgestellt werden. Das folgende Beispiel zeigt, wie Sie die Richtliniendefinition mit einem PowerShell-Skript bereitstellen:
New-AzPolicyDefinition -Name 'audit-storage-account-network-acl-default-action' -DisplayName 'Audit storage account network ACL default action' -Description 'Audit the use of the Microsoft.Storage/storageAccounts/networkAcls/defaultAction property.' -Policy 'audit-storage-account-network-acl-default-action.json' -Mode All
Wichtig
zu beachten ist, dass das PowerShell-Cmdlet das Argument -Policy verwendet, um die Richtlinienregel zu definieren. Alle wichtigen Teile der Richtliniendefinition werden in dem Cmdlet definiert.
Datei: audit-storage-account-network-acl-default-action.json:
{
"if": {
"anyOf": [
{
"allOf": [
{
"field": "type",
"equals": "Microsoft.KeyVault/vaults"
},
{
"field": "Microsoft.KeyVault/vaults/enableSoftDelete",
"notEquals": true
}
]
}
]
},
"then": {
"effect": "append",
"details": [
{
"field": "Microsoft.KeyVault/vaults/enableSoftDelete",
"value": true
}
]
}
}
Politische Initiativen
Eine Richtlinieninitiative ist eine Sammlung von einer oder mehreren Richtliniendefinitionen. Richtlinieninitiativen werden verwendet, um Richtliniendefinitionen zusammenzufassen. Dies kann nützlich sein, wenn Sie einem Bereich mehrere Richtliniendefinitionen zuweisen möchten. Anstatt jede Richtliniendefinition einzeln zuzuweisen, können Sie die Richtlinieninitiative zuweisen. Die Richtlinieninitiative wird dann alle Richtliniendefinitionen zuweisen, die Teil der Richtlinieninitiative sind. Lassen Sie uns gemeinsam eine Richtlinieninitiative erstellen.
{
"properties": {
"displayName": "Audit storage account network ACL",
"description": "Audit the use of the Microsoft.Storage/storageAccounts/networkAcls/defaultAction property and the Microsoft.Storage/storageAccounts/networkAcls/bypass property.",
"metadata": {
"category": "Storage",
"version": "1.0.0"
},
"policyDefinitions": [
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/audit-storage-account-network-acl-default-action",
"parameters": {}
},
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/audit-storage-account-network-acl-bypass",
"parameters": {}
}
]
}
}
Wie kann ich politische Initiativen umsetzen?
Wie immer bei Cloud-Ressourcen ist die bevorzugte Art der Bereitstellung die Verwendung von Infrastructure as Code (IaC). Azure Policy-Initiativen können mit ARM-Vorlagen, Bicep, Terraform oder PowerShell bereitgestellt werden. Das folgende Beispiel zeigt, wie Sie die Richtlinieninitiative mit Powershell bereitstellen:
# Create a new policy initiative using the policy definitions supplied in the audit-storage-account-network-acl.json file
New-AzPolicySetDefinition -Name 'audit-storage-account-network-acl' -PolicyDefinition 'audit-storage-account-network-acl.json'
Datei: audit-storage-account-network-acl.json :
[
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/audit-storage-account-network-acl-default-action",
"parameters": {}
},
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/audit-storage-account-network-acl-bypass",
"parameters": {}
}
]
Politik-Zuweisungen
Eine Richtlinienzuweisung ist die tatsächliche Zuweisung der Richtliniendefinition oder Richtlinieninitiative zu einem Bereich. Bei der Richtlinienzuweisung werden die Ressourcen im Geltungsbereich anhand der Richtliniendefinition oder Richtlinieninitiative bewertet. Die Richtlinienzuweisung zeigt auch die Konformität der Ressourcen im Bereich an. Lassen Sie uns gemeinsam eine Richtlinienzuweisung mit PowerShell erstellen.
# Get the subscription data
$Subscription = Get-AzSubscription -SubscriptionName 'Subscription01'
# Get the policy definition data
$Policy = Get-AzPolicyDefinition -Name 'audit-storage-account-network-acl-default-action'
# Create the policy assignment using the retrieved subscription and policy definition data
New-AzPolicyAssignment -Name 'audit-storage-account-network-assignment' -PolicyDefinition $Policy -Scope "/subscriptions/$($Subscription.Id)"
Wie kann ich sehen, ob ich meine Ressourcen einhalte?
Nachdem Sie Ihre Richtlinien erstellt und zugewiesen haben, können Sie die Konformität Ihrer Ressourcen einsehen. Das Compliance-Dashboard bietet einen Überblick über den Zustand Ihrer Umgebung. Es zeigt den Gesamtzustand der Umgebung an und ermöglicht es Ihnen, den Zustand einzelner Ressourcen oder Richtlinien einzusehen. Das Compliance-Dashboard finden Sie im Azure-Portal unter Alle Services > Policy > Compliance.
Einhaltung gesetzlicher Vorschriften
Um die Einhaltung gesetzlicher Vorschriften anzuzeigen, verwendet Microsoft Azure auch Azure Policy, um über den Stand der Einhaltung der von Ihnen zugewiesenen Standards für die Einhaltung gesetzlicher Vorschriften zu berichten. Wenn Sie einen Standard für die Einhaltung von Vorschriften auswählen, erstellt Azure Policy automatisch eine Richtlinienzuweisung, um den Konformitätsstatus des Standards für die Einhaltung von Vorschriften zu überprüfen. Azure Defender for Cloud nutzt auch die Eingaben von Azure Policy, um Empfehlungen im Azure-Portal anzuzeigen.
Um den Konformitätsstatus der von Ihnen zugewiesenen Standards für die Einhaltung von Vorschriften anzuzeigen, können Sie das Dashboard für die Einhaltung von Vorschriften verwenden. Das Dashboard zur Einhaltung gesetzlicher Bestimmungen finden Sie im Azure-Portal unter Alle Dienste > Microsoft Defender for Cloud > Einhaltung gesetzlicher Bestimmungen.
Abbildung 4: Dashboard zur Einhaltung gesetzlicher Vorschriften
Wie funktioniert die Abhilfe?
Die Sanierung ist der Prozess, bei dem eine nicht konforme Ressource in die Konformität gebracht wird. Wenn die Behebung manuell erfolgt, können Sie die Behebung über das Compliance-Dashboard auslösen. Wenn die Behebung automatisch erfolgen soll, was nur möglich ist, wenn Sie die Effekte DeployIfNotExists oder Modify verwenden, können Sie die Richtlinie so konfigurieren, dass nicht konforme Ressourcen automatisch behoben werden. Damit die Richtlinie automatisch Abhilfe schaffen kann, verwendet sie eine verwaltete Identität. Diese verwaltete Identität sollte in der Richtlinienzuweisung angegeben werden. Um die Abhilfe zu nutzen, müssen Sie in der Richtliniendefinition angeben, welche Rolle die verwaltete Identität auf der Ressource haben soll. Die Richtlinienzuweisung startet die Bereitstellung, um die Abhilfemaßnahme durchzuführen. Wenn Sie den Effekt DeployIfNotExists verwenden, wird die Bereitstellung im Bereitstellungs-Dashboard angezeigt, so dass Sie die Bereitstellung verfolgen und Fehler beheben können.
Automatische Abhilfe
Lassen Sie uns anhand einer integrierten Richtliniendefinition zeigen, wie die automatische Wiederherstellung funktioniert. Die integrierte Richtliniendefinition heißt Add or replace a tag on resource groups und hat die folgende PolicyRule-Logik:
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"field": "[concat('tags[', parameters('tagName'), ']')]",
"notEquals": "[parameters('tagValue')]"
}
]
},
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"operations": [
{
"operation": "addOrReplace",
"field": "[concat('tags[', parameters('tagName'), ']')]",
"value": "[parameters('tagValue')]"
}
]
}
}
}
Die Richtliniendefinition prüft, ob der Ressourcentyp eine Ressourcengruppe ist und ob das Tag nicht dem angegebenen Wert entspricht. Wenn die Bedingungen erfüllt sind, ändert die Richtlinie die Ressourcengruppe und fügt das angegebene Tag hinzu oder ersetzt es.
Wie bereits beschrieben, sollten wir eine Richtlinienzuweisung erstellen, um diese Logik für einen bestimmten Bereich zu aktivieren. Lassen Sie uns gemeinsam eine Richtlinienzuweisung mithilfe der PowerShell erstellen.
# Get the subscription data
$Subscription = Get-AzSubscription -SubscriptionName 'Subscription01'
# Get the policy definition data, using a Where-Object, since built-in policies are named with a GUID
$Policy = Get-AzPolicyDefinition | Where-Object {$_.Properties.DisplayName -eq 'Add or replace a tag on resource groups'}
# Define the parameters for the policy assignment to pass to the -PolicyParameterObject parameter
$parameters = @{'tagName'='Environment';'tagValue'='Production'}
# Create the policy assignment using the retrieved subscription and policy definition data
New-AzPolicyAssignment -Name 'add-tag-resource-group' -PolicyDefinition $Policy -Scope "/subscriptions/$($Subscription.Id)" -IdentityType 'SystemAssigned' -Location 'WestEurope' -PolicyParameterObject $parameters
Abbildung 5: Richtlinienzuweisung - Wiedergutmachung
Die Richtlinienzuweisung wird die Ressourcengruppe automatisch korrigieren und das angegebene Tag hinzufügen oder ersetzen. Die Bereitstellung wird im Bereitstellungs-Dashboard angezeigt, so dass Sie die Bereitstellung verfolgen und Fehler beheben können.
Was passiert also, wenn Sie eine Ressourcengruppe ohne das angegebene Tag erstellen? Lassen Sie es uns ausprobieren!
# Set the subscription context
Set-AzContext -Subscription 'Subscription01'
# Create a new resource group without the specified tag
New-AzResourceGroup -Name 'rg-remediation-test' -Location 'WestEurope'
Abbildung 6: Ergebnis der Ressourcengruppe
Wie Sie sehen können, wird die Ressourcengruppe ohne das angegebene Tag erstellt und die Ausgabe zeigt bereits, dass die Richtlinienzuweisung die Ressourcengruppe wiederhergestellt hat. Wenn wir die Ressourcengruppe überprüfen, können wir sehen, dass das Tag hinzugefügt wurde.
Abbildung 7: Tag vorhanden
Manuelle Abhilfe
Nehmen wir das gleiche Beispiel wie bei der automatischen Korrektur, aber wir haben jetzt die Richtlinie so geändert, dass die TagName:Demo mit einer TagValue:ManualRemediation gesucht wird.
# Get the subscription data
$Subscription = Get-AzSubscription -SubscriptionName 'Subscription01'
# Get the policy definition data, using a Where-Object, since built-in policies are named with a GUID
$Policy = Get-AzPolicyDefinition | Where-Object {$_.Properties.DisplayName -eq 'Add or replace a tag on resource groups'}
# Define the parameters for the policy assignment to pass to the -PolicyParameterObject parameter
$parameters = @{'tagName'='Demo';'tagValue'='ManualRemediation'}
# Create the policy assignment using the retrieved subscription and policy definition data
New-AzPolicyAssignment -Name 'add-tag-resource-group' -PolicyDefinition $Policy -Scope "/subscriptions/$($Subscription.Id)" -IdentityType 'SystemAssigned' -Location 'WestEurope' -PolicyParameterObject $parameters
Abbildung 8: Richtlinienzuweisung - Nicht konform
Da die Richtlinie nicht konform ist, können wir die Ressourcengruppe manuell sanieren, indem wir auf der Zuweisungsseite des Abonnements auf die Schaltfläche Sanierungsaufgabe erstellen klicken.
Abbildung 9: Manuelle Eingabe für die Behebung
Nachdem die Sanierungsaufgabe erstellt wurde, können wir die Aufgabe in der Übersicht der Sanierungsaufgaben sehen. Und Sie sollten sogar eine abgeschlossene Abhilfemaßnahme sehen.
Abbildung 10: Abgeschlossene Sanierungsmaßnahmen
Ausnahmeregelungen
Manchmal möchten Sie bestimmte Ressourcen von der Bewertung durch eine Richtlinie ausschließen. Dies können Sie mit Hilfe von Ausnahmen erreichen. Ausnahmen können für Richtlinienzuweisungen und für einzelne Ressourcen gemacht werden. Ausnahmen können für einen bestimmten Zeitraum oder auf unbestimmte Zeit gemacht werden. Ausnahmen können aus den folgenden Gründen gemacht werden:
- Milderung: Die Ressource ist bereits gemildert.
- Falsch positiv: Die Ressource wird als nicht konform bewertet, obwohl sie konform ist.
- Geschäftliche Rechtfertigung: Die Ressource wird als nicht konform bewertet, aber sie ist aus geschäftlichen Gründen konform.
- Verzicht: Die Ressource wird als nicht konform bewertet, aber sie ist aus rechtlichen Gründen konform.
Wie kann ich eine Ausnahmeregelung erstellen?
Ausnahmen können über das Azure-Portal, PowerShell, Azure CLI oder REST API erstellt werden. Lassen Sie uns eine Ausnahme mit PowerShell erstellen.
# Get the subscription data
$Subscription = Get-AzSubscription -SubscriptionName 'Subscription01'
# Get the policy assignment data
$PolicyAssignment = Get-AzPolicyAssignment -Name 'add-tag-resource-group' -Scope "/subscriptions/$($Subscription.Id)"
# Create the exemption
New-AzPolicyExemption -Name 'exemption-add-tag-resource-group' -PolicyAssignment $PolicyAssignment -ExemptionCategory 'Waiver' -ExpiresOn (Get-Date).AddDays(7)
Abbildung 11: Freistellung erstellt
Was nun?
Jetzt, da Sie wissen, was Azure Policy ist und wie man sie verwendet, können Sie sie in Ihrer eigenen Umgebung einsetzen. Beginnen Sie mit den integrierten Richtlinien und sehen Sie, ob sie Ihren Anforderungen entsprechen. Sollte dies nicht der Fall sein, können Sie jederzeit eigene Richtlinien erstellen.
Wenn Sie alles, was mit Richtlinien zu tun hat, im Azure-Portal einsehen möchten, gehen Sie einfach auf Alle Dienste > Richtlinie. Hier können Sie das Compliance Dashboard, Richtliniendefinitionen, Richtlinieninitiativen, Richtlinienzuweisungen und Ausnahmen einsehen.
Wenn Sie wissen möchten, welche Azure-Richtlinien integriert sind, ist AzAdvertizer eine großartige Ressource, um alle integrierten Richtlinien anzuzeigen.
Verfasst von

Patrick de Kruijf
Contact