Programmatisch beleid makenProgrammatically create policies

In dit artikel wordt uitgelegd hoe u via programma code beleid maakt en beheert.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. Afdwinging zorgt ervoor dat resources blijven voldoen aan uw bedrijfs normen en service overeenkomsten.Enforcement makes sure that resources stay compliant with your corporate standards and service level agreements.

Zie nalevings gegevens ophalenvoor meer informatie over naleving.For information about compliance, see getting compliance data.

VereistenPrerequisites

Voordat u begint, moet u ervoor zorgen dat aan 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 Azure PowerShellvoor meer informatie over de meest recente versie.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 een resource provider wilt registreren, moet u gemachtigd zijn om de actie bewerking registreren voor de resource provider uit te voeren.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. Installeer Azure CLI als u dat nog niet hebt gedaan.If you haven't already, install Azure CLI. U kunt de nieuwste versie downloaden bij de installatie van Azure cli in Windows.You can get the latest version at Install Azure CLI on Windows.

Een beleidsdefinitie maken en toewijzenCreate and assign a policy definition

De eerste stap voor een betere zicht baarheid van 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. In de volgende stap leert u hoe u via een programma een beleid maakt en toewijst.The next step is to learn how to programmatically create and assign a policy. Het voorbeeld beleid controleert opslag accounts die zijn geopend voor alle open bare netwerken met behulp van Power shell, 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.

Een beleids definitie maken en toewijzen met Power shellCreate and assign a policy definition with PowerShell

  1. Gebruik het volgende JSON-code fragment om een JSON-bestand met de naam AuditStorageAccounts.jsaan te maken.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 Azure Policy Definition structure(Engelstalig) voor meer informatie over het ontwerpen van een beleids definitie.For more information about authoring a policy definition, see Azure Policy Definition Structure.

  2. Voer de volgende opdracht uit om een beleids definitie te maken met behulp van de AuditStorageAccounts.jsin het bestand.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'
    

    Met de opdracht wordt een beleids definitie gemaakt met de naam audit Storage accounts open open bare netwerken.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.

    Als de para meters worden aangeroepen zonder locatie, wordt New-AzPolicyDefinition standaard de beleids definitie opgeslagen in het geselecteerde abonnement van de sessie context.When called without location parameters, New-AzPolicyDefinition defaults to saving the policy definition in the selected subscription of the sessions context. Gebruik de volgende para meters om de definitie op een andere locatie op te slaan:To save the definition to a different location, use the following parameters:

    • SubscriptionId : opslaan in een ander abonnement.SubscriptionId - Save to a different subscription. Vereist een GUID -waarde.Requires a GUID value.
    • ManagementGroupName : Sla het bestand op in een beheer groep.ManagementGroupName - Save to a management group. Vereist een teken reeks waarde.Requires a string value.
  3. Nadat u de beleids definitie hebt gemaakt, kunt u een beleids toewijzing maken door de volgende opdrachten uit te voeren: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 door de naam van de gewenste resource groep.Replace ContosoRG with the name of your intended resource group.

    De bereik parameter voor 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 para meter gebruikt een volledig bronpad, die de eigenschap ResourceID bij Get-AzResourceGroup retourneert.The parameter uses a full resource path, which the ResourceId property on Get-AzResourceGroup returns. 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} met de naam van de resource, de naam van de resource groep, de abonnements-id en de beheer groep, respectievelijk.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, bijvoorbeeld 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}
    • Resource groep- /subscriptions/{subId}/resourceGroups/{rgName}Resource group - /subscriptions/{subId}/resourceGroups/{rgName}
    • Abonnees /subscriptions/{subId}Subscription - /subscriptions/{subId}
    • Beheer groep- /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 Resource Manager Power shell-module.For more information about managing resource policies using the Resource Manager PowerShell module, see Az.Resources.

Een beleids definitie maken en toewijzen met behulp van ARMClientCreate and assign a policy definition using ARMClient

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

  1. Kopieer het volgende JSON-fragment om een JSON-bestand te maken.Copy the following JSON snippet to create a JSON file. U belt 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 beleids definitie 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=2019-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=2019-09-01" @<path to policy definition JSON file>
    

    Vervang de voor gaande {subscriptionId} met de ID van uw abonnement of {managementGroupId} door de ID van uw beheer groep.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 om een beleids toewijzing te maken en de beleids definitie toe te wijzen op het niveau van de resource groep.Use the following procedure to create a policy assignment and assign the policy definition at the resource group level.

  1. Kopieer het volgende JSON-fragment om een JSON-beleids toewijzings bestand te maken.Copy the following JSON snippet to create a JSON policy assignment file. Vervang voorbeeld informatie in < > symbolen met 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 het beleid met behulp van de volgende aanroep: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=2019-09-01" @<path to Assignment JSON file>
    

    Vervang voorbeeld informatie in < > symbolen met uw eigen waarden.Replace example information in <> symbols with your own values.

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

Een beleids definitie maken en toewijzen met Azure CLICreate and assign a policy definition with Azure CLI

Als u een beleids definitie wilt maken, gebruikt u de volgende procedure:To create a policy definition, use the following procedure:

  1. Kopieer het volgende JSON-fragment om een JSON-beleids toewijzings bestand te maken.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 Azure Policy Definition structure(Engelstalig) voor meer informatie over het ontwerpen van een beleids definitie.For more information about authoring a policy definition, see Azure Policy Definition Structure.

  2. Voer de volgende opdracht uit om een beleids definitie te 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
    

    Met de opdracht wordt een beleids definitie gemaakt met de naam audit Storage accounts open open bare netwerken.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.

    Als de para meters worden aangeroepen zonder locatie, wordt az policy definition creation standaard de beleids definitie opgeslagen in het geselecteerde abonnement van de sessie context.When called without location parameters, az policy definition creation defaults to saving the policy definition in the selected subscription of the sessions context. Gebruik de volgende para meters om de definitie op een andere locatie op te slaan: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 teken reeks waarde.Requires a string value.
  3. Gebruik de volgende opdracht om een beleids toewijzing te maken.Use the following command to create a policy assignment. Vervang voorbeeld informatie in < > symbolen met 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 bereik parameter voor 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} met de naam van de resource, de naam van de resource groep, de abonnements-id en de beheer groep, respectievelijk.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, bijvoorbeeld 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}
    • Resource groep- /subscriptions/{subID}/resourceGroups/{rgName}Resource group - /subscriptions/{subID}/resourceGroups/{rgName}
    • Abonnees /subscriptions/{subID}Subscription - /subscriptions/{subID}
    • Beheer groep- /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 beleids definitie-ID voor de beleids definitie die u hebt gemaakt, moet er ongeveer uitzien als in het volgende voor beeld: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 Azure cli-resource beleidvoor meer informatie over hoe u resource beleid kunt beheren met 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.