Delen via


Azure Policy gebruiken om de installatie van extensies op Linux-VM's te beperken

Als u de installatie van bepaalde extensies op uw Linux-VM's wilt voorkomen, kunt u een Azure Policy-definitie maken met behulp van de Azure CLI om extensies voor VM's binnen een resourcegroep te beperken. Zie extensies en functies voor virtuele machines voor Linux voor meer informatie over de basisbeginselen van Azure VM-extensies voor Linux.

In deze zelfstudie wordt gebruikgemaakt van de CLI in de Azure Cloud Shell, die voortdurend wordt bijgewerkt naar de nieuwste versie. Als u de Azure CLI lokaal wilt uitvoeren, moet u versie 2.0.26 of hoger installeren. Voer az --version uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

Een regelbestand maken

Als u wilt beperken welke extensies beschikbaar zijn, moet u een regel maken om de extensie te identificeren.

In dit voorbeeld ziet u hoe u de installatie van niet-toegestane VM-extensies kunt weigeren door een regelbestand in Azure Cloud Shell te definiƫren. Als u echter lokaal in Azure CLI werkt, kunt u een lokaal bestand maken en het pad (~/clouddrive) vervangen door het pad naar het bestand op uw lokale bestandssysteem.

  1. Maak in een bash Cloud Shell het bestand ~/clouddrive/azurepolicy.rules.json met behulp van een teksteditor.

  2. Kopieer en plak de volgende .json inhoud in het nieuwe bestand en sla deze op.

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

Een parameterbestand maken

U hebt ook een parameterbestand nodig waarmee u een structuur kunt maken die u kunt gebruiken voor het doorgeven van een lijst met de niet-geautoriseerde extensies.

In dit voorbeeld ziet u hoe u een parameterbestand maakt voor Linux-VM's in Cloud Shell.

  1. Maak in de bash Cloud Shell die eerder is geopend het bestand ~/clouddrive/azurepolicy.parameters.json met behulp van een teksteditor.

  2. Kopieer en plak de volgende .json inhoud in het nieuwe bestand en sla deze op.

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

Maak het beleid

Een beleidsdefinitie is een object dat wordt gebruikt voor het opslaan van de configuratie die u wilt gebruiken. De beleidsdefinitie maakt gebruik van de regels en parametersbestanden om het beleid te definiƫren. Maak de beleidsdefinitie met behulp van az policy definition create.

In dit voorbeeld zijn de regels en parameters de bestanden die u hebt gemaakt en opgeslagen als .json bestanden in Cloud Shell of in uw lokale bestandssysteem.

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

Het beleid toewijzen

In dit voorbeeld wordt het beleid toegewezen aan een resourcegroep met behulp van az policy assignment create. Virtuele machines die zijn gemaakt in de resourcegroep myResourceGroup , kunnen de Linux-VM-toegang of de aangepaste scriptextensies voor Linux niet installeren.

Notitie

De resourcegroep moet bestaan voordat u het beleid kunt toewijzen.

Gebruik az account list dit om uw abonnements-id te vinden en vervang de tijdelijke aanduiding in het volgende voorbeeld:

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

Het beleid testen

Test het beleid door een nieuwe VIRTUELE machine te maken en een nieuwe gebruiker toe te voegen.

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

Notitie

Vervang myResourceGroupen myVM myImage waarden dienovereenkomstig.

Maak een nieuwe gebruiker met de naam myNewUser met behulp van de VM Access-extensie.

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

De toewijzing verwijderen

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

Het beleid verwijderen

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

Volgende stappen

Zie Azure Policy voor meer informatie.