Programové vytváření zásad

Tento článek vás provede programově vytvářením a správou zásad. Azure Policy definice vynucovat různá pravidla a účinky na vaše prostředky. Vynucení zajišťuje, aby prostředky zůstaly v souladu s vašimi firemními standardy a smlouvami o úrovni služeb.

Informace o dodržování předpisů najdete v tématu získání dat o dodržování předpisů.

Požadavky

Než začnete, ujistěte se, že jsou splněné následující požadavky:

  1. Pokud jste to ještě neudělali, nainstalujte si nástroj ARMClient. Jedná se o nástroj, který posílá žádosti HTTPS do rozhraní API založených na Azure Resource Manageru.

  2. Aktualizujte svůj Azure PowerShell na nejnovější verzi. Podrobné informace najdete v Azure PowerShell modulu Install Azure PowerShell module. Další informace o nejnovější verzi najdete v tématu Azure PowerShell.

  3. Zaregistrujte poskytovatele Azure Policy Přehledy prostředků pomocí Azure PowerShell a ověřte, že vaše předplatné funguje s poskytovatelem prostředků. Pokud chcete zaregistrovat poskytovatele prostředků, musíte mít oprávnění ke spuštění operace akce registrace pro poskytovatele prostředků. Tato operace je součástí rolí Přispěvatel a Vlastník. Spuštěním následujícího příkazu zaregistrujte poskytovatele prostředků:

    Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
    

    Další informace o registraci a zobrazení poskytovatelů prostředků najdete v tématu Poskytovatelé a typy prostředků.

  4. Pokud jste to ještě neudělali, nainstalujte Azure CLI. Nejnovější verzi najdete v instalačním programu Azure CLI na Windows.

Vytvoření a přiřazení definice zásady

Prvním krokem k lepší viditelnosti vašich prostředků je vytvoření a přiřazení zásad pro vaše prostředky. Dalším krokem je naučit se programově vytvářet a přiřazovat zásady. Příklad zásady audituje účty úložiště, které jsou otevřené pro všechny veřejné sítě pomocí PowerShellu, Azure CLI a požadavků HTTP.

Vytvoření a přiřazení definice zásady pomocí PowerShellu

  1. Pomocí následujícího fragmentu kódu JSON vytvořte soubor JSON s názvem, AuditStorageAccounts.jsje.

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

    Další informace o vytváření definic zásad najdete v tématu Azure Policy struktury definic.

  2. Spuštěním následujícího příkazu vytvořte definici zásady pomocí souboru AuditStorageAccounts.json.

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

    Příkaz vytvoří definici zásady s názvem Audit Storage Accounts Open to Public Networks .) Další informace o dalších parametrech, které můžete použít, najdete v tématu New-AzPolicyDefinition.

    Při volání bez parametrů umístění se ve výchozím nastavení ukládá definice zásady ve vybraném předplatném New-AzPolicyDefinition kontextu relací. Pokud chcete definici uložit do jiného umístění, použijte následující parametry:

    • SubscriptionId – Uložte ho do jiného předplatného. Vyžaduje hodnotu GUID.
    • ManagementGroupName – Uloží se do skupiny pro správu. Vyžaduje řetězcovou hodnotu.
  3. Po vytvoření definice zásady můžete vytvořit přiřazení zásady spuštěním následujících příkazů:

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

    Nahraďte ContosoRG názvem vaší zamýšlené skupiny prostředků.

    Parametr Obor u funguje New-AzPolicyAssignment se skupinou pro správu, předplatným, skupinou prostředků nebo jedním prostředekem. Parametr používá úplnou cestu k prostředku, kterou vrátí vlastnost ResourceId Get-AzResourceGroup pro . Vzor pro Scope pro každý kontejner je následující. Nahraďte , , a názvem vašeho prostředku, názvem skupiny {rName} {rgName} {subId} prostředků, ID předplatného a názvem skupiny {mgName} pro správu. {rType} by se nahradil typem prostředku prostředku, například Microsoft.Compute/virtualMachines pro virtuální počítač.

    • Prostředek – /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Skupina prostředků – /subscriptions/{subId}/resourceGroups/{rgName}
    • Předplatné – /subscriptions/{subId}
    • Skupina pro správu – /providers/Microsoft.Management/managementGroups/{mgName}

Další informace o správě zásad prostředků pomocí modulu Resource Manager PowerShellu najdete v tématu Az.Resources.

Vytvoření a přiřazení definice zásady pomocí ARMClient

Pomocí následujícího postupu vytvořte definici zásady.

  1. Zkopírujte následující fragment kódu JSON a vytvořte soubor JSON. Soubor zavoláte v dalším kroku.

    "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. Pomocí jednoho z následujících volání vytvořte definici zásady:

    # 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>
    

    Nahraďte předchozí id předplatného {subscriptionId} ID vašeho předplatného nebo {managementGroupId} ID vaší skupiny pro správu.

    Další informace o struktuře dotazu najdete v tématu Azure Policy – Vytvoření nebo aktualizace a definice zásad – Vytvoření nebo aktualizace skupiny pro správu.

Pomocí následujícího postupu vytvořte přiřazení zásady a přiřaďte definici zásady na úrovni skupiny prostředků.

  1. Zkopírujte následující fragment kódu JSON a vytvořte soubor přiřazení zásad JSON. Nahraďte příklady informací < > v symbolech vlastními hodnotami.

    {
        "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. Pomocí následujícího volání vytvořte přiřazení zásady:

    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>
    

    Nahraďte příklady informací < > v symbolech vlastními hodnotami.

    Další informace o volání HTTP na REST API najdete v tématu Azure REST API Resources.

Vytvoření a přiřazení definice zásady pomocí Azure CLI

K vytvoření definice zásady použijte následující postup:

  1. Zkopírujte následující fragment kódu JSON a vytvořte soubor přiřazení zásad JSON.

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

    Další informace o vytváření definic zásad najdete v tématu Azure Policy struktury definic.

  2. Spuštěním následujícího příkazu vytvořte definici zásady:

    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
    

    Příkaz vytvoří definici zásady s názvem Audit Storage Accounts Open to Public Networks .) Další informace o dalších parametrech, které můžete použít, najdete v tématu az policy definition create.

    Při volání bez parametrů umístění se ve výchozím nastavení ukládá definice zásady ve vybraném předplatném az policy definition creation kontextu relací. Pokud chcete definici uložit do jiného umístění, použijte následující parametry:

    • subscription (předplatné) – Uložte ho do jiného předplatného. Vyžaduje hodnotu GUID pro ID předplatného nebo řetězcovou hodnotu pro název předplatného.
    • skupina pro správu – Uložit do skupiny pro správu. Vyžaduje řetězcovou hodnotu.
  3. Pomocí následujícího příkazu vytvořte přiřazení zásady. Nahraďte příklady informací < > v symbolech vlastními hodnotami.

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

    Parametr scope v funguje az policy assignment create se skupinou pro správu, předplatným, skupinou prostředků nebo jedním prostředekem. Parametr používá úplnou cestu k prostředku. Obor pro každý kontejner je následující. Nahraďte , , a názvem vašeho prostředku, názvem skupiny {rName} {rgName} {subId} prostředků, ID předplatného a názvem skupiny {mgName} pro správu. {rType} by se nahradil typem prostředku prostředku, například Microsoft.Compute/virtualMachines pro virtuální počítač.

    • Prostředek – /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Skupina prostředků – /subscriptions/{subID}/resourceGroups/{rgName}
    • Předplatné – /subscriptions/{subID}
    • Skupina pro správu – /providers/Microsoft.Management/managementGroups/{mgName}

ID definice Azure Policy pomocí PowerShellu můžete získat pomocí následujícího příkazu:

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

ID definice zásady pro definici zásady, kterou jste vytvořili, by mělo vypadat podobně jako v následujícím příkladu:

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

Další informace o správě zásad prostředků pomocí Azure CLI najdete v tématu Zásady prostředků Azure CLI.

Další kroky

Další informace o příkazech a dotazech v tomto článku najdete v následujících článcích.