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 vytvořit definici služby Azure Policy pomocí Azure CLI a omezit 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.
V tomto kurzu se používá rozhraní příkazového řádku v Azure Cloud Shellu, které se neustále aktualizuje na nejnovější verzi. Pokud chcete azure CLI spustit 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, jaká rozšíření jsou k dispozici, musíte vytvořit pravidlo pro identifikaci rozšíření.
Tento příklad ukazuje, jak zakázat instalaci zakázaných rozšíření virtuálních počítačů definováním souboru pravidel v Azure Cloud Shellu. 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ů.
V prostředí Bash Cloud Shell vytvořte soubor
~/clouddrive/azurepolicy.rules.json
pomocí libovolného textového editoru.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ává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 Shellu.
V prostředí bash Cloud Shell, který jste otevřeli dříve, vytvořte soubor ~/clouddrive/azurepolicy.parameters.json pomocí libovolného textového editoru.
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ásad
Definice zásady je objekt sloužící k uložení konfigurace, kterou chcete použít. Definice zásady používá k definování zásady pravidla a soubory 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 .json soubory v Cloud Shellu 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ásad
Tento příklad přiřadí zásadu ke skupině prostředků pomocí az policy assignment create
. Jakýkoli virtuální počítač vytvořený ve skupině prostředků myResourceGroup nebude moct nainstalovat přístup k virtuálnímu počítači s Linuxem nebo rozšíření vlastních skriptů pro Linux.
Poznámka:
Skupina prostředků musí existovat, abyste mohli zásadu přiřadit.
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 myResourceGroup
hodnoty odpovídajícím myImage
způsobem.
Zkuste vytvořit nového uživatele s názvem myNewUser pomocí rozšíření přístupu k virtuálnímu počítači.
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.