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 pro 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 bezplatný účet před tím, než začnete.

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žijeme jako cíl pro ilustraci příslušných kroků běžný požadavek na podnikové zabezpečení:

  • Každý účet úložiště musí mít povolený protokol HTTPS.
  • Každý účet úložiště musí být zakázaný pro protokol HTTP.

Vaše požadavky by měly jasně identifikovat stavy prostředků "být" i "ne být".

I když jsme definovali očekávaný stav prostředku, ještě jsme nedefinovali, co chceme udělat s prostředky, které nedodržují předpisy. Azure Policy podporuje mnoho efektů. V tomto kurzu definujeme obchodní požadavek, který brání vytvoření prostředků, pokud nejsou kompatibilní s obchodními pravidly. Abychom tohoto cíle splnili, použijeme efekt Zamítnout . Chceme také možnost pozastavit zásady pro konkrétní přiřazení. Jako takový použijeme efekt Disabled a nastavíme ho 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ě. Neznáme ale vlastnosti, které by se v definici zásady použily. Azure Policy se vyhodnocuje oproti reprezentaci prostředku JSON, takže budeme muset porozumět vlastnostem, které jsou u tohoto prostředku dostupné.

Existuje mnoho způsobů, jak určit vlastnosti prostředku Azure. V tomto kurzu se na ně podíváme:

  • Rozšíření Azure Policy pro VS Code
  • Šablony Azure Resource Manager (šablony ARM)
    • Export existujícího prostředku
    • Prostředí pro vytváření
    • Šablony pro rychlý start (GitHub)
    • Referenční dokumentace k šablonám
  • Průzkumník prostředků Azure

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 části Nastavení) v Azure Portal pro daný konkrétní prostředek.

Upozornění

Šablonu ARM exportovanou Azure Portal není možné připojit přímo do deployment vlastnosti šablony ARM v definici zásady deployIfNotExists.

Snímek obrazovky se stránkou Export šablony u existujícího prostředku v Azure Portal

Pokud to uděláte pro účet úložiště, zobrazí se š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": []
}]
...

Ve vlastnostech je hodnota s názvem supportsHttpsTrafficOnly nastavená na false. Tato vlastnost vypadá, že se může jednat o vlastnost, které hledáme. Také typ prostředku je Microsoft.Storage/storageAccounts. Typ umožňuje omezit zásadu pouze 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 je na kartě Upřesnit možnost Vyžadován přenos zabezpečení. Tato vlastnost má možnosti Zakázáno a Povoleno. Ikona s informacemi obsahuje další text, který potvrzuje, že tato možnost je pravděpodobně požadovanou vlastností. Portál nám ale nesdělí název vlastnosti na této obrazovce.

Na kartě Zkontrolovat a vytvořit se v dolní části stránky zobrazí odkaz Stáhnout šablonu pro automatizaci. Výběrem odkazu otevřete šablonu, která vytvoří prostředek, který jsme nakonfigurovali. V tomto případě vidíme dvě klíčové informace:

...
"supportsHttpsTrafficOnly": {
    "type": "bool"
}
...
"properties": {
    "accessTier": "[parameters('accessTier')]",
    "supportsHttpsTrafficOnly": "[parameters('supportsHttpsTrafficOnly')]"
}
...

Tyto informace nám sdělují typ vlastnosti a také potvrzují , že vlastnost supportsHttpsTrafficOnly je vlastnost, která se hledá.

Šablony pro rychlý start na GitHubu

Šablony Azure pro rychlý start na GitHubu obsahují stovky šablon ARM vytvořených 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 řídí něco jiného.

Referenční dokumentace k prostředkům

Pokud chcete ověřit správnost vlastnosti supportsHttpsTrafficOnly , projděte si referenční informace k šablonám ARM pro prostředek účtu úložiště u poskytovatele úložiště. Objekt properties obsahuje seznam platných parametrů. Výběrem odkazu StorageAccountPropertiesCreateParameters-object zobrazíte tabulku přijatelných vlastností. supportsHttpsTrafficOnly je k dispozici a popis odpovídá tomu, co hledáme pro splnění obchodních požadavků.

Průzkumník prostředků Azure

Další způsob, jak prozkoumat prostředky Azure, je Azure Resource Explorer (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 podívejte se na vlastnosti. Vidíme zde také vlastnost supportsHttpsTrafficOnly . 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 potřebujeme ji namapovat na alias.

Existuje několik způsobů, jak určit aliasy pro prostředek Azure. V tomto kurzu se na ně podíváme:

  • Rozšíření Azure Policy pro VS Code
  • Azure CLI
  • 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 Resource Manager režimu 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. Obor názvů Microsoft.Storage vyfiltrujeme na základě podrobností, které jsme o prostředku Azure získali 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. Obor názvů Microsoft.Storage vyfiltrujeme na základě podrobností, které jsme o prostředku Azure získali 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 Azure CLI výsledky zobrazují alias podporovaný účty úložiště s názvem supportsHttpsTrafficOnly.

Určení efektu, který se má použít

Rozhodnutí, co dělat s prostředky, které nedodržují předpisy, je téměř stejně důležité jako rozhodnutí, co se má vyhodnotit. Každá možná odpověď na prostředek, který nedodržuje předpisy, se nazývá efekt. Efekt určuje, jestli je prostředek, který nedodržuje předpisy, protokolovaný, blokovaný, má připojená data nebo k němu je přidružené nasazení, aby se prostředek vrátil do vyhovujícího stavu.

V našem příkladu je efekt Zamítnutí, který chceme, protože nechceme, aby se v prostředí Azure vytvářely prostředky, které nedodržují předpisy. Audit je dobrou první volbou pro efekt zásad, aby bylo možné určit, jaký má zásada dopad, než ji nastavíte na Odepřít. Jedním ze způsobů, jak usnadnit změnu efektu na přiřazení, je parametrizovat efekt. Podrobnosti o postupu najdete v následujících 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 ještě nejste obeznámeni s jazykem zásad, podívejte se na strukturu definic zásad a zjistěte jak strukturovat definici zásady. Tady je prázdná šablona, jak definice zásad vypadá:

{
    "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 se snadno poskytují, protože víme, pro co pravidlo vytváříme. Režim je primárně o značkách a umístění prostředků. Vzhledem k tomu, že vyhodnocení nemusíme omezovat na prostředky, které podporují značky, použijeme pro režimhodnotu all.

"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 ke změně vyhodnocení nepoužíli parametr, chceme ho použít, abychom umožnili změnu efektu pro řešení potíží. Definujeme parametr effectType a omezíme ho pouze na Deny a Disabled. Tyto dvě možnosti odpovídají našim obchodním požadavkům. Dokončený 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, které je potřeba otestovat:

  • Typ účtu úložiště je Microsoft.Storage/storageAccounts.
  • Účet úložiště podporujeHttpsTrafficOnly není pravdivý.

Vzhledem k tomu, že potřebujeme, aby oba tyto příkazy byly pravdivé, použijeme logický operátorallOf. Místo statické deklarace předáme do efektu parametr effectType . 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

Když jsou definované všechny tři části zásad, tady 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 zkontrolujte příkazy pro každý z nich a ověřte správné využ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ího postupu odstraňte všechna přiřazení nebo definice vytvořené výše:

  1. V části Vytváření obsahu na levé straně stránky Azure Policy vyberte Definice (nebo Přiřazení, pokud se pokoušíte odstranit přiřazení).

  2. Vyhledejte novou definici iniciativy nebo zásady (nebo přiřazení), kterou chcete odebrat.

  3. 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í).

Opakování

V tomto kurzu jste úspěšně provedli následující úlohy:

  • Zjištění vašich obchodních požadavků
  • Namapovaný každý požadavek na vlastnost prostředku Azure
  • Namapovaná vlastnost na alias
  • Určení účinku, který se má použít
  • Sesložil definici zásady.

Další kroky

Dále pomocí vlastní definice zásady vytvořte a přiřaďte zásadu: