Dela via


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

Om du vill förhindra installationen 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 öppnade 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 reglerna 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

I det här exemplet tilldelas principen till en resursgrupp med hjälp av az policy assignment create. En virtuell dator som skapats i resursgruppen myResourceGroup kan inte installera Linux VM-åtkomst eller anpassade skripttillägg för Linux.

Anteckning

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

Anteckning

Ersätt myResourceGroup- myVM och myImage -värden i enlighet med detta.

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

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.