Sdílet prostřednictvím


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 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. V tomto kurzu použijeme 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, ještě jsme nedefinovali, 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 Odepřít . Chceme také možnost pozastavit zásady pro konkrétní přiřazení. Proto použijeme zakázaný efekt a v definici zásady vytvoříme parametr.

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 budeme muset 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í 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í) 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 .

Snímek obrazovky se stránkou Exportovat šablonu na existujícím prostředku na webu Azure Portal

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": []
}]
...

Pod vlastnostmi je hodnota s názvem supportsHttpsTrafficOnly nastavena na false. Tato vlastnost vypadá, jako by to mohla být vlastnost, která hledáme. Typ prostředku je také Microsoft.Storage/storageAccounts. 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 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 informace obsahuje další text, 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í, že supportsHttpsTrafficOnly je vlastnost, která hledáme.

Š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 ovládejte něco jiného.

Referenční dokumentace k prostředkům

Pokud chcete ověřit , jestli podporujeHttpsTrafficOnly 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 StorageAccountPropertiesCreateParameters-object se zobrazí tabulka přijatelných vlastností. supportsHttpsTrafficOnly je k dispozici a popis odpovídá tomu, co hledáme, aby splňovaly obchodní 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 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 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
  • 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 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. Na základě podrobností, které jsme získali o prostředku Azure, vyfiltrujeme obor názvů Microsoft.Storage .

# 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. Na základě podrobností, které jsme získali o prostředku Azure, vyfiltrujeme obor názvů Microsoft.Storage .

# 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 zobrazuje 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 odepření efektu, který chceme, protože nechceme prostředky, které nedodržují předpisy, vytvářet v našem prostředí Azure. Audit je dobrou volbou pro účinek zásad, aby před nastavením zásady na Odepřít určil, jaký je dopad zásady. Jedním ze způsobů, jak usnadnit změnu efektu na přiřazení, je parametrizovat efekt. Podrobnosti o postupu najdete v níže uvedený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 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 není potřeba omezit hodnocení na prostředky, které podporují značky, použijeme pro režim všechny hodnoty.

"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 efektu řešení potíží. Definujeme parametr effectType a omezíme ho jenom na Deny 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í:

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

Vzhledem k tomu, že oba tyto příkazy potřebujeme, aby byly pravdivé, použijeme logický operátor allOf. 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

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 vytvořené výše:

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

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

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: