Programmatisch beleid makenProgrammatically create policies

Dit artikel helpt u bij het programmatisch beleid maken en beheren.This article walks you through programmatically creating and managing policies. Met Azure Policy definities worden verschillende regels en effecten voor uw resources afgedwongen.Azure Policy definitions enforce different rules and effects over your resources. Afdwingen zorgt ervoor dat resources voldoen aan uw bedrijfsnormen en serviceovereenkomsten blijven.Enforcement makes sure that resources stay compliant with your corporate standards and service level agreements.

Zie voor meer informatie over de naleving van ophalen van Nalevingsgegevens.For information about compliance, see getting compliance data.

VereistenPrerequisites

Voordat u begint, zorg ervoor dat de volgende vereisten wordt voldaan:Before you begin, make sure that the following prerequisites are met:

  1. Installeer de ARMClient als u dit nog niet hebt gedaan.If you haven't already, install the ARMClient. Dit is een hulpprogramma waarmee HTTP-aanvragen worden verzonden naar Azure Resource Manager-API’s.It's a tool that sends HTTP requests to Azure Resource Manager-based APIs.

  2. Werk de Azure PowerShell-module bij naar de nieuwste versie.Update your Azure PowerShell module to the latest version. Zie Azure PowerShell-module installeren voor gedetailleerde informatie.See Install Azure PowerShell module for detailed information. Zie voor meer informatie over de nieuwste versie, Azure PowerShell.For more information about the latest version, see Azure PowerShell.

  3. Registreer de Azure Policy Insights-resource provider met behulp van Azure PowerShell om te controleren of uw abonnement werkt met de resource provider.Register the Azure Policy Insights resource provider using Azure PowerShell to validate that your subscription works with the resource provider. Als u wilt een resourceprovider registreren, moet u gemachtigd zijn om uit te voeren van de registreeractie voor de resourceprovider.To register a resource provider, you must have permission to run the register action operation for the resource provider. Deze bewerking is opgenomen in de rollen Inzender en Eigenaar.This operation is included in the Contributor and Owner roles. Voer de volgende opdracht uit om de resourceprovider te registreren:Run the following command to register the resource provider:

    Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
    

    Zie Resourceproviders en -typen voor meer informatie over het registreren en weergeven van resourceproviders.For more information about registering and viewing resource providers, see Resource Providers and Types.

  4. Als u niet hebt gedaan, installeert u Azure CLI.If you haven't already, install Azure CLI. Krijgt u de nieuwste versie Azure CLI installeren op Windows.You can get the latest version at Install Azure CLI on Windows.

Maken en een beleidsdefinitie toewijzenCreate and assign a policy definition

De eerste stap voor beter inzicht in uw resources is het maken en toewijzen van beleid voor uw resources.The first step toward better visibility of your resources is to create and assign policies over your resources. De volgende stap is om te leren hoe u programmatisch maken en toewijzen van een beleid.The next step is to learn how to programmatically create and assign a policy. De voorbeeldbeleid controleert storage-accounts die zijn geopend met alle openbare netwerken met behulp van PowerShell, Azure CLI en HTTP-aanvragen.The example policy audits storage accounts that are open to all public networks using PowerShell, Azure CLI, and HTTP requests.

Maken en toewijzen van een beleidsdefinitie met PowerShellCreate and assign a policy definition with PowerShell

  1. Gebruik de volgende JSON-codefragment om te maken van een JSON-bestand met de naam AuditStorageAccounts.json.Use the following JSON snippet to create a JSON file with the name AuditStorageAccounts.json.

    {
        "if": {
            "allOf": [{
                    "field": "type",
                    "equals": "Microsoft.Storage/storageAccounts"
                },
                {
                    "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
                    "equals": "Allow"
                }
            ]
        },
        "then": {
            "effect": "audit"
        }
    }
    

    Zie voor meer informatie over het ontwerpen van een beleidsdefinitie structuur van beleidsdefinities Azure.For more information about authoring a policy definition, see Azure Policy Definition Structure.

  2. Voer de volgende opdracht om te maken van een beleidsdefinitie met behulp van het bestand AuditStorageAccounts.json.Run the following command to create a policy definition using the AuditStorageAccounts.json file.

    New-AzPolicyDefinition -Name 'AuditStorageAccounts' -DisplayName 'Audit Storage Accounts Open to Public Networks' -Policy 'AuditStorageAccounts.json'
    

    De opdracht maakt u een beleidsdefinitie met de naam Audit Storage Accounts openen met een openbaar netwerk.The command creates a policy definition named Audit Storage Accounts Open to Public Networks. Zie New-AzPolicyDefinitionvoor meer informatie over andere para meters die u kunt gebruiken.For more information about other parameters that you can use, see New-AzPolicyDefinition.

    Wanneer aangeroepen zonder locatieparameters, New-AzPolicyDefinition standaard ingesteld op het opslaan van de beleidsdefinitie in het geselecteerde abonnement van de context van sessies.When called without location parameters, New-AzPolicyDefinition defaults to saving the policy definition in the selected subscription of the sessions context. Als u wilt de definitie van de opslaan naar een andere locatie, gebruik de volgende parameters:To save the definition to a different location, use the following parameters:

    • Abonnements-id -opslaan naar een ander abonnement.SubscriptionId - Save to a different subscription. Vereist een GUID waarde.Requires a GUID value.
    • ManagementGroupName -opslaan in een beheergroep.ManagementGroupName - Save to a management group. Vereist een tekenreeks waarde.Requires a string value.
  3. Nadat u de beleidsdefinitie van uw maakt, kunt u een beleidstoewijzing maken door het uitvoeren van de volgende opdrachten:After you create your policy definition, you can create a policy assignment by running the following commands:

    $rg = Get-AzResourceGroup -Name 'ContosoRG'
    $Policy = Get-AzPolicyDefinition -Name 'AuditStorageAccounts'
    New-AzPolicyAssignment -Name 'AuditStorageAccounts' -PolicyDefinition $Policy -Scope $rg.ResourceId
    

    Vervang ContosoRG met de naam van de beoogde resourcegroep.Replace ContosoRG with the name of your intended resource group.

    De bereik parameter op New-AzPolicyAssignment werkt met de beheer groep, het abonnement, de resource groep of een enkele resource.The Scope parameter on New-AzPolicyAssignment works with management group, subscription, resource group, or a single resource. De parameter maakt gebruik van een pad van de volledige resource, die de ResourceId eigenschap op Get-AzResourceGroup retourneert.The parameter uses a full resource path, which the ResourceId property on Get-AzResourceGroup returns. Het patroon voor bereik voor elke container als volgt is.The pattern for Scope for each container is as follows. Vervang {rName}, {rgName}, {subId}en {mgName} door de resource naam, de naam van de resource groep, de abonnements-ID en de naam van de beheer groep.Replace {rName}, {rgName}, {subId}, and {mgName} with your resource name, resource group name, subscription ID, and management group name, respectively. {rType} wordt vervangen door het resource type van de resource, zoals Microsoft.Compute/virtualMachines voor een virtuele machine.{rType} would be replaced with the resource type of the resource, such as Microsoft.Compute/virtualMachines for a VM.

    • Resource - /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}Resource - /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Resourcegroep: /subscriptions/{subId}/resourceGroups/{rgName}Resource group - /subscriptions/{subId}/resourceGroups/{rgName}
    • Abonnement: /subscriptions/{subId}/Subscription - /subscriptions/{subId}/
    • Beheergroep- /providers/Microsoft.Management/managementGroups/{mgName}Management group - /providers/Microsoft.Management/managementGroups/{mgName}

Zie AZ. resources(Engelstalig) voor meer informatie over het beheren van bron beleid met behulp van de Azure Resource Manager Power shell-module.For more information about managing resource policies using the Azure Resource Manager PowerShell module, see Az.Resources.

Maken en toewijzen van een beleidsdefinitie ARMClientCreate and assign a policy definition using ARMClient

Gebruik de volgende procedure om de beleidsdefinitie van een te maken.Use the following procedure to create a policy definition.

  1. Kopieer de volgende JSON-fragment voor het maken van een JSON-bestand.Copy the following JSON snippet to create a JSON file. Noem het bestand in de volgende stap.You'll call the file in the next step.

    "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"
            }
        }
    }
    
  2. Maak de beleidsdefinitie met een van de volgende aanroepen:Create the policy definition using one of the following calls:

    # For defining a policy in a subscription
    armclient PUT "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyDefinitions/AuditStorageAccounts?api-version=2016-12-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=2016-12-01" @<path to policy definition JSON file>
    

    De voorgaande {subscriptionId} vervangen door de ID van uw abonnement of {managementGroupId} met de ID van uw beheergroep.Replace the preceding {subscriptionId} with the ID of your subscription or {managementGroupId} with the ID of your management group.

    Zie voor meer informatie over de structuur van de query Azure Policy definities – maken of bijwerken en beleids definities: maken of bijwerken in beheer groepFor more information about the structure of the query, see Azure Policy Definitions – Create or Update and Policy Definitions – Create or Update At Management Group

Gebruik de volgende procedure een beleidstoewijzing maken en toewijzen van de beleidsdefinitie op het niveau van de resource.Use the following procedure to create a policy assignment and assign the policy definition at the resource group level.

  1. Kopieer de volgende JSON-fragment voor het maken van een JSON-bestand voor het toewijzen van beleid.Copy the following JSON snippet to create a JSON policy assignment file. Vervang voorbeeldinformatie in < > symbolen door uw eigen waarden.Replace example information in <> symbols with your own values.

    {
        "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>"
        }
    }
    
  2. Maak de toewijzing van beleid met behulp van de volgende oproep verzenden:Create the policy assignment using the following call:

    armclient PUT "/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Authorization/policyAssignments/Audit Storage Accounts Open to Public Networks?api-version=2017-06-01-preview" @<path to Assignment JSON file>
    

    Vervang voorbeeldinformatie in < > symbolen door uw eigen waarden.Replace example information in <> symbols with your own values.

    Zie voor meer informatie over het maken van HTTP-aanroepen naar de REST-API, Azure REST API-Resources.For more information about making HTTP calls to the REST API, see Azure REST API Resources.

Maken en toewijzen van een beleidsdefinitie met Azure CLICreate and assign a policy definition with Azure CLI

Gebruik de volgende procedure voor het maken van een beleidsdefinitie:To create a policy definition, use the following procedure:

  1. Kopieer de volgende JSON-fragment voor het maken van een JSON-bestand voor het toewijzen van beleid.Copy the following JSON snippet to create a JSON policy assignment file.

    {
        "if": {
            "allOf": [{
                    "field": "type",
                    "equals": "Microsoft.Storage/storageAccounts"
                },
                {
                    "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
                    "equals": "Allow"
                }
            ]
        },
        "then": {
            "effect": "audit"
        }
    }
    

    Zie voor meer informatie over het ontwerpen van een beleidsdefinitie structuur van beleidsdefinities Azure.For more information about authoring a policy definition, see Azure Policy Definition Structure.

  2. Voer de volgende opdracht om een beleidsdefinitie maken:Run the following command to create a policy definition:

    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
    

    De opdracht maakt u een beleidsdefinitie met de naam Audit Storage Accounts openen met een openbaar netwerk.The command creates a policy definition named Audit Storage Accounts Open to Public Networks. Zie AZ Policy Definition Create(Engelstalig) voor meer informatie over andere para meters die u kunt gebruiken.For more information about other parameters that you can use, see az policy definition create.

    Wanneer aangeroepen zonder locatieparameters, az policy definition creation standaard ingesteld op het opslaan van de beleidsdefinitie in het geselecteerde abonnement van de context van sessies.When called without location parameters, az policy definition creation defaults to saving the policy definition in the selected subscription of the sessions context. Als u wilt de definitie van de opslaan naar een andere locatie, gebruik de volgende parameters:To save the definition to a different location, use the following parameters:

    • --abonnement : Sla het bestand op in een ander abonnement.--subscription - Save to a different subscription. Vereist een GUID -waarde voor de abonnements-id of een teken reeks waarde voor de naam van het abonnement.Requires a GUID value for the subscription ID or a string value for the subscription name.
    • --beheer-groep -opslaan in een beheer groep.--management-group - Save to a management group. Vereist een tekenreeks waarde.Requires a string value.
  3. Gebruik de volgende opdracht om een beleidstoewijzing te maken.Use the following command to create a policy assignment. Vervang voorbeeldinformatie in < > symbolen door uw eigen waarden.Replace example information in <> symbols with your own values.

    az policy assignment create --name '<name>' --scope '<scope>' --policy '<policy definition ID>'
    

    De para meter --Scope op az policy assignment create werkt met de beheer groep, het abonnement, de resource groep of een enkele resource.The --scope parameter on az policy assignment create works with management group, subscription, resource group, or a single resource. De para meter gebruikt een volledig bronpad.The parameter uses a full resource path. Het patroon voor de Scope voor elke container is als volgt.The pattern for --scope for each container is as follows. Vervang {rName}, {rgName}, {subId}en {mgName} door de resource naam, de naam van de resource groep, de abonnements-ID en de naam van de beheer groep.Replace {rName}, {rgName}, {subId}, and {mgName} with your resource name, resource group name, subscription ID, and management group name, respectively. {rType} wordt vervangen door het resource type van de resource, zoals Microsoft.Compute/virtualMachines voor een virtuele machine.{rType} would be replaced with the resource type of the resource, such as Microsoft.Compute/virtualMachines for a VM.

    • Resource - /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}Resource - /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Resourcegroep: /subscriptions/{subID}/resourceGroups/{rgName}Resource group - /subscriptions/{subID}/resourceGroups/{rgName}
    • Abonnement: /subscriptions/{subID}Subscription - /subscriptions/{subID}
    • Beheergroep- /providers/Microsoft.Management/managementGroups/{mgName}Management group - /providers/Microsoft.Management/managementGroups/{mgName}

U kunt de Azure Policy definitie-ID ophalen met behulp van Power shell met de volgende opdracht:You can get the Azure Policy Definition ID by using PowerShell with the following command:

az policy definition show --name 'Audit Storage Accounts with Open Public Networks'

De beleidstoewijzings-ID voor de beleidsdefinitie die u hebt gemaakt, moet lijken op het volgende voorbeeld:The policy definition ID for the policy definition that you created should resemble the following example:

"/subscription/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Storage Accounts Open to Public Networks"

Zie voor meer informatie over hoe u resourcebeleid met Azure CLI kunt beheren, Resourcebeleid voor Azure CLI.For more information about how you can manage resource policies with Azure CLI, see Azure CLI Resource Policies.

Volgende stappenNext steps

Raadpleeg de volgende artikelen voor meer informatie over de opdrachten en query's in dit artikel.Review the following articles for more information about the commands and queries in this article.