Programmatisch beleid maken
In dit artikel wordt u begeleid bij het programmatisch maken en beheren van beleidsregels. Azure Policy-definities dwingen verschillende regels en effecten af voor uw resources. Afdwingen zorgt ervoor dat resources voldoen aan uw bedrijfsstandaarden en serviceovereenkomsten.
Zie Nalevingsgegevens ophalen voor meer 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 Azure PowerShell voor meer informatie over de nieuwste versie.
Registreer de Azure Policy Insights-resourceprovider met behulp van Azure PowerShell om te controleren of uw abonnement werkt met de resourceprovider. Als u een resourceprovider wilt registreren, moet u gemachtigd zijn om de bewerking registreren 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 bij Azure CLI installeren in Windows.
Een beleidsdefinitie maken en toewijzen
De eerste stap voor een betere zichtbaarheid van uw resources is het maken en toewijzen van beleidsregels voor uw resources. De volgende stap is om te leren hoe u programmatisch een beleid maakt en toewijst. In het voorbeeldbeleid worden opslagaccounts gecontroleerd 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.json.
{ "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Storage/storageAccounts" }, { "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction", "equals": "Allow" } ] }, "then": { "effect": "audit" } }
Zie Azure Policy Definition Structure voor meer informatie over het ontwerpen van een beleidsdefinitie.
Voer de volgende opdracht uit om een beleidsdefinitie te maken met behulp van het AuditStorageAccounts.json-bestand .
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-AzPolicyDefinition voor meer informatie over andere parameters die u kunt gebruiken.
Wanneer u zonder locatieparameters wordt aangeroepen,
New-AzPolicyDefinition
wordt standaard de beleidsdefinitie opgeslagen in het geselecteerde abonnement van de context van de sessies. Gebruik de volgende parameters om de definitie op een andere locatie op te slaan:- SubscriptionId : opslaan in een ander abonnement. Vereist een GUID-waarde .
- ManagementGroupName - Opslaan 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.ResourceId
Vervang ContosoRG door de naam van uw beoogde resourcegroep.
De
Scope
parameter werktNew-AzPolicyAssignment
met beheergroep, abonnement, resourcegroep of één resource. De parameter maakt gebruik van een volledig resourcepad, dat door deResourceId
eigenschap wordtGet-AzResourceGroup
geretourneerd. Het patroon voorScope
elke container is als volgt. Vervang,{rgName}
,{subId}
en{mgName}
door{rName}
respectievelijk de resourcenaam, de naam van de resourcegroep, de abonnements-id en de naam van de beheergroep.{rType}
wordt vervangen door het resourcetype van de resource, zoalsMicrosoft.Compute/virtualMachines
voor een virtuele machine.- Hulpbron-
/subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
- Resourcegroep -
/subscriptions/{subId}/resourceGroups/{rgName}
- Abonnement-
/subscriptions/{subId}
- Beheergroep -
/providers/Microsoft.Management/managementGroups/{mgName}
- Hulpbron-
Zie Az.Resources voor meer informatie over het beheren van resourcebeleid met behulp van de Resource Manager PowerShell-module.
Een beleidsdefinitie maken en toewijzen met BEHULP van 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 Voor meer informatie over de structuur van de query Azure Policy-definities - Maken of bijwerken en beleidsdefinities - Maken of bijwerken bij beheergroep.
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 plaatsen 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 Azure Policy Definition Structure voor meer informatie over het ontwerpen 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 All
Met 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 u zonder locatieparameters wordt aangeroepen,
az policy definition creation
wordt standaard de beleidsdefinitie opgeslagen in het geselecteerde abonnement van de context van de sessies. Gebruik de volgende parameters om de definitie op een andere locatie op te slaan:- abonnement : opslaan in een ander abonnement. Vereist een GUID-waarde voor de abonnements-id of een tekenreekswaarde voor de abonnementsnaam.
- beheergroep : opslaan in een beheergroep. Vereist een tekenreekswaarde .
Gebruik de volgende opdracht om een beleidstoewijzing te maken. Vervang voorbeeldinformatie in punthakensymbolen
< >
door uw eigen waarden.az policy assignment create --name '<name>' --scope '<scope>' --policy '<policy definition ID>'
De
scope
parameter werktaz policy assignment create
met beheergroep, abonnement, resourcegroep of één resource. De parameter maakt gebruik van een volledig resourcepad. Het patroon voorscope
elke container is als volgt. Vervang,{rgName}
,{subId}
en{mgName}
door{rName}
respectievelijk de resourcenaam, de naam van de resourcegroep, de abonnements-id en de naam van de beheergroep.{rType}
wordt vervangen door het resourcetype van de resource, zoalsMicrosoft.Compute/virtualMachines
voor een virtuele machine.- Hulpbron-
/subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
- Resourcegroep -
/subscriptions/{subID}/resourceGroups/{rgName}
- Abonnement-
/subscriptions/{subID}
- Beheergroep -
/providers/Microsoft.Management/managementGroups/{mgName}
- Hulpbron-
U kunt de Definitie-id van Azure Policy ophalen 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 eruitzien als in het volgende voorbeeld:
"/subscription/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Storage Accounts Open to Public Networks"
Zie Azure CLI-resourcebeleidsregels voor meer informatie over het beheren van resourcebeleid met Azure CLI.
Volgende stappen
Raadpleeg de volgende artikelen voor meer informatie over de opdrachten en query's in dit artikel.
- Azure REST API-resources.
- Azure PowerShell-modules.
- Azure CLI Policy-opdrachten.
- Naslaginformatie over de REST API van de Azure Policy-resourceprovider.
- Uw resources organiseren met Azure-beheergroepen.