Share via


Verwenden von Azure Policy, um die Installation von Erweiterungen auf virtuellen Linux-Computern einzuschränken

Wenn Sie die Verwendung oder Installation bestimmter Erweiterungen auf Ihren Linux-VMs verhindern möchten, können Sie mithilfe der Azure CLI eine Azure Policy-Definition zum Einschränken von Erweiterungen für VMs in einer Ressourcengruppe erstellen. Informationen zu den Grundlagen von Azure VM-Erweiterungen für Linux finden Sie unter Informationen zu Erweiterungen und Features für virtuelle Computer für Linux.

Dieses Tutorial verwendet die CLI innerhalb der Azure Cloud Shell, die ständig auf die neueste Version aktualisiert wird. Wenn Sie die Azure CLI lokal ausführen möchten, müssen Sie Version 2.0.26 oder höher installieren. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.

Erstellen einer Regeldatei

Um einzuschränken, welche Erweiterungen verfügbar sind, benötigen Sie eine Regel zum Identifizieren der Erweiterung.

In diesem Beispiel wird veranschaulicht, wie die Installation nicht zulässiger VM-Erweiterungen verweigert wird, indem eine Regeldatei in Azure Cloud Shell definiert wird. Wenn Sie lokal in der Azure CLI arbeiten, können Sie auch eine lokale Datei erstellen und den Pfad (~/clouddrive) durch den Pfad zu der Datei in Ihrem lokalen Dateisystem ersetzen.

  1. Erstellen Sie in einer Bash-Cloud Shell die Datei ~/clouddrive/azurepolicy.rules.json mit einem beliebigen Text-Editor.

  2. Kopieren Sie die folgenden .json-Inhalte in die neue Datei, und speichern Sie sie.

{
	"if": {
		"allOf": [
			{
				"field": "type",
				"equals": "Microsoft.Compute/virtualMachines/extensions"
			},
			{
				"field": "Microsoft.Compute/virtualMachines/extensions/publisher",
				"equals": "Microsoft.OSTCExtensions"
			},
			{
				"field": "Microsoft.Compute/virtualMachines/extensions/type",
				"in": "[parameters('notAllowedExtensions')]"
			}
		]
	},
	"then": {
		"effect": "deny"
	}
}

Erstellen einer Parameterdatei

Sie benötigen außerdem eine Parameterdatei, die eine Struktur für die Übergabe einer Liste der zu blockierenden Erweiterungen für Sie erstellt.

In diesem Beispiel wird gezeigt, wie Sie eine Parameterdatei für Linux-VMs in Cloud Shell erstellen.

  1. Erstellen Sie in der zuvor geöffneten Bash-Cloud Shell die Datei „~/clouddrive/azurepolicy.parameters.json“ mit einem beliebigen Text-Editor.

  2. Kopieren Sie die folgenden .json-Inhalte in die neue Datei, und speichern Sie sie.

{
	"notAllowedExtensions": {
		"type": "Array",
		"metadata": {
			"description": "The list of extensions that will be denied. Example: CustomScriptForLinux, VMAccessForLinux etc.",
			"displayName": "Denied extension"
		}
	}
}

Erstellen der Richtlinie

Eine Richtliniendefinition ist ein Objekt zur Speicherung der Konfiguration, die Sie verwenden möchten. Die Richtliniendefinition verwendet die Regeln und Parameterdateien zum Definieren der Richtlinie. Erstellen Sie die Richtliniendefinition mit az policy definition create.

In diesem Beispiel sind die Regeln und Parameter die Dateien, die Sie erstellt und als JSON-Dateien in Cloud Shell oder in Ihrem lokalen Dateisystem gespeichert haben.

az policy definition create \
   --name 'not-allowed-vmextension-linux' \
   --display-name 'Block VM Extensions' \
   --description 'This policy governs which VM extensions that are blocked.' \
   --rules '~/clouddrive/azurepolicy.rules.json' \
   --params '~/clouddrive/azurepolicy.parameters.json' \
   --mode All

Zuweisen der Richtlinie

In diesem Beispiel wird die Richtlinie mit az policy assignment create einer Ressourcengruppe zugewiesen. Jede VM, die in der Ressourcengruppe myResourceGroup erstellt wird, kann weder die Linux VM Access- oder Custom Script-Erweiterungen für Linux installieren.

Hinweis

Die Ressourcengruppe muss vorhanden sein, damit Sie die Richtlinie zuweisen können.

Verwenden Sie az account list, um Ihre Abonnement-ID zu ermitteln, und ersetzen Sie den Platzhalter im folgenden Beispiel:

az policy assignment create \
   --name 'not-allowed-vmextension-linux' \
   --scope /subscriptions/<subscription Id>/resourceGroups/myResourceGroup \
   --policy "not-allowed-vmextension-linux" \
   --params '{
		"notAllowedExtensions": {
			"value": [
				"VMAccessForLinux",
				"CustomScriptForLinux"
			]
		}
	}'

Testen der Richtlinie

Testen Sie die Richtlinie, indem Sie eine neue VM erstellen und einen neuen Benutzer hinzufügen.

az vm create \
    --resource-group myResourceGroup \
	--name myVM \
	--image myImage \
	--generate-ssh-keys

Hinweis

Ersetzen Sie die Werte myResourceGroup, myVM und myImage entsprechend.

Versuchen Sie, einen neuen Benutzer mit dem Namen myNewUser mit der VM Access-Erweiterung zu erstellen.

az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username myNewUser \
  --password 'mynewuserpwd123!'

Entfernen der Zuweisung

az policy assignment delete --name 'not-allowed-vmextension-linux' --resource-group myResourceGroup

Entfernen der Richtlinie

az policy definition delete --name 'not-allowed-vmextension-linux'

Nächste Schritte

Weitere Informationen finden Sie unter Was ist Azure Policy?.