Szabályzatok létrehozása programozott módonProgrammatically create policies

Ez a cikk végigvezeti a szabályzatok programozott létrehozásán és kezelésén.This article walks you through programmatically creating and managing policies. Azure Policy definíciók különböző szabályokat és hatásokat alkalmaznak az erőforrásokra.Azure Policy definitions enforce different rules and effects over your resources. A kényszerítés biztosítja, hogy az erőforrások megfeleljenek a vállalati szabványoknak és a szolgáltatói szerződéseknek.Enforcement makes sure that resources stay compliant with your corporate standards and service level agreements.

A megfelelőséggel kapcsolatos további információkért lásd a megfelelőségi adatok beszerzésecímű témakört.For information about compliance, see getting compliance data.

ElőfeltételekPrerequisites

Mielőtt elkezdené, győződjön meg arról, hogy teljesülnek az alábbi előfeltételek:Before you begin, make sure that the following prerequisites are met:

  1. Ha még nem tette meg, telepítse az ARMClient eszközt.If you haven't already, install the ARMClient. Ez egy olyan segédprogram, amely HTTP-kéréseket küld az Azure Resource Manager-alapú API-khoz.It's a tool that sends HTTP requests to Azure Resource Manager-based APIs.

  2. Frissítse Azure PowerShell modulját a legújabb verzióra.Update your Azure PowerShell module to the latest version. Részletes információkért lásd: Azure PowerShell modul telepítése .See Install Azure PowerShell module for detailed information. További információ a legújabb verzióról: Azure PowerShell.For more information about the latest version, see Azure PowerShell.

  3. Regisztrálja a Azure Policy bepillantást erőforrás-szolgáltatót a Azure PowerShell használatával annak ellenőrzéséhez, hogy az előfizetés működik-e az erőforrás-szolgáltatóval.Register the Azure Policy Insights resource provider using Azure PowerShell to validate that your subscription works with the resource provider. Erőforrás-szolgáltató regisztrálásához engedéllyel kell rendelkeznie az erőforrás-szolgáltató regisztrálása műveletének futtatásához.To register a resource provider, you must have permission to run the register action operation for the resource provider. Ezt a műveletet a Közreműködői és Tulajdonosi szerepkörök magukba foglalják.This operation is included in the Contributor and Owner roles. Az erőforrás-szolgáltató regisztrálásához futtassa az alábbi parancsot:Run the following command to register the resource provider:

    Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
    

    Az erőforrás-szolgáltatók regisztrálásával és megtekintésével kapcsolatos további információért tekintse meg az erőforrás-szolgáltatókat és típusaikat ismertető cikket.For more information about registering and viewing resource providers, see Resource Providers and Types.

  4. Ha még nem tette meg, telepítse az Azure CLI-t.If you haven't already, install Azure CLI. A legújabb verziót az Azure CLI telepítése Windowsrendszeren végezheti el.You can get the latest version at Install Azure CLI on Windows.

Szabályzat-definíció létrehozása és társításaCreate and assign a policy definition

Az erőforrások jobb láthatóságának első lépése, hogy szabályzatokat hozzon létre és rendeljen hozzá az erőforrásokhoz.The first step toward better visibility of your resources is to create and assign policies over your resources. A következő lépés a szabályzatok programozott létrehozására és hozzárendelésére vonatkozó útmutató.The next step is to learn how to programmatically create and assign a policy. A példa házirend a PowerShell, az Azure CLI és a HTTP-kérések használatával naplózza az összes nyilvános hálózat számára megnyitott tárolási fiókokat.The example policy audits storage accounts that are open to all public networks using PowerShell, Azure CLI, and HTTP requests.

Házirend-definíció létrehozása és társítása a PowerShell-lelCreate and assign a policy definition with PowerShell

  1. A következő JSON-kódrészlet használatával hozzon létre egy AuditStorageAccounts. JSON nevű JSON-fájlt.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"
        }
    }
    

    A szabályzat-definíciók létrehozásával kapcsolatos további információkért lásd: Azure Policy definíciós struktúra.For more information about authoring a policy definition, see Azure Policy Definition Structure.

  2. Futtassa a következő parancsot egy szabályzat-definíció létrehozásához a AuditStorageAccounts. JSON fájllal.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'
    

    A parancs létrehoz egy naplózási fiók nevű házirend-definíciót a nyilvános hálózatokhoz.The command creates a policy definition named Audit Storage Accounts Open to Public Networks. További információ a használható egyéb paraméterekről: New-AzPolicyDefinition.For more information about other parameters that you can use, see New-AzPolicyDefinition.

    Ha a hely paramétereinek megadása nélkül hívja meg őket, New-AzPolicyDefinition alapértelmezett értékekkel menti a házirend-definíciót a munkamenetek környezetének kiválasztott előfizetésében.When called without location parameters, New-AzPolicyDefinition defaults to saving the policy definition in the selected subscription of the sessions context. Ha a definíciót másik helyre szeretné menteni, használja a következő paramétereket:To save the definition to a different location, use the following parameters:

    • SubscriptionId – mentés másik előfizetésbe.SubscriptionId - Save to a different subscription. GUID -értéket igényel.Requires a GUID value.
    • ManagementGroupName – mentés egy felügyeleti csoportba.ManagementGroupName - Save to a management group. Karakterlánc -értéket igényel.Requires a string value.
  3. A házirend-definíció létrehozása után létrehozhat egy szabályzat-hozzárendelést a következő parancsok futtatásával: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
    

    Cserélje le a ContosoRG nevet a kívánt erőforráscsoport nevére.Replace ContosoRG with the name of your intended resource group.

    A New-AzPolicyAssignment hatókör -paramétere felügyeleti csoporttal, előfizetéssel, erőforráscsoporthoz vagy egyetlen erőforrással működik.The Scope parameter on New-AzPolicyAssignment works with management group, subscription, resource group, or a single resource. A paraméter teljes erőforrás-elérési utat használ, amely a Get-AzResourceGroup ResourceId tulajdonságát adja vissza.The parameter uses a full resource path, which the ResourceId property on Get-AzResourceGroup returns. Az egyes tárolók hatókörének mintája a következő.The pattern for Scope for each container is as follows. Cserélje le {rName}, {rgName}, {subId}és {mgName} értékét az erőforrás nevére, az erőforráscsoport nevére, az előfizetés-AZONOSÍTÓra és a felügyeleti csoport nevére.Replace {rName}, {rgName}, {subId}, and {mgName} with your resource name, resource group name, subscription ID, and management group name, respectively. a {rType} helyére az erőforrás erőforrástípus, például egy virtuális gép Microsoft.Compute/virtualMachines.{rType} would be replaced with the resource type of the resource, such as Microsoft.Compute/virtualMachines for a VM.

    • Erőforrás-/subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}Resource - /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Erőforráscsoport – /subscriptions/{subId}/resourceGroups/{rgName}Resource group - /subscriptions/{subId}/resourceGroups/{rgName}
    • Előfizetés – /subscriptions/{subId}/Subscription - /subscriptions/{subId}/
    • Felügyeleti csoport – /providers/Microsoft.Management/managementGroups/{mgName}Management group - /providers/Microsoft.Management/managementGroups/{mgName}

Az erőforrás-házirendek Azure Resource Manager PowerShell-modul használatával történő kezelésével kapcsolatos további információkért lásd az az. Resourcescímű témakört.For more information about managing resource policies using the Azure Resource Manager PowerShell module, see Az.Resources.

Szabályzat-definíció létrehozása és társítása a ARMClient használatávalCreate and assign a policy definition using ARMClient

A házirend-definíció létrehozásához kövesse az alábbi eljárást.Use the following procedure to create a policy definition.

  1. A következő JSON-kódrészlet másolásával hozzon létre egy JSON-fájlt.Copy the following JSON snippet to create a JSON file. A következő lépésben hívnia kell a fájlt.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. Hozza létre a házirend-definíciót az alábbi hívások egyikének használatával: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>
    

    Cserélje le az előző {subscriptionId} azonosítót az előfizetés azonosítójával vagy {managementGroupId} a felügyeleti csoportjánakazonosítójával.Replace the preceding {subscriptionId} with the ID of your subscription or {managementGroupId} with the ID of your management group.

    További információ a lekérdezés struktúrájáról: Azure Policy definíciók – létrehozás vagy frissítés és szabályzat-definíciók – létrehozás vagy frissítés a felügyeleti csoportbanFor more information about the structure of the query, see Azure Policy Definitions – Create or Update and Policy Definitions – Create or Update At Management Group

A következő eljárással hozhat létre szabályzat-hozzárendelést, és hozzárendelheti a házirend-definíciót az erőforráscsoport szintjén.Use the following procedure to create a policy assignment and assign the policy definition at the resource group level.

  1. Másolja a következő JSON-kódrészletet egy JSON-szabályzat-hozzárendelési fájl létrehozásához.Copy the following JSON snippet to create a JSON policy assignment file. Cserélje le például a <> szimbólumokat a saját értékeire.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. Hozza létre a szabályzat-hozzárendelést a következő hívás használatával: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>
    

    Cserélje le például a <> szimbólumokat a saját értékeire.Replace example information in <> symbols with your own values.

    További információ a REST API HTTP-hívásáról: Azure REST API-erőforrások.For more information about making HTTP calls to the REST API, see Azure REST API Resources.

Szabályzat-definíció létrehozása és társítása az Azure CLI-velCreate and assign a policy definition with Azure CLI

Házirend-definíció létrehozásához kövesse az alábbi eljárást:To create a policy definition, use the following procedure:

  1. Másolja a következő JSON-kódrészletet egy JSON-szabályzat-hozzárendelési fájl létrehozásához.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"
        }
    }
    

    A szabályzat-definíciók létrehozásával kapcsolatos további információkért lásd: Azure Policy definíciós struktúra.For more information about authoring a policy definition, see Azure Policy Definition Structure.

  2. A következő parancs futtatásával hozzon létre egy szabályzat-definíciót: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
    

    A parancs létrehoz egy naplózási fiók nevű házirend-definíciót a nyilvános hálózatokhoz.The command creates a policy definition named Audit Storage Accounts Open to Public Networks. További információ a használható egyéb paraméterekről: az Policy definition Create.For more information about other parameters that you can use, see az policy definition create.

    Ha a hely paramétereinek megadása nélkül hívja meg őket, az policy definition creation alapértelmezett értékekkel menti a házirend-definíciót a munkamenetek környezetének kiválasztott előfizetésében.When called without location parameters, az policy definition creation defaults to saving the policy definition in the selected subscription of the sessions context. Ha a definíciót másik helyre szeretné menteni, használja a következő paramétereket:To save the definition to a different location, use the following parameters:

    • --előfizetés – mentse egy másik előfizetésbe.--subscription - Save to a different subscription. Az előfizetés-AZONOSÍTÓhoz vagy egy karakterlánc -értékhez szükséges GUID -értéket igényel az előfizetés neveként.Requires a GUID value for the subscription ID or a string value for the subscription name.
    • --felügyeleti csoport – mentés egy felügyeleti csoportba.--management-group - Save to a management group. Karakterlánc -értéket igényel.Requires a string value.
  3. A következő parancs használatával hozzon létre egy szabályzat-hozzárendelést.Use the following command to create a policy assignment. Cserélje le például a <> szimbólumokat a saját értékeire.Replace example information in <> symbols with your own values.

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

    A az policy assignment create hatókör paramétere a felügyeleti csoporttal, előfizetéssel, erőforráscsoporthoz vagy egyetlen erőforrással működik.The --scope parameter on az policy assignment create works with management group, subscription, resource group, or a single resource. A paraméter teljes erőforrás-elérési utat használ.The parameter uses a full resource path. Az egyes tárolók hatóköre a következő.The pattern for --scope for each container is as follows. Cserélje le {rName}, {rgName}, {subId}és {mgName} értékét az erőforrás nevére, az erőforráscsoport nevére, az előfizetés-AZONOSÍTÓra és a felügyeleti csoport nevére.Replace {rName}, {rgName}, {subId}, and {mgName} with your resource name, resource group name, subscription ID, and management group name, respectively. a {rType} helyére az erőforrás erőforrástípus, például egy virtuális gép Microsoft.Compute/virtualMachines.{rType} would be replaced with the resource type of the resource, such as Microsoft.Compute/virtualMachines for a VM.

    • Erőforrás-/subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}Resource - /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Erőforráscsoport – /subscriptions/{subID}/resourceGroups/{rgName}Resource group - /subscriptions/{subID}/resourceGroups/{rgName}
    • Előfizetés – /subscriptions/{subID}Subscription - /subscriptions/{subID}
    • Felügyeleti csoport – /providers/Microsoft.Management/managementGroups/{mgName}Management group - /providers/Microsoft.Management/managementGroups/{mgName}

A Azure Policy definíciós AZONOSÍTÓját a PowerShell használatával szerezheti be a következő paranccsal: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'

Az Ön által létrehozott szabályzat-definíció AZONOSÍTÓjának a következő példához hasonlónak kell lennie: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"

Az erőforrás-házirendek Azure CLI-vel való kezelésével kapcsolatos további információkért lásd: Azure CLI erőforrás-házirendek.For more information about how you can manage resource policies with Azure CLI, see Azure CLI Resource Policies.

Következő lépésekNext steps

A cikkben szereplő parancsokkal és lekérdezésekkel kapcsolatos további információkért tekintse át a következő cikkeket.Review the following articles for more information about the commands and queries in this article.