Programové vytváření zásad

Tento článek vás provede programovým vytvářením a správou zásad. Azure Policy definice vynucují u vašich prostředků různá pravidla a účinky. 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ěny 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 modul Azure PowerShell na nejnovější verzi. Podrobné informace najdete v tématu Instalace modulu Azure PowerShell. Další informace o nejnovější verzi najdete v tématu Azure PowerShell.

  3. Zaregistrujte poskytovatele prostředků Azure Policy Insights 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 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 můžete získat v tématu Instalace Azure CLI ve Windows.

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

Prvním krokem k lepší viditelnosti vašich prostředků je vytvoření a přiřazení zásad pro vaše prostředky. V dalším kroku se dozvíte, jak programově vytvořit a přiřadit zásadu. Ukázková zásada 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ásad pomocí PowerShellu

  1. Pomocí následujícího fragmentu kódu JSON vytvořte soubor JSON s názvem AuditStorageAccounts.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í definice zásad najdete v tématu Azure Policy Definition Structure.

  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 Auditovat účty úložiště otevřené pro veřejné sítě. Další informace o dalších parametrech, které můžete použít, najdete v tématu New-AzPolicyDefinition.

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

    • SubscriptionId – uložení do jiného předplatného. Vyžaduje hodnotu GUID .
    • ManagementGroupName – uložení do skupiny pro správu. Vyžaduje řetězcovou hodnotu.
  3. Po vytvoření definice zásad můžete vytvořit přiřazení zásad 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 Scope pro New-AzPolicyAssignment funguje se skupinou pro správu, předplatným, skupinou prostředků nebo s jedním prostředkem. Parametr používá úplnou cestu k prostředku, kterou vrátí vlastnost Get-AzResourceGroupResourceId. Vzor pro obor pro každý kontejner je následující. Nahraďte {rName}, {subId}{rgName}a {mgName} názvem prostředku, názvem skupiny prostředků, ID předplatného a názvem skupiny pro správu. {rType} se nahradí typem prostředku , například Microsoft.Compute/virtualMachines pro virtuální počítač.

    • Zdrojů- /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ásad 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. Vytvořte definici zásady pomocí jednoho z následujících volání:

    # 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í {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 definice Azure Policy – Vytvoření nebo aktualizace a Definice zásad – Vytvoření nebo aktualizace ve skupině 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 ukázkové informace 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ásad:

    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 ukázkové informace v <> symbolech vlastními hodnotami.

    Další informace o volání http rozhraní REST API najdete v tématu Prostředky rozhraní Azure REST API.

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

Pokud chcete vytvořit definici 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í definice zásad najdete v tématu Azure Policy Definition Structure.

  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 Auditovat účty úložiště otevřené pro veřejné sítě. Další informace o dalších parametrech, které můžete použít, najdete v tématu az policy definition create.

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

    • předplatné – Uložit 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.
    • management-group – uložení do skupiny pro správu. Vyžaduje řetězcovou hodnotu.
  3. Pomocí následujícího příkazu vytvořte přiřazení zásad. Nahraďte ukázkové informace v <> symbolech vlastními hodnotami.

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

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

    • Zdrojů- /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 můžete získat pomocí PowerShellu 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 se mělo podobat následujícímu příkladu:

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

Další informace o tom, jak můžete spravovat zásady 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.