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 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
  • Mapujte vlastnost na alias
  • Určení účinku, který se má použít
  • Vytvořte definici 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 jak stavy prostředků "když jsou", tak stavy "když nejsou".

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í zdroje

Na základě obchodního požadavku je zdroj Azure, který má být auditován pomocí "Azure Policy", úložným účtem. 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 tohoto tutoriálu:

  • Rozšíření Azure Policy pro VS Code
  • Šablony Azure Resource Manageru (šablony ARM)
    • Exportovat stávající zdroj
    • Zážitek z tvorby
    • Šablony pro rychlý start (GitHub)
    • Referenční dokumenty k šablonám
  • Azure Resource Explorer.

Zobrazit prostředky 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í zdroj 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.

Varování

Šablonu ARM exportovanou prostřednictvím portálu Azure není možné přímo připojit k vlastnosti deployment š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": []
  }
]

V properties části je hodnota s názvem supportsHttpsTrafficOnly nastavena na false. Tato nemovitost vypadá, že by mohla být tou, kterou hledáme. Také je type zdroj Microsoft.Storage/storageAccounts. Tento typ nám umožňuje omezit zásadu jenom na prostředky tohoto typu.

Vytvořte prostředek na portálu

Dalším způsobem, jak projít portálem, je zážitek z vytváření prostředků. Při vytváření účtu úložiště prostřednictvím portálu je možnost Vyžadován zabezpečený přenos 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 nemovitosti a také potvrzují, že supportsHttpsTrafficOnly je nemovitost, kterou hledáme.

Šablony pro rychlý start na GitHubu

Azure Quickstart Templates na GitHubu mají 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 jako to, co hledáte, ale ovládají něco jiného.

Referenční dokumentace ke zdrojům

Ověřte, zda je supportsHttpsTrafficOnly správná vlastnost, tím, že zkontrolujete 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.

Azure Resource Explorer

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í identity můžete procházet podle poskytovatelů, předplatných, skupin prostředků a prostředků.

Vyhledejte prostředek účtu pro úložiště a prohlédněte si jeho vlastnosti. Vidíme tu i supportsHttpsTrafficOnly 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 přiřadit k aliasu.

Existuje několik způsobů, jak určit aliasy pro prostředek Azure. Podíváme se na každý z tohoto tutoriálu:

  • 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 VS Code usnadňuje procházení vašich 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 vytvářet nevyhovující prostředky v našem prostředí Azure. Audit je dobrou první volbou pro určení účinku zásady, aby se před nastavením deny zjistilo, jaký má zásada účinek. Jedním ze způsobů, jak usnadnit změnu efektu pro každé přiřazení, je parametrizovat efekt. Podrobnosti najdete v parametrech .

Vytvoření definice

Teď máme podrobnosti o nemovitosti a alias, který plánujeme spravovat. Dále vytvoříme samotné pravidlo zásad. Pokud nejste obeznámeni s jazykem zásad, odkazujte na strukturu definice zásady, 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 je snadné jim přiřadit hodnoty, protože víme, pro co vytváříme pravidlo. Režim se především týká značek a umístění prostředků. Vzhledem k tomu, že nepotřebujeme omezit vyhodnocení na prostředky, které podporují značky, použijte hodnotu all 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žili parametr, chceme použít parametr, abychom umožnili změnu effect pro řešení potíží. Definujete parametr effectType a omezíte ho pouze 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"
    }
  }
},

Zásadové pravidlo

Vytvoření pravidla zásad je posledním krokem při vytváření vlastní definice zásad. Identifikovali jsme dvě tvrzení k testování.

  • Účet type úložiště je Microsoft.Storage/storageAccounts.
  • Účet supportsHttpsTrafficOnly úložiště není true.

Vzhledem k tomu, že oba tyto příkazy potřebujeme, aby byly pravdivé, použijte allOflogický 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

Po definování všech tří částí zásady je zde naše konečná 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:

  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.
  • Namapovali vlastnost na alias
  • Určuje účinek, který se má použít.
  • Vytvořil definici zásady.

Další kroky

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