Oktatóanyag: Egyéni szabályzatdefiníció létrehozása

Az egyéni szabályzatdefiníciók segítségével az ügyfelek saját szabályokat határozhatnak meg az Azure használatához. Ezek a szabályok gyakran az alábbiakat kényszerítik ki:

  • Biztonsági eljárások
  • Költségkezelés
  • Szervezetspecifikus szabályok (például elnevezés vagy helyek)

Az egyéni szabályzat létrehozásának üzleti indokától függetlenül az új egyéni szabályzat definiálásának lépései ugyanazok.

Egyéni szabályzat létrehozása előtt tekintse meg a szabályzatmintákat annak megállapításához, hogy létezik-e már az igényeinek megfelelő szabályzat.

Az egyéni szabályzatok létrehozásának megközelítése az alábbi lépéseket követi:

  • Az üzleti követelmények azonosítása
  • Az egyes követelmények leképezése egy Azure-erőforrástulajdonságra
  • A tulajdonság leképezése egy aliasra
  • A használni kívánt hatás meghatározása
  • A szabályzatdefiníció összeállítása

Előfeltételek

Ha nem rendelkezik Azure-előfizetéssel, mindössze néhány perc alatt létrehozhat egy ingyenes fiókot a virtuális gép létrehozásának megkezdése előtt.

Követelmények azonosítása

A szabályzatdefiníció létrehozása előtt fontos megérteni a szabályzat célját. Ebben az oktatóanyagban egy gyakori vállalati biztonsági követelményt használunk az érintett lépések szemléltetésére:

  • Minden tárfiókot engedélyezni kell a HTTPS-hez
  • Minden tárfiókot le kell tiltani a HTTP-hez

A követelményeknek egyértelműen azonosítaniuk kell a "lenni" és a "nem lenni" erőforrásállapotokat.

Bár meghatároztuk az erőforrás várt állapotát, még nem határoztuk meg, hogy mit szeretnénk tenni a nem megfelelő erőforrásokkal. Azure Policy számos effektust támogat. Ebben az oktatóanyagban az üzleti követelményt úgy határozzuk meg, hogy megakadályozza az erőforrások létrehozását, ha azok nem felelnek meg az üzleti szabályoknak. Ennek a célnak a teljesítéséhez a Megtagadás effektust fogjuk használni. Azt is szeretnénk, ha bizonyos hozzárendelések esetében felfüggesztenénk a szabályzatot. Ezért a Letiltott effektust fogjuk használni, és az effektust paraméterként fogjuk használni a szabályzatdefinícióban.

Erőforrás tulajdonságainak meghatározása

Az üzleti követelmény alapján az Azure Policyvel auditálandó Azure-erőforrás egy tárfiók. A szabályzatdefinícióban használandó tulajdonságok azonban nem ismertek. Azure Policy kiértékeli az erőforrás JSON-ábrázolását, ezért meg kell értenünk az erőforráson elérhető tulajdonságokat.

Az Azure-erőforrások tulajdonságainak meghatározására számos módon van lehetőség. Az oktatóanyag mindegyikét áttekintjük:

  • Azure Policy-bővítmény VSCode-hoz
  • Azure Resource Manager-sablonok (ARM-sablonok)
    • Meglévő erőforrás exportálása
    • Létrehozási funkció
    • Gyorssablonok (GitHub)
    • Sablonok referenciadokumentumai
  • Azure Resource Explorer

Erőforrások megtekintése a VS Code-bővítményben

A VS Code-bővítménnyel megkeresheti az erőforrásokat a környezetben, és megtekintheti az egyes erőforrások Resource Manager-tulajdonságait.

ARM-sablonok

Számos módon megtekintheti azt az ARM-sablont, amely a kezelni kívánt tulajdonságot tartalmazza.

Meglévő erőforrás a portálon

A tulajdonságok keresésének legegyszerűbb módja egy azonos típusú, meglévő erőforrás megtekintése. A kikényszeríteni kívánt beállítással konfigurált erőforrások az összehasonlítás alapját adó értéket is megadják. Az adott erőforráshoz tartozó Azure Portal tekintse meg a Sablon exportálása lapot (a Beállítások területen).

Figyelmeztetés

A Azure Portal által exportált ARM-sablon nem csatlakoztatható közvetlenül egy deployment ARM-sablon tulajdonságához a deployIfNotExists szabályzatdefinícióban.

Képernyőkép a sablon exportálása lapról egy meglévő erőforráson Azure Portal.

Ha így tesz egy tárfiók esetében, a következő példához hasonló sablon jelenik meg:

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

A tulajdonságok alatt egy nevű érték támogatja aHttpsTrafficOnlytulajdonságot false (hamis) értékre állítva. Ez a tulajdonság valószínűleg a keresett tulajdonság. Emellett az erőforrás típusaa Microsoft.Storage/storageAccounts. A típus lehetővé teszi, hogy a szabályzatot csak az ilyen típusú erőforrásokra korlátozzuk.

Erőforrás létrehozása a portálon

A portálon használható másik módszer az erőforrás-létrehozási funkció. Amikor tárfiókot hoz létre a portálon, a Speciális lap egyik beállítása a Biztonságos átvitelre van szükség. Ez a tulajdonság Letiltva és Engedélyezve beállítással rendelkezik. Az információs ikon további szöveggel rendelkezik, amely megerősíti, hogy ez a lehetőség valószínűleg a kívánt tulajdonság. A portál azonban nem adja meg a tulajdonság nevét ezen a képernyőn.

A Felülvizsgálat + létrehozás panelen a lap alján található az Automatizálási sablon letöltése hivatkozás a sablon letöltéséhez. A hivatkozás kiválasztásával megnyílik a konfigurált erőforrást létrehozó sablon. Ebben az esetben két fontos információt látunk:

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

Ez az információ elárulja a tulajdonság típusát, és megerősíti, hogy ahttpsTrafficOnly a keresett tulajdonság.

Gyorssablonok a GitHubon

A GitHubon elérhető Azure-gyorssablonok több száz, a különböző erőforrásokhoz készült ARM-sablont biztosítanak. Ezekkel a sablonokkal egyszerűen megtalálhatja a keresett erőforrás-tulajdonságot. Előfordulhat, hogy bizonyos tulajdonságokat keres, de más tulajdonságokat is vezérelhet.

Erőforrások referenciadokumentumai

AhttpsTrafficOnly helyes tulajdonság ellenőrzéséhez ellenőrizze a társzolgáltató tárfiók-erőforrásának ARM-sablonreferenciáját. A tulajdonságokat tartalmazó objektum tartalmazza az érvényes paraméterek listáját. A StorageAccountPropertiesCreateParameters-object hivatkozás kiválasztásával egy elfogadható tulajdonságokat tartalmazó táblázat jelenik meg. támogatja aHttpsTrafficOnly lehetőséget, és a leírás megegyezik azzal, amit keresünk, hogy megfeleljen az üzleti követelményeknek.

Azure Resource Explorer

Az Azure-erőforrások megismerésének egy másik módja az Azure Resource Explorer (előzetes verzió) használata. Ez az eszköz az előfizetés kontextusát használja, a webhelyen hitelesíteni kell magát az Azure-beli hitelesítő adataival. A hitelesítést követően kereshet szolgáltatók, előfizetések, erőforráscsoportok és erőforrások alapján.

Keresse meg a tárfiók-erőforrást, és tekintse meg a tulajdonságokat. Itt látható ahttpsTrafficOnly tulajdonság is. A Dokumentáció fület választva azt látjuk, hogy a tulajdonság leírása megegyezik a referenciadokumentumban korábban talált leírással.

A tulajdonság aliasának megkeresése

Azonosítottuk az erőforrás-tulajdonságot, de le kell képeznünk a tulajdonságot egy aliasra.

Az Azure-erőforrások aliasainak meghatározására többféleképpen is lehetőség van. Az oktatóanyag mindegyikét áttekintjük:

  • Azure Policy-bővítmény VSCode-hoz
  • Azure CLI
  • Azure PowerShell

Aliasok lekérése a VS Code-bővítményben

A VS Code-bővítmény Azure Policy bővítménye megkönnyíti az erőforrások böngészését és az aliasok felderítését.

Megjegyzés

A VS Code-bővítmény csak Resource Manager módtulajdonságokat tesz elérhetővé, és nem jelenít meg erőforrás-szolgáltatói módtulajdonságokat.

Azure CLI

Az Azure CLI-ben az az provider parancscsoporttal kereshet erőforrás-aliasokat. A Microsoft.Storage-névtérre szűrünk az Azure-erőforrásról korábban kapott adatok alapján.

# 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"

Az eredmények között egy, a supportHttpsTrafficOnly nevű tárfiókok által támogatott alias látható. Ennek az aliasnak a megléte azt jelenti, hogy megírhatjuk a szabályzatot az üzleti követelmények érvényre juttatásához!

Azure PowerShell

Az Azure PowerShellben a Get-AzPolicyAlias parancsmaggal kereshet erőforrás-aliasokat. A Microsoft.Storage névtérre szűrünk az Azure-erőforrásról korábban kapott adatok alapján.

# 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

Az Azure CLI-hez hasonlóan az eredményekben egy, aHttpsTrafficOnly nevű tárfiókok által támogatott alias látható.

A használni kívánt hatás meghatározása

A nem megfelelő erőforrásokkal való teendők eldöntése majdnem ugyanolyan fontos, mint a kiértékelendő szempontok eldöntése. A nem megfelelő erőforrásokra adott minden lehetséges választ hatásnak nevezünk. Az effektus szabályozza, hogy a nem megfelelő erőforrás naplózva van-e, blokkolva van-e, hozzá vannak-e fűzve adatok, vagy van-e hozzá egy üzembe helyezés az erőforrás megfelelő állapotba való visszaállításához.

Példánkban a Megtagadás az a hatás, amelyet szeretnénk, mivel nem szeretnénk nem megfelelő erőforrásokat létrehozni az Azure-környezetünkben. A naplózás jó választás a szabályzateffektusokhoz, hogy megállapítsa, milyen hatással van egy szabályzat, mielőtt a Megtagadás értékre állítja. Az effektus hozzárendelésenkénti módosításának egyik módja az effektus paraméterezése. A részletekért tekintse meg az alábbi paramétereket .

A definíció írása

Most már rendelkezünk a kezelni kívánt tulajdonság részleteinek és aliasának adataival. Ezután magát a szabályzatszabályt fogjuk összeállítani. Ha még nem ismeri a szabályzatnyelvet, tekintse meg a szabályzatdefiníciók struktúráját a szabályzatdefiníció strukturálásához. Íme egy üres sablon a szabályzatdefiníciók megjelenéséről:

{
    "properties": {
        "displayName": "<displayName>",
        "description": "<description>",
        "mode": "<mode>",
        "parameters": {
                <parameters>
        },
        "policyRule": {
            "if": {
                <rule>
            },
            "then": {
                "effect": "<effect>"
            }
        }
    }
}

Metaadatok

A három összetevő közül az első a szabályzat metaadatai. Ezek az összetevők könnyen megadhatnak értékeket, mivel tudjuk, hogy mire hozzuk létre a szabályt. A mód elsősorban a címkékről és az erőforrások helyéről szól. Mivel nem kell a címkéket támogató erőforrásokra korlátozni a kiértékelést, a módhoz az összes értéket fogjuk használni.

"displayName": "Deny storage accounts not using only HTTPS",
"description": "Deny storage accounts not using only HTTPS. Checks the supportsHttpsTrafficOnly property on StorageAccounts.",
"mode": "all",

Paraméterek

Bár nem használtunk paramétert a kiértékelés módosításához, szeretnénk egy paramétert használni a hibaelhárítás hatásának módosításához. Meghatározunk egy effectType paramétert, és csak a Megtagadás és a Letiltás értékre korlátozzuk. Ez a két lehetőség megfelel az üzleti követelményeknek. A kész paraméterek blokkja a következő példához hasonlóan néz ki:

"parameters": {
    "effectType": {
        "type": "string",
        "defaultValue": "Deny",
        "allowedValues": [
            "Deny",
            "Disabled"
        ],
        "metadata": {
            "displayName": "Effect",
            "description": "Enable or disable the execution of the policy"
        }
    }
},

Szabályzatszabály

A szabályzatszabály összeállítása az egyéni szabályzatdefiníció létrehozásának utolsó lépése. Két olyan utasítást azonosítottunk, amelyek tesztelésére van szükségünk:

  • A tárfiók típusaMicrosoft.Storage/storageAccounts
  • A tárfiók támogatja aHttpsTrafficOnly nem igaz

Mivel mindkét utasításnak igaznak kell lennie, az allOflogikai operátort fogjuk használni. Statikus deklaráció helyett átadjuk az effectType paramétert az effektusnak. A kész szabály a következő példához hasonlóan néz ki:

"if": {
    "allOf": [
        {
            "field": "type",
            "equals": "Microsoft.Storage/storageAccounts"
        },
        {
            "field": "Microsoft.Storage/storageAccounts/supportsHttpsTrafficOnly",
            "notEquals": "true"
        }
    ]
},
"then": {
    "effect": "[parameters('effectType')]"
}

Létrehozott definíció

A szabályzat mindhárom része definiálva van, itt található a befejezett definíció:

{
    "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')]"
            }
        }
    }
}

A létrehozott definíció használható új szabályzatok létrehozásához. A portál és az egyes SDK-k (Azure CLI, Azure PowerShell és REST API) különböző módokon fogadják el a definíciót, ezért tekintse át az egyes parancsokat a helyes használat ellenőrzéséhez. Ezután a paraméterezett hatással rendelje hozzá a szabályzatot a megfelelő erőforrásokhoz a tárfiókok biztonságának kezelése érdekében.

Az erőforrások eltávolítása

Ha végzett az oktatóanyag erőforrásaival, az alábbi lépésekkel törölheti a fent létrehozott hozzárendeléseket vagy definíciókat:

  1. A Azure Policy lap bal oldalán a Létrehozás területen válassza a Definíciók (vagy hozzárendelések, ha egy hozzárendelést szeretne törölni) lehetőséget.

  2. Keresse meg az eltávolítani kívánt új kezdeményezést vagy szabályzatdefiníciót (vagy hozzárendelést).

  3. Kattintson a jobb gombbal a sorra, vagy a bal gombbal a definíció (vagy a hozzárendelés) mellett található három pontra, majd a Definíció törlése (vagy a Hozzárendelés törlése) parancsra.

Áttekintés

Ebben az oktatóanyagban sikeresen elvégezte a következőket:

  • Azonosította az üzleti követelményeket
  • Az egyes követelmények megfeleltetése egy Azure-erőforrástulajdonságra
  • A tulajdonság leképezése aliasra
  • A használni kívánt hatás meghatározása
  • A szabályzatdefiníció összeállítása

Következő lépések

Ezután az egyéni szabályzatdefinícióval hozzon létre és rendeljen hozzá egy szabályzatot: