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.
Erstellen Sie in einer Bash-Cloud Shell die Datei
~/clouddrive/azurepolicy.rules.json
mit einem beliebigen Text-Editor.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.
Erstellen Sie in der zuvor geöffneten Bash-Cloud Shell die Datei „~/clouddrive/azurepolicy.parameters.json“ mit einem beliebigen Text-Editor.
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?.