Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Om du vill förhindra användning eller installation av vissa tillägg på dina virtuella Windows-datorer kan du skapa en Azure Policy-definition med Hjälp av PowerShell för att begränsa tillägg för virtuella datorer i en resursgrupp.
I den här självstudien används Azure PowerShell i Cloud Shell, som ständigt uppdateras till den senaste versionen.
Skapa en regelfil
För att begränsa vilka tillägg som kan installeras måste du ha en regel för att tillhandahålla logiken för att identifiera tillägget.
Det här exemplet visar hur du nekar tillägg som publicerats av Microsoft. Beräkning genom att skapa en regelfil i Azure Cloud Shell, men om du arbetar lokalt i PowerShell kan du också skapa en lokal fil och ersätta sökvägen ($home/clouddrive) med sökvägen till den lokala filen på datorn.
I ett Cloud Shell skapar du filen
$home/clouddrive/rules.jsonmed valfri textredigerare.Kopiera och klistra in följande .json innehåll i filen och spara den:
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Compute/virtualMachines/extensions"
},
{
"field": "Microsoft.Compute/virtualMachines/extensions/publisher",
"equals": "Microsoft.Compute"
},
{
"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 de tillägg som ska blockeras.
Det här exemplet visar hur du skapar en parameterfil för virtuella datorer i Cloud Shell, men om du arbetar i PowerShell lokalt kan du också skapa en lokal fil och ersätta sökvägen ($home/clouddrive) med sökvägen till den lokala filen på datorn.
I Cloud Shell skapar du filen
$home/clouddrive/parameters.jsonmed valfri textredigerare.Kopiera och klistra in följande .json innehåll i filen och spara den:
{
"notAllowedExtensions": {
"type": "Array",
"metadata": {
"description": "The list of extensions that will be denied.",
"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 regel- och parameterfilerna för att definiera principen. Skapa en principdefinition med cmdleten New-AzPolicyDefinition .
Principreglerna och parametrarna är de filer som du skapade och lagrade som .json filer i cloud shell. Ersätt exemplet -Policy och -Parameter filsökvägarna efter behov.
$definition = New-AzPolicyDefinition `
-Name "not-allowed-vmextension-windows" `
-DisplayName "Not allowed VM Extensions" `
-description "This policy governs which VM extensions that are explicitly denied." `
-Policy 'C:\Users\ContainerAdministrator\clouddrive\rules.json' `
-Parameter 'C:\Users\ContainerAdministrator\clouddrive\parameters.json'
Tilldela principen
I det här exemplet tilldelas principen till en resursgrupp med New-AzPolicyAssignment. En virtuell dator som skapats i resursgruppen myResourceGroup kan inte installera tillägg för VM-åtkomstagenten eller anpassade skript.
Använd Get-AzSubscription | Format-Table-cmdlet för att få ditt prenumerations-ID att använda i stället för det i exemplet.
$scope = "/subscriptions/<subscription id>/resourceGroups/myResourceGroup"
$assignment = New-AzPolicyAssignment `
-Name "not-allowed-vmextension-windows" `
-Scope $scope `
-PolicyDefinition $definition `
-PolicyParameter '{
"notAllowedExtensions": {
"value": [
"VMAccessAgent",
"CustomScriptExtension"
]
}
}'
$assignment
Testa principen
Testa principen genom att prova att använda tillägget för vm-åtkomst. Följande bör misslyckas med meddelandet "Set-AzVMAccessExtension: Resursen "myVMAccess" tilläts inte av principen.
Set-AzVMAccessExtension `
-ResourceGroupName "myResourceGroup" `
-VMName "myVM" `
-Name "myVMAccess" `
-Location EastUS
I portalen bör lösenordsändringen misslyckas med meddelandet "Malldistributionen misslyckades på grund av principöverträdelse".
Ta bort tilldelningen
Remove-AzPolicyAssignment -Name not-allowed-vmextension-windows -Scope $scope
Ta bort principen
Remove-AzPolicyDefinition -Name not-allowed-vmextension-windows
Nästa steg
Mer information finns i Azure Policy.