Kurz: Vytvoření vlastní definice zásad
Definice vlastních zásad umožňuje zákazníkům definovat vlastní pravidla pro používání Azure. Tato pravidla se často vynucují:
- Postupy zabezpečení:
- Správa nákladů.
- Pravidla specifická pro organizaci (například pojmenování nebo umístění)
Bez ohledu na to, jaký je obchodní důvod pro vytvoření vlastní zásady, kroky pro definování nových vlastních zásad jsou stejné.
Před vytvořením vlastní zásady zkontrolujte ukázky zásad a zjistěte, jestli už existuje zásada, která odpovídá vašim potřebám.
Přístup k vytvoření vlastní zásady se řídí těmito kroky:
- Identifikace vašich obchodních požadavků
- Mapování jednotlivých požadavků na vlastnost prostředku Azure
- Mapování vlastnosti na alias
- Určení účinku, který se má použít
- Sestavení definice zásady
Požadavky
Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Identifikace požadavků
Před vytvořením definice zásady je důležité porozumět záměru zásady. Pro účely tohoto kurzu použijte běžný podnikový požadavek na zabezpečení jako cíl ilustrovat související kroky:
- Každý účet úložiště musí být povolený pro PROTOKOL HTTPS.
- Každý účet úložiště musí být pro protokol HTTP zakázaný.
Vaše požadavky by měly jasně identifikovat stavy prostředků", které mají být, i "není třeba".
I když jsme definovali očekávaný stav prostředku, nedefinujeme, co chceme udělat s nevyhovujícími prostředky. Azure Policy podporuje mnoho efektů. Pro účely tohoto kurzu definujeme obchodní požadavek tak, aby se zabránilo vytváření prostředků, pokud nevyhovují obchodním pravidlům. K splnění tohoto cíle použijeme efekt zamítnutí . Chceme také možnost pozastavit zásady pro konkrétní přiřazení. Použijte zakázaný efekt a nastavte efekt jako parametr v definici zásady.
Určení vlastností prostředku
Na základě obchodního požadavku je prostředek Azure, který se má auditovat pomocí Azure Policy, účtem úložiště. Vlastnosti, které se mají použít v definici zásady, ale neznáme. Azure Policy vyhodnocuje reprezentaci prostředku ve formátu JSON, takže musíme porozumět vlastnostem dostupným pro daný prostředek.
Vlastnosti prostředku Azure můžete určit mnoha způsoby. Podíváme se na každý z těchto kurzů:
- Rozšíření Azure Policy pro VS Code
- Šablony Azure Resource Manageru (šablony ARM)
- Export existujícího prostředku
- Prostředí pro vytváření
- Šablony pro rychlý start (GitHub)
- Referenční dokumenty k šablonám
- Azure Resource Explorer.
Zobrazení prostředků v rozšíření VS Code
Rozšíření VS Code lze použít k procházení prostředků ve vašem prostředí a zobrazení vlastností Resource Manageru u jednotlivých prostředků.
Šablony ARM
Existuje několik způsobů, jak se podívat na šablonu ARM, která obsahuje vlastnost, kterou chcete spravovat.
Existující prostředek na portálu
Nejjednodušší způsob, jak najít vlastnosti, je podívat se na existující prostředek stejného typu. Prostředky, které už jsou nakonfigurované s nastavením, které chcete vynutit, také poskytují hodnotu pro porovnání. Podívejte se na stránku Exportovat šablonu v Nastavení na webu Azure Portal pro daný prostředek.
Upozorňující
Šablonu ARM exportovanou na webu Azure Portal nejde připojit přímo k deployment
vlastnosti šablony ARM v definici zásady deployIfNotExists .
V případě účtu úložiště se zobrazí šablona podobná tomuto příkladu:
"resources": [
{
"comments": "Generalized from resource: '/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/mystorageaccount'.",
"type": "Microsoft.Storage/storageAccounts",
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"kind": "Storage",
"name": "[parameters('storageAccounts_mystorageaccount_name')]",
"apiVersion": "2018-07-01",
"location": "westus",
"tags": {
"ms-resource-usage": "azure-cloud-shell"
},
"scale": null,
"properties": {
"networkAcls": {
"bypass": "AzureServices",
"virtualNetworkRules": [],
"ipRules": [],
"defaultAction": "Allow"
},
"supportsHttpsTrafficOnly": false,
"encryption": {
"services": {
"file": {
"enabled": true
},
"blob": {
"enabled": true
}
},
"keySource": "Microsoft.Storage"
}
},
"dependsOn": []
}
]
V properties
části je hodnota s názvem supportsHttpsTrafficOnly
nastavena na false
. Tato vlastnost vypadá, jako by to mohla být vlastnost, která hledáme. type
Zdroj je Microsoft.Storage/storageAccounts
také . Tento typ nám umožňuje omezit zásadu jenom na prostředky tohoto typu.
Vytvoření prostředku na portálu
Dalším způsobem na portálu je prostředí pro vytváření prostředků. Při vytváření účtu úložiště prostřednictvím portálu se vyžaduje možnost na kartě Upřesnit. Tato vlastnost má možnosti Zakázáno a Povoleno. Ikona informace obsahuje více textu, který potvrzuje, že tato možnost je pravděpodobně požadovaná vlastnost. Portál nám ale na této obrazovce neřekne název vlastnosti.
Na kartě Zkontrolovat a vytvořit se v dolní části stránky zobrazí odkaz Stáhnout šablonu pro automatizaci. Výběrem odkazu se otevře šablona, která vytvoří prostředek, který jsme nakonfigurovali. V tomto případě vidíme dva klíčové informace:
...
"supportsHttpsTrafficOnly": {
"type": "bool"
}
...
"properties": {
"accessTier": "[parameters('accessTier')]",
"supportsHttpsTrafficOnly": "[parameters('supportsHttpsTrafficOnly')]"
}
...
Tyto informace nám říkají typ vlastnosti a také potvrdí supportsHttpsTrafficOnly
, že je vlastnost, která hledáme.
Šablony pro rychlý start na GitHubu
Šablony Rychlého startu Azure na GitHubu mají stovky šablon ARM vytvořené pro různé prostředky. Tyto šablony můžou být skvělým způsobem, jak najít vlastnost prostředku, kterou hledáte. Některé vlastnosti se můžou zdát, že jsou to, co hledáte, ale ovládejte něco jiného.
Referenční dokumentace k prostředkům
Pokud chcete ověřit supportsHttpsTrafficOnly
, jestli je správná vlastnost, zkontrolujte referenční informace k šabloně ARM pro prostředek účtu úložiště u poskytovatele úložiště. Objekt properties obsahuje seznam platných parametrů. Výběrem odkazu na StorageAccountPropertiesCreateParameters
objekt se zobrazí tabulka přijatelných vlastností. supportsHttpsTrafficOnly
je přítomný a popis odpovídá tomu, co hledáme v souvislosti s obchodními požadavky.
Průzkumník prostředků Azure
Další způsob, jak prozkoumat prostředky Azure, je prostřednictvím Azure Resource Exploreru (Preview). Tento nástroj používá kontext vašeho předplatného, takže se musíte ověřit na webu pomocí přihlašovacích údajů Azure. Po ověření můžete procházet poskytovatele, předplatná, skupiny prostředků a prostředky.
Vyhledejte prostředek účtu úložiště a prohlédněte si vlastnosti. Vidíme supportsHttpsTrafficOnly
tu také nemovitost. Když vyberete kartu Dokumentace , uvidíme, že popis vlastnosti odpovídá tomu, co jsme našli v referenční dokumentaci dříve.
Vyhledání aliasu vlastnosti
Identifikovali jsme vlastnost prostředku, ale musíme ji namapovat na alias.
Existuje několik způsobů, jak určit aliasy pro prostředek Azure. Podíváme se na každý z těchto kurzů:
- Rozšíření Azure Policy pro VS Code
- Rozhraní příkazového řádku Azure.
- Azure PowerShell:
Získání aliasů v rozšíření VS Code
Rozšíření Azure Policy pro rozšíření VS Code usnadňuje procházení prostředků a zjišťování aliasů.
Poznámka:
Rozšíření VS Code zveřejňuje pouze vlastnosti režimu Resource Manageru a nezobrazuje žádné vlastnosti režimu poskytovatele prostředků.
Azure CLI
V Azure CLI se k hledání aliasů prostředků používá skupina příkazů az provider
. Vyfiltrujeme Microsoft.Storage
obor názvů na základě podrobností, které jsme získali o prostředku Azure dříve.
# Login first with az login if not using Cloud Shell
# Get Azure Policy aliases for type Microsoft.Storage
az provider show --namespace Microsoft.Storage --expand "resourceTypes/aliases" --query "resourceTypes[].aliases[].name"
Ve výsledcích vidíme alias podporovaný účty úložiště s názvem supportsHttpsTrafficOnly
. Tato existence tohoto aliasu znamená, že můžeme napsat zásady pro vynucení našich obchodních požadavků.
Azure PowerShell
V Azure PowerShellu se k hledání aliasů prostředků používá rutina Get-AzPolicyAlias
. Vyfiltrujte Microsoft.Storage
obor názvů na základě podrobností, které jsme získali o prostředku Azure dříve.
# Login first with Connect-AzAccount if not using Cloud Shell
# Use Get-AzPolicyAlias to list aliases for Microsoft.Storage
(Get-AzPolicyAlias -NamespaceMatch 'Microsoft.Storage').Aliases
Podobně jako v Azure CLI se ve výsledcích zobrazí alias podporovaný účty úložiště s názvem supportsHttpsTrafficOnly
.
Určení efektu, který se má použít
Rozhodování o tom, co dělat s nevyhovujícími prostředky, je téměř stejně důležité jako rozhodování o tom, co se má vyhodnotit na prvním místě. Každá možná odpověď na nevyhovující prostředek se nazývá efekt. Účinek určuje, jestli je prostředek nevyhovující předpisům zaprotokolován, blokován, má připojená data nebo má přidružené nasazení pro umístění prostředku zpět do kompatibilního stavu.
V našem příkladu je efekt, který chceme, deny
protože nechceme, aby se v našem prostředí Azure vytvořily nevyhovující prostředky. Audit je dobrou první volbou pro účinek zásady, aby před nastavením deny
zásady určil, jaký je účinek zásady . Jedním ze způsobů, jak usnadnit změnu efektu na přiřazení, je parametrizovat efekt. Podrobnosti najdete v parametrech .
Vytvoření definice
Teď máme podrobnosti o vlastnosti a alias pro to, co plánujeme spravovat. Dále vytvoříme samotné pravidlo zásad. Pokud jazyk zásad neznáte, odkazujte na strukturu definic zásad, jak definici zásady strukturovat. Tady je prázdná šablona toho, jak vypadá definice zásady:
{
"properties": {
"displayName": "<displayName>",
"description": "<description>",
"mode": "<mode>",
"parameters": {
<parameters>
},
"policyRule": {
"if": {
<rule>
},
"then": {
"effect": "<effect>"
}
}
}
}
Metadata
První tři komponenty jsou metadata zásad. Tyto komponenty jsou snadno poskytovat hodnoty, protože víme, pro co vytváříme pravidlo. Režim je primárně o značkách a umístění prostředků. Vzhledem k tomu, že nepotřebujeme omezit hodnocení na prostředky, které podporují značky, použijte pro .mode
"displayName": "Deny storage accounts not using only HTTPS",
"description": "Deny storage accounts not using only HTTPS. Checks the supportsHttpsTrafficOnly property on StorageAccounts.",
"mode": "all",
Parametry
I když jsme pro změnu vyhodnocení nepoužíli parametr, chceme použít parametr, abychom umožnili změnu effect
řešení potíží. Definujete effectType
parametr a omezíte ho pouze deny
na parametr a disabled
. Tyto dvě možnosti odpovídají našim obchodním požadavkům. Hotový blok parametrů vypadá jako v tomto příkladu:
"parameters": {
"effectType": {
"type": "string",
"defaultValue": "Deny",
"allowedValues": [
"Deny",
"Disabled"
],
"metadata": {
"displayName": "Effect",
"description": "Enable or disable the execution of the policy"
}
}
},
Pravidlo zásad
Vytvoření pravidla zásad je posledním krokem při vytváření vlastní definice zásad. Identifikovali jsme dva příkazy k otestování:
- Účet
type
úložiště jeMicrosoft.Storage/storageAccounts
. - Účet
supportsHttpsTrafficOnly
úložiště nenítrue
.
Vzhledem k tomu, že oba tyto příkazy potřebujeme, aby byly pravdivé, použijte allOf
logický operátor. effectType
Místo vytvoření statické deklarace předejte parametr k efektu. Dokončené pravidlo vypadá jako v tomto příkladu:
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
},
{
"field": "Microsoft.Storage/storageAccounts/supportsHttpsTrafficOnly",
"notEquals": "true"
}
]
},
"then": {
"effect": "[parameters('effectType')]"
}
Dokončená definice
Se všemi třemi částmi definovaných zásad je naše dokončená definice:
{
"properties": {
"displayName": "Deny storage accounts not using only HTTPS",
"description": "Deny storage accounts not using only HTTPS. Checks the supportsHttpsTrafficOnly property on StorageAccounts.",
"mode": "all",
"parameters": {
"effectType": {
"type": "string",
"defaultValue": "Deny",
"allowedValues": [
"Deny",
"Disabled"
],
"metadata": {
"displayName": "Effect",
"description": "Enable or disable the execution of the policy"
}
}
},
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
},
{
"field": "Microsoft.Storage/storageAccounts/supportsHttpsTrafficOnly",
"notEquals": "true"
}
]
},
"then": {
"effect": "[parameters('effectType')]"
}
}
}
}
Dokončenou definici je možné použít k vytvoření nové zásady. Portál a každá sada SDK (Azure CLI, Azure PowerShell a ROZHRANÍ REST API) přijímají definici různými způsoby, proto si projděte příkazy pro ověření správného použití. Pak ji přiřaďte pomocí parametrizovaného účinku k příslušným prostředkům, abyste spravovali zabezpečení účtů úložiště.
Vyčištění prostředků
Pokud jste dokončili práci s prostředky z tohoto kurzu, pomocí následujících kroků odstraňte všechna přiřazení nebo definice, které jste vytvořili:
V části Vytváření na levé straně stránky Azure Policy vyberte Definice (nebo Přiřazení, pokud se pokoušíte odstranit přiřazení).
Vyhledejte novou definici iniciativy nebo zásady (nebo přiřazení), kterou chcete odebrat.
Klikněte na řádek pravým tlačítkem nebo vyberte tři tečky na konci definice (nebo přiřazení) a pak vyberte Odstranit definici (nebo Odstranit přiřazení).
Přehled
V tomto kurzu jste úspěšně provedli následující úlohy:
- Zjištění obchodních požadavků
- Namapovali jsme každý požadavek na vlastnost prostředku Azure.
- Namapovaná vlastnost na alias
- Určuje účinek, který se má použít.
- Skládá se z definice zásady.
Další kroky
Dále pomocí definice vlastní zásady vytvořte a přiřaďte zásadu: