Použití Azure Policy k omezení instalace rozšíření na virtuálních počítačích s Linuxem

Pokud chcete zabránit instalaci určitých rozšíření na virtuální počítače s Linuxem, můžete pomocí Azure CLI vytvořit definici Azure Policy a omezit tak rozšíření pro virtuální počítače v rámci skupiny prostředků. Základní informace o rozšířeních virtuálních počítačů Azure pro Linux najdete v tématu Rozšíření a funkce virtuálních počítačů pro Linux.

Tento kurz používá rozhraní příkazového řádku v rámci Azure Cloud Shell, které se neustále aktualizuje na nejnovější verzi. Pokud chcete spustit Azure CLI místně, musíte nainstalovat verzi 2.0.26 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

Vytvoření souboru pravidel

Pokud chcete omezit dostupná rozšíření, musíte vytvořit pravidlo pro identifikaci rozšíření.

Tento příklad ukazuje, jak zakázat instalaci nepovolovaných rozšíření virtuálních počítačů definováním souboru pravidel v Azure Cloud Shell. Pokud ale pracujete v Azure CLI místně, můžete vytvořit místní soubor a nahradit cestu (~/clouddrive) cestou k souboru v místním systému souborů.

  1. V Bash Cloud Shell vytvořit soubor ~/clouddrive/azurepolicy.rules.json pomocí libovolného textového editoru.

  2. Zkopírujte a vložte následující .json obsah do nového souboru a uložte ho.

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

Vytvoření souboru parametrů

Potřebujete také soubor parametrů , který vytvoří strukturu, kterou můžete použít k předání seznamu neautorizovaných rozšíření.

Tento příklad ukazuje, jak vytvořit soubor parametrů pro virtuální počítače s Linuxem v Cloud Shell.

  1. V Cloud Shell Bash otevřené dříve vytvořte soubor ~/clouddrive/azurepolicy.parameters.json pomocí libovolného textového editoru.

  2. Zkopírujte a vložte následující .json obsah do nového souboru a uložte ho.

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

Vytvoření zásady

Definice zásady je objekt, který slouží k uložení konfigurace, kterou chcete použít. Definice zásad používá k definování zásad soubory pravidel a parametrů. Vytvořte definici zásady pomocí příkazu az policy definition create.

V tomto příkladu jsou pravidla a parametry soubory, které jste vytvořili a uložili jako soubory .json v Cloud Shell nebo v místním systému souborů.

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

Přiřazení zásady

Tento příklad přiřadí zásadu ke skupině prostředků pomocí az policy assignment create. Žádný virtuální počítač vytvořený ve skupině prostředků myResourceGroup nebude moct nainstalovat přístup k virtuálním počítačům s Linuxem ani rozšíření vlastních skriptů pro Linux.

Poznámka

Před přiřazením zásad musí skupina prostředků existovat.

Použijte az account list k vyhledání ID předplatného a nahrazení zástupného symbolu v následujícím příkladu:

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

Testování zásad

Otestujte zásadu vytvořením nového virtuálního počítače a přidáním nového uživatele.

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

Poznámka

myVM Nahraďte myResourceGrouphodnoty a myImage odpovídajícím způsobem.

Zkuste vytvořit nového uživatele s názvem myNewUser pomocí rozšíření VM Access.

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

Odebrání přiřazení

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

Odebrání zásady

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

Další kroky

Další informace najdete v tématu Azure Policy.