Programové vytváření zásad

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

  3. Pomocí Azure PowerShellu zaregistrujte poskytovatele prostředků Azure Policy Insights 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 získáte v části Instalace Azure CLI ve 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 nad prostředky. Dalším krokem je naučit se programově vytvářet a přiřazovat zásady. Ukázkové zásady auditují účty úložiště 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.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 Struktura definic služby Azure Policy.

  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, naleznete 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žte ho 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á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
    

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

    Tento Scope parametr New-AzPolicyAssignment funguje se skupinou pro správu, předplatným, skupinou prostředků nebo jedním prostředkem. Parametr používá úplnou cestu k prostředku, kterou ResourceId vlastnost vrátí Get-AzResourceGroup . Vzor pro Scope každý kontejner je následující. Nahraďte {rName}název prostředku, {mgName} {rgName}{subId}název skupiny prostředků, ID předplatného a název skupiny pro správu. {rType}by se nahradil typem prostředku 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 PowerShell najdete v tématu Az.Resources.

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

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 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í {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 služby 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 do 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 Struktura definic služby Azure Policy.

  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 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ž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žte ji do skupiny pro správu. Vyžaduje řetězcovou hodnotu.
  3. K vytvoření přiřazení zásady použijte následující příkaz. Nahraďte ukázkové informace v symbolech úhlových závorek < > vlastními hodnotami.

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

    Tento scope parametr az policy assignment create funguje se skupinou pro správu, předplatným, skupinou prostředků nebo jedním prostředkem. Parametr používá úplnou cestu k prostředku. Vzor pro scope každý kontejner je následující. Nahraďte {rName}název prostředku, {mgName} {rgName}{subId}název skupiny prostředků, ID předplatného a název skupiny pro správu. {rType}by se nahradil typem prostředku 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 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.