Programmatisch beleid maken
In dit artikel wordt beschreven hoe u programmatisch beleid kunt maken en beheren. Azure Policy worden verschillende regels en effecten afgedwongen voor uw resources. Afdwinging zorgt ervoor dat resources voldoen aan uw bedrijfsstandaarden en serviceovereenkomsten.
Zie Nalevingsgegevens verkrijgen voor informatie over naleving.
Vereisten
Voordat u begint, moet u ervoor zorgen dat aan de volgende vereisten wordt voldaan:
Installeer de ARMClient als u dit nog niet hebt gedaan. Dit is een hulpprogramma waarmee HTTP-aanvragen worden verzonden naar Azure Resource Manager-API’s.
Werk uw Azure PowerShell module bij naar de nieuwste versie. Zie Azure PowerShell-module installeren voor gedetailleerde informatie. Zie voor meer informatie over de nieuwste versie Azure PowerShell.
Registreer de Azure Policy Insights resourceprovider met behulp Azure PowerShell om te controleren of uw abonnement werkt met de resourceprovider. Als u een resourceprovider wilt registreren, moet u toestemming hebben om de bewerking registeractie voor de resourceprovider uit te voeren. Deze bewerking is opgenomen in de rollen Inzender en Eigenaar. Voer de volgende opdracht uit om de resourceprovider te registreren:
Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'Zie Resourceproviders en -typen voor meer informatie over het registreren en weergeven van resourceproviders.
Installeer Azure CLI als u dat nog niet hebt gedaan. U kunt de nieuwste versie downloaden via Azure CLI installeren op Windows.
Een beleidsdefinitie maken en toewijzen
De eerste stap voor een betere zichtbaarheid van uw resources is het maken en toewijzen van beleid voor uw resources. In de volgende stap leert u hoe u programmatisch een beleid maakt en toewijst. Het voorbeeldbeleid controleert opslagaccounts die zijn geopend voor alle openbare netwerken met behulp van PowerShell-, Azure CLI- en HTTP-aanvragen.
Een beleidsdefinitie maken en toewijzen met PowerShell
Gebruik het volgende JSON-fragment om een JSON-bestand te maken met de naam AuditStorageAccounts.jsaan.
{ "if": { "allOf": [{ "field": "type", "equals": "Microsoft.Storage/storageAccounts" }, { "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction", "equals": "Allow" } ] }, "then": { "effect": "audit" } }Zie Definitiestructuur voor meer informatie over het Azure Policy van een beleidsdefinitie.
Voer de volgende opdracht uit om een beleidsdefinitie te maken met behulp AuditStorageAccounts.jsbestand.
New-AzPolicyDefinition -Name 'AuditStorageAccounts' -DisplayName 'Audit Storage Accounts Open to Public Networks' -Policy 'AuditStorageAccounts.json'Met de opdracht maakt u een beleidsdefinitie met de naam Audit Storage Accounts Open to Public Networks. Zie New-AzPolicyDefinitionvoor meer informatie over andere parameters die u kunt gebruiken.
Wanneer deze wordt aangeroepen zonder
New-AzPolicyDefinitionlocatieparameters, wordt standaard de beleidsdefinitie op te slaan in het geselecteerde abonnement van de sessiecontext. Gebruik de volgende parameters om de definitie op een andere locatie op te slaan:- SubscriptionId: sla deze op in een ander abonnement. Vereist een GUID-waarde.
- ManagementGroupName: sla deze op in een beheergroep. Vereist een tekenreekswaarde.
Nadat u de beleidsdefinitie hebt gemaakt, kunt u een beleidstoewijzing maken door de volgende opdrachten uit te voeren:
$rg = Get-AzResourceGroup -Name 'ContosoRG' $Policy = Get-AzPolicyDefinition -Name 'AuditStorageAccounts' New-AzPolicyAssignment -Name 'AuditStorageAccounts' -PolicyDefinition $Policy -Scope $rg.ResourceIdVervang ContosoRG door de naam van de beoogde resourcegroep.
De parameter Bereik op werkt met een
New-AzPolicyAssignmentbeheergroep, abonnement, resourcegroep of één resource. De parameter maakt gebruik van een volledig resourcepad, dat de eigenschap ResourceIdGet-AzResourceGroupretourneert. Het patroon voor Bereik voor elke container is als volgt. Vervang respectievelijk , , en door de resourcenaam, de naam van de{rName}resourcegroep, de abonnements-id en de naam{rgName}{subId}van de{mgName}beheergroep.{rType}wordt vervangen door het resourcetype van de resource, zoalsMicrosoft.Compute/virtualMachinesvoor een VM.- Resource -
/subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName} - Resourcegroep -
/subscriptions/{subId}/resourceGroups/{rgName} - Abonnement -
/subscriptions/{subId} - Beheergroep -
/providers/Microsoft.Management/managementGroups/{mgName}
- Resource -
Zie Az.Resources voor meer informatie over het beheren van resourcebeleid met Resource Manager PowerShell-module.
Een beleidsdefinitie maken en toewijzen met ARMClient
Gebruik de volgende procedure om een beleidsdefinitie te maken.
Kopieer het volgende JSON-fragment om een JSON-bestand te maken. In de volgende stap roept u het bestand aan.
"properties": { "displayName": "Audit Storage Accounts Open to Public Networks", "policyType": "Custom", "mode": "Indexed", "description": "This policy ensures that storage accounts with exposure to Public Networks are audited.", "parameters": {}, "policyRule": { "if": { "allOf": [{ "field": "type", "equals": "Microsoft.Storage/storageAccounts" }, { "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction", "equals": "Allow" } ] }, "then": { "effect": "audit" } } }Maak de beleidsdefinitie met behulp van een van de volgende aanroepen:
# For defining a policy in a subscription armclient PUT "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyDefinitions/AuditStorageAccounts?api-version=2021-09-01" @<path to policy definition JSON file> # For defining a policy in a management group armclient PUT "/providers/Microsoft.Management/managementgroups/{managementGroupId}/providers/Microsoft.Authorization/policyDefinitions/AuditStorageAccounts?api-version=2021-09-01" @<path to policy definition JSON file>Vervang de voorgaande {subscriptionId} door de id van uw abonnement of {managementGroupId} door de id van uw beheergroep.
Zie definities - maken of bijwerken en beleidsdefinities - maken of bijwerken - maken of bijwerken in beheergroepvoor meer informatie over de structuur van de Azure Policy query.
Gebruik de volgende procedure om een beleidstoewijzing te maken en de beleidsdefinitie toe te wijzen op het niveau van de resourcegroep.
Kopieer het volgende JSON-fragment om een JSON-beleidstoewijzingsbestand te maken. Vervang voorbeeldinformatie in < > symbolen door uw eigen waarden.
{ "properties": { "description": "This policy assignment makes sure that storage accounts with exposure to Public Networks are audited.", "displayName": "Audit Storage Accounts Open to Public Networks Assignment", "parameters": {}, "policyDefinitionId": "/subscriptions/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Storage Accounts Open to Public Networks", "scope": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>" } }Maak de beleidstoewijzing met behulp van de volgende aanroep:
armclient PUT "/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Authorization/policyAssignments/Audit Storage Accounts Open to Public Networks?api-version=2021-09-01" @<path to Assignment JSON file>Vervang voorbeeldinformatie in < > symbolen door uw eigen waarden.
Zie Azure REST API-resources voor meer informatie over het maken van HTTP-aanroepen naar de REST API.
Een beleidsdefinitie maken en toewijzen met Azure CLI
Gebruik de volgende procedure om een beleidsdefinitie te maken:
Kopieer het volgende JSON-fragment om een JSON-beleidstoewijzingsbestand te maken.
{ "if": { "allOf": [{ "field": "type", "equals": "Microsoft.Storage/storageAccounts" }, { "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction", "equals": "Allow" } ] }, "then": { "effect": "audit" } }Zie Definitiestructuur voor meer informatie over het Azure Policy van een beleidsdefinitie.
Voer de volgende opdracht uit om een beleidsdefinitie te maken:
az policy definition create --name 'audit-storage-accounts-open-to-public-networks' --display-name 'Audit Storage Accounts Open to Public Networks' --description 'This policy ensures that storage accounts with exposures to public networks are audited.' --rules '<path to json file>' --mode AllMet de opdracht maakt u een beleidsdefinitie met de naam Audit Storage Accounts Open to Public Networks. Zie az policy definition create voor meer informatie over andere parameters die u kunt gebruiken.
Wanneer deze wordt aangeroepen zonder
az policy definition creationlocatieparameters, wordt standaard de beleidsdefinitie op te slaan in het geselecteerde abonnement van de sessiecontext. Gebruik de volgende parameters om de definitie op een andere locatie op te slaan:- abonnement: sla deze op in een ander abonnement. Vereist een GUID-waarde voor de abonnements-id of een tekenreekswaarde voor de abonnementsnaam.
- beheergroep: sla deze op in een beheergroep. Vereist een tekenreekswaarde.
Gebruik de volgende opdracht om een beleidstoewijzing te maken. Vervang voorbeeldinformatie in < > symbolen door uw eigen waarden.
az policy assignment create --name '<name>' --scope '<scope>' --policy '<policy definition ID>'De bereikparameter
az policy assignment createop werkt met een beheergroep, abonnement, resourcegroep of één resource. De parameter maakt gebruik van een volledig resourcepad. Het bereik voor elke container is als volgt. Vervang respectievelijk , , en door de resourcenaam, de naam van de{rName}resourcegroep, de abonnements-id en de naam{rgName}{subId}van de{mgName}beheergroep.{rType}wordt vervangen door het resourcetype van de resource, zoalsMicrosoft.Compute/virtualMachinesvoor een VM.- Resource -
/subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName} - Resourcegroep -
/subscriptions/{subID}/resourceGroups/{rgName} - Abonnement -
/subscriptions/{subID} - Beheergroep -
/providers/Microsoft.Management/managementGroups/{mgName}
- Resource -
U kunt de definitie-Azure Policy met behulp van PowerShell met de volgende opdracht:
az policy definition show --name 'Audit Storage Accounts with Open Public Networks'
De beleidsdefinitie-id voor de beleidsdefinitie die u hebt gemaakt, moet lijken op het volgende voorbeeld:
"/subscription/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Storage Accounts Open to Public Networks"
Zie Azure CLI-resourcebeleid voor meer informatie over het beheren van resourcebeleid met Azure CLI.
Volgende stappen
Lees de volgende artikelen voor meer informatie over de opdrachten en query's in dit artikel.