Dela via


Använda Azure Policy för att begränsa installationen av tillägg på virtuella Linux-datorer

Om du vill förhindra installation av vissa tillägg på dina virtuella Linux-datorer kan du skapa en Azure Policy-definition med hjälp av Azure CLI för att begränsa tillägg för virtuella datorer i en resursgrupp. Mer information om grunderna i Azure VM-tillägg för Linux finns i Tillägg och funktioner för virtuella datorer för Linux.

I den här självstudien används CLI i Azure Cloud Shell, som ständigt uppdateras till den senaste versionen. Om du vill köra Azure CLI lokalt måste du installera version 2.0.26 eller senare. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.

Skapa en regelfil

För att begränsa vilka tillägg som är tillgängliga måste du skapa en regel för att identifiera tillägget.

Det här exemplet visar hur du nekar installationen av otillåtna VM-tillägg genom att definiera en regelfil i Azure Cloud Shell. Men om du arbetar i Azure CLI lokalt kan du skapa en lokal fil och ersätta sökvägen (~/clouddrive) med sökvägen till filen i det lokala filsystemet.

  1. I en bash Cloud Shell skapa filen ~/clouddrive/azurepolicy.rules.json med valfri textredigerare.

  2. Kopiera och klistra in följande .json innehåll i den nya filen och spara det.

{
	"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"
	}
}

Skapa en parameterfil

Du behöver också en parameterfil som skapar en struktur som du kan använda för att skicka in en lista över otillåtna tillägg.

Det här exemplet visar hur du skapar en parameterfil för virtuella Linux-datorer i Cloud Shell.

  1. I bash Cloud Shell som öppnades tidigare skapar du filen ~/clouddrive/azurepolicy.parameters.json med valfri textredigerare.

  2. Kopiera och klistra in följande .json innehåll i den nya filen och spara det.

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

Skapa principen

En principdefinition är ett objekt som används för att lagra den konfiguration som du vill använda. Principdefinitionen använder regel- och parameterfilerna för att definiera principen. Skapa principdefinitionen med az policy definition create.

I det här exemplet är reglerna och parametrarna de filer som du skapade och lagrade som .json filer i Cloud Shell eller i ditt lokala filsystem.

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

Tilldela principen

Det här exemplet tilldelar principen till en resursgrupp med hjälp av az policy assignment create. En virtuell dator som skapats i resursgruppen myResourceGroup kan inte installera åtkomsten till den virtuella Linux-datorn eller tilläggen för anpassade skript för Linux.

Kommentar

Resursgruppen måste finnas innan du kan tilldela principen.

Använd az account list för att hitta ditt prenumerations-ID och ersätta platshållaren i följande exempel:

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"
			]
		}
	}'

Testa principen

Testa principen genom att skapa en ny virtuell dator och lägga till en ny användare.

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

Kommentar

Ersätt myResourceGroupoch myVM myImage värden i enlighet med detta.

Försök att skapa en ny användare med namnet myNewUser med hjälp av tillägget för VM-åtkomst.

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

Ta bort tilldelningen

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

Ta bort principen

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

Nästa steg

Mer information finns i Azure Policy.