Używanie usługi Azure Policy do ograniczania instalacji rozszerzeń na maszynach wirtualnych z systemem Linux
Jeśli chcesz zapobiec instalacji niektórych rozszerzeń na maszynach wirtualnych z systemem Linux, możesz utworzyć definicję usługi Azure Policy przy użyciu interfejsu wiersza polecenia platformy Azure, aby ograniczyć rozszerzenia dla maszyn wirtualnych w grupie zasobów. Aby poznać podstawy rozszerzeń maszyn wirtualnych platformy Azure dla systemu Linux, zobacz Virtual machine extensions and features for Linux (Rozszerzenia i funkcje maszyn wirtualnych dla systemu Linux).
W tym samouczku jest używany interfejs wiersza polecenia w usłudze Azure Cloud Shell, który jest stale aktualizowany do najnowszej wersji. Jeśli chcesz uruchomić interfejs wiersza polecenia platformy Azure lokalnie, musisz zainstalować wersję 2.0.26 lub nowszą. Uruchom polecenie az --version
, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Tworzenie pliku reguł
Aby ograniczyć dostępne rozszerzenia, należy utworzyć regułę w celu zidentyfikowania rozszerzenia.
W tym przykładzie pokazano, jak odmówić instalacji niedozwolonych rozszerzeń maszyn wirtualnych przez zdefiniowanie pliku reguł w usłudze Azure Cloud Shell. Jeśli jednak pracujesz lokalnie w interfejsie wiersza polecenia platformy Azure, możesz utworzyć plik lokalny i zastąpić ścieżkę (~/clouddrive) ścieżką do pliku w lokalnym systemie plików.
W usłudze bash Cloud Shell utwórz plik
~/clouddrive/azurepolicy.rules.json
przy użyciu dowolnego edytora tekstów.Skopiuj i wklej następującą
.json
zawartość do nowego pliku i zapisz go.
{
"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"
}
}
Tworzenie pliku parametrów
Potrzebny jest również plik parametrów , który tworzy strukturę do przekazania listy nieautoryzowanych rozszerzeń.
W tym przykładzie pokazano, jak utworzyć plik parametrów dla maszyn wirtualnych z systemem Linux w usłudze Cloud Shell.
W programie bash Cloud Shell otwartym wcześniej utwórz plik ~/clouddrive/azurepolicy.parameters.json przy użyciu dowolnego edytora tekstów.
Skopiuj i wklej następującą
.json
zawartość do nowego pliku i zapisz go.
{
"notAllowedExtensions": {
"type": "Array",
"metadata": {
"description": "The list of extensions that will be denied. Example: CustomScriptForLinux, VMAccessForLinux etc.",
"displayName": "Denied extension"
}
}
}
Utwórz zasady
Definicja zasad to obiekt służący do przechowywania konfiguracji, której chcesz użyć. Definicja zasad używa plików reguł i parametrów do zdefiniowania zasad. Utwórz definicję zasad przy użyciu polecenia az policy definition create.
W tym przykładzie reguły i parametry to pliki utworzone i przechowywane jako pliki .json w usłudze Cloud Shell lub w lokalnym systemie plików.
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
Przypisywanie zasad
W tym przykładzie zasady są przypisywane do grupy zasobów przy użyciu polecenia az policy assignment create
. Każda maszyna wirtualna utworzona w grupie zasobów myResourceGroup nie będzie mogła zainstalować dostępu do maszyny wirtualnej z systemem Linux lub niestandardowych rozszerzeń skryptów dla systemu Linux.
Uwaga
Aby można było przypisać zasady, grupa zasobów musi istnieć.
Użyj az account list
polecenia , aby znaleźć identyfikator subskrypcji i zastąpić symbol zastępczy w poniższym przykładzie:
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"
]
}
}'
Testowanie zasad
Przetestuj zasady, tworząc nową maszynę wirtualną i dodając nowego użytkownika.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image myImage \
--generate-ssh-keys
Uwaga
Zamień myResourceGroup
wartości i odpowiedniomyImage
. myVM
Spróbuj utworzyć nowego użytkownika o nazwie myNewUser przy użyciu rozszerzenia VM Access.
az vm user update \
--resource-group myResourceGroup \
--name myVM \
--username myNewUser \
--password 'mynewuserpwd123!'
Usuwanie przypisania
az policy assignment delete --name 'not-allowed-vmextension-linux' --resource-group myResourceGroup
Usuwanie zasad
az policy definition delete --name 'not-allowed-vmextension-linux'
Następne kroki
Aby uzyskać więcej informacji, zobacz Azure Policy.