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:
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.
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.
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ů.
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
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.
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.
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í vlastnostGet-AzResourceGroup
ResourceId. 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říkladMicrosoft.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}
- Zdrojů-
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.
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" } } }
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ů.
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>" } }
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:
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.
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.
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říkladMicrosoft.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}
- Zdrojů-
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.