Delen via


Zelfstudie: Een aangepaste beleidsdefinitie maken

Met een aangepaste beleidsdefinitie kunnen klanten hun eigen regels voor het gebruik van Azure definiëren. Deze regels worden vaak gebruikt voor het afdwingen van:

  • Beveiligingsprocedures.
  • Kostenbeheer.
  • Organisatiespecifieke regels (zoals naamgeving of locaties).

Welke redenen een bedrijf ook heeft voor het maken van een aangepast beleid, de stappen voor het definiëren ervan zijn hetzelfde.

Controleer voordat u een aangepast beleid maakt, de beleidsvoorbeelden om te zien of er al een beleid bestaat dat aan uw behoeften voldoet.

De aanpak voor het maken van een aangepast beleid bevat de volgende stappen:

  • Identificeer de vereisten van uw bedrijf
  • Wijs elke vereiste toe aan een Azure-resource-eigenschap
  • Wijs de eigenschap toe aan een alias
  • Bepaal welk effect moet worden gebruikt
  • Stel de beleidsdefinitie op

Vereisten

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Vereisten identificeren

Voordat u de beleidsdefinitie gaat maken, is het belangrijk te weten wat de intentie van het beleid is. Gebruik voor deze zelfstudie een algemene bedrijfsbeveiligingsvereiste als doel om de betrokken stappen te illustreren:

  • Elk opslagaccount moet zijn ingeschakeld voor HTTPS.
  • Elk opslagaccount moet worden uitgeschakeld voor HTTP.

In uw vereisten moet zowel de gewenste als de ongewenste situatie duidelijk worden geïdentificeerd.

Hoewel we de verwachte status van de resource hebben gedefinieerd, hebben we niet gedefinieerd wat we willen doen met niet-compatibele resources. Azure Policy ondersteunt veel effecten. Voor deze zelfstudie definiëren we de bedrijfsvereiste om het maken van resources te voorkomen als ze niet voldoen aan de bedrijfsregels. Om dit doel te bereiken, gebruiken we het effect weigeren . We willen ook de optie hebben om het beleid te onderbreken voor speciale toewijzingen. Gebruik het uitgeschakelde effect en maak het effect een parameter in de beleidsdefinitie.

Resource-eigenschappen bepalen

Volgens de vereisten van het bedrijf is de Azure-resource die met Azure Policy moet worden gecontroleerd een opslagaccount. Maar we weten nog niet welke eigenschappen in de beleidsdefinitie moeten worden gebruikt. Azure Policy evalueert op basis van de JSON-weergave van de resource, dus we moeten inzicht hebben in de eigenschappen die beschikbaar zijn voor die resource.

Er zijn veel manieren om de eigenschappen van een Azure-resource te bepalen. We bekijken elk voor deze zelfstudie:

  • Azure Policy-extensie voor VS Code.
  • Azure Resource Manager-sjablonen (ARM-sjablonen).
    • Bestaande resource exporteren.
    • Ervaring met het maken.
    • Quickstartsjablonen (GitHub).
    • Sjabloonreferentiedocumenten.
  • Azure Resource Explorer.

Resources in VS Code-extensie weergeven

De VS Code-extensie kan worden gebruikt om te bladeren door resources in uw omgeving en de Resource Manager-eigenschappen te bekijken voor elke resource.

ARM-sjablonen

Er zijn verschillende manieren om te kijken naar een ARM-sjabloon die de eigenschap bevat die u wilt beheren.

Bestaande resource in de portal

De eenvoudigste manier om eigenschappen te vinden is een bestaande resource van hetzelfde type te bekijken. Resources die al zijn geconfigureerd met de instelling die u wilt afdwingen, bevatten ook de waarde waarmee moet worden vergeleken. Bekijk de pagina Sjabloon exporteren in Instellingen in Azure Portal voor die specifieke resource.

Waarschuwing

De ARM-sjabloon die is geëxporteerd door Azure Portal kan niet direct worden gekoppeld aan de deployment eigenschap voor een ARM-sjabloon in een deployIfNotExists-beleidsdefinitie.

Schermopname van de pagina Sjabloon exporteren van een bestaande resource in de Azure-portal.

Wanneer u dit doet voor een opslagaccount, ziet u een sjabloon die lijkt op het volgende voorbeeld:

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

Onder properties staat een waarde die supportsHttpsTrafficOnly is ingesteld op false. Deze eigenschap lijkt erop dat het misschien de woning is die we zoeken. type De resource is Microsoft.Storage/storageAccountsook. Met het type kunnen we het beleid beperken tot alleen resources van dit type.

Een resource maken in de portal

Een andere manier via de portal is het maken van een resource. Wanneer u een opslagaccount maakt via de portal, is een optie op het tabblad Geavanceerd vereist voor de overdracht van beveiliging. Deze eigenschap heeft de opties Uitgeschakeld en Ingeschakeld. Het infopictogram bevat meer tekst die bevestigt dat deze optie waarschijnlijk de gewenste eigenschap is. Maar in de portal wordt de naam van de eigenschap niet op dit scherm weergegeven.

Op het tabblad Beoordelen en maken bevindt zich onderaan de pagina de koppeling Een sjabloon voor Automation downloaden. Wanneer u deze koppeling selecteert, wordt de sjabloon geopend voor het maken van de resource die we hebben geconfigureerd. In dit geval zien we twee belangrijke gegevens:

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

Deze informatie vertelt ons het eigenschapstype en bevestigt supportsHttpsTrafficOnly ook dat de eigenschap is die we zoeken.

Quickstart-sjablonen op GitHub

De Azure-quickstartsjablonen op GitHub bevatten honderden ARM-sjablonen die zijn gebouwd voor verschillende resources. Deze sjablonen kunnen een uitstekende manier zijn om de resource-eigenschap te vinden die u zoekt. Sommige eigenschappen lijken misschien te zijn wat u zoekt, maar bepalen iets anders.

Resourcereferentiedocumenten

Als u wilt controleren of supportsHttpsTrafficOnly de juiste eigenschap is, controleert u de ARM-sjabloonverwijzing voor de resource van het opslagaccount in de opslagprovider. Het eigenschappenobject heeft een lijst met geldige parameters. Als u de StorageAccountPropertiesCreateParameters objectkoppeling selecteert, ziet u een tabel met acceptabele eigenschappen. supportsHttpsTrafficOnly is aanwezig en de beschrijving komt overeen met wat we zoeken in verband met de bedrijfsvereisten.

Azure Resource Explorer

Een andere manier om uw Azure-resources te verkennen is via de Azure Resource Explorer (Preview). Dit hulpprogramma maakt gebruik van de context van uw abonnement, dus u moet zich bij de website aanmelden met uw Azure-referenties. Nadat u zich hebt geverifieerd, kunt u bladeren door providers, abonnementen, resourcegroepen en resources.

Zoek opslagaccountresource en bekijk de eigenschappen. We zien hier ook het supportsHttpsTrafficOnly pand. Wanneer we het tabblad Documentatie selecteren, zien we dat de beschrijving van de eigenschap overeenkomt met wat we eerder hebben gezien in de referentiedocumenten.

De eigenschapalias zoeken

We hebben de resource-eigenschap geïdentificeerd, maar we moeten die eigenschap toewijzen aan een alias.

Er zijn enkele manieren om de aliassen van een Azure-resource te bepalen. We bekijken elk voor deze zelfstudie:

  • Azure Policy-extensie voor VS Code.
  • Azure CLI.
  • Azure PowerShell.

Aliassen ophalen in VS Code-extensie

Met de Azure Policy-extensie voor VS Code-extensie kunt u gemakkelijk door uw resources bladeren en aliassen ontdekken.

Notitie

De VS Code-extensie geeft alleen de eigenschappen van de Resource Manager-modus weer en geeft geen eigenschappen van de Resource Provider-modu weer.

Azure-CLI

In Azure CLI wordt de az provider-opdrachtgroep gebruikt om te zoeken naar resource-aliassen. We filteren op de Microsoft.Storage naamruimte op basis van de details die we eerder over de Azure-resource hebben gekregen.

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

In de resultaten zien we een alias die wordt ondersteund door de opslagaccounts met de naam supportsHttpsTrafficOnly. Het bestaan van deze alias betekent dat we het beleid voor het afdwingen van onze bedrijfsvereisten kunnen schrijven.

Azure PowerShell

In Azure PowerShell wordt de Get-AzPolicyAlias-cmdlet gebruikt om te zoeken naar resource-aliassen. Filter op de Microsoft.Storage naamruimte op basis van de details die we eerder over de Azure-resource hebben gekregen.

# 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

Net als azure CLI tonen de resultaten een alias die wordt ondersteund door de opslagaccounts met de naam supportsHttpsTrafficOnly.

Bepalen welk effect moet worden gebruikt

Beslissen wat te doen met uw niet-conforme resources is bijna net zo belangrijk als beslissen wat om te beginnen moet worden geëvalueerd. Elk mogelijk antwoord op een niet-conforme resource heet een effect. Het effect bepaalt of de niet-conforme resource wordt geregistreerd, geblokkeerd, gegevens krijgt toegevoegd of dat er een implementatie aan is gekoppeld om de resource weer conform te maken.

In ons voorbeeld is het gewenste effect omdat deny we geen niet-compatibele resources willen maken in onze Azure-omgeving. Controle is een goede eerste keuze voor een beleidseffect om te bepalen wat het effect van een beleid is voordat u dit denyinstelt. Eén manier om het wijzigen van het effect per toewijzing gemakkelijker te maken, is door het effect te parametriseren. Zie parameters voor de details.

De definitie opstellen

We hebben nu de eigenschapsdetails en de alias voor datgene wat we willen beheren. Vervolgens stellen we de beleidsregel zelf samen. Als u niet bekend bent met de beleidstaal, raadpleegt u de structuur van beleidsdefinities voor het structuren van de beleidsdefinitie. Hier volgt een lege sjabloon van hoe een beleidsdefinitie eruitziet:

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

Metagegevens

De eerste drie onderdelen zijn de metagegevens van het beleid. Voor deze onderdelen kunnen we gemakkelijk waarden opgeven, want we weten waarvoor we de regel maken. Mode gaat voornamelijk over tags en resourcelocatie. Omdat we de evaluatie niet hoeven te beperken tot resources die tags ondersteunen, gebruikt u de volledige waarde voor 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",

Parameters

Hoewel we geen parameter hebben gebruikt voor het wijzigen van de evaluatie, willen we wel een parameter gebruiken om het wijzigen van de effect parameter voor probleemoplossing toe te staan. U definieert een effectType parameter en beperkt deze tot alleen deny en disabled. Deze twee opties komen overeen met onze vereisten. Het voltooide parameterblok ziet eruit zoals in dit voorbeeld:

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

Beleidsregel

Het opstellen van de beleidsregel is de laatste stap bij het bouwen van onze aangepaste beleidsdefinitie. We hebben twee instructies geïdentificeerd om te testen op:

  • Het opslagaccount type is Microsoft.Storage/storageAccounts.
  • Het opslagaccount supportsHttpsTrafficOnly is niet true.

Omdat we beide instructies nodig hebben om waar te zijn, gebruikt u de allOf logische operator. Geef de effectType parameter door aan het effect in plaats van een statische declaratie te maken. Onze voltooide regel ziet eruit zoals in dit voorbeeld:

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

Voltooide definitie

Nu alle drie delen van het beleid zijn gedefinieerd, volgt hier de voltooide definitie:

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

De voltooide definitie kan worden gebruikt om een nieuw beleid te maken. Portal en elke SDK (Azure CLI, Azure PowerShell en REST API) accepteren de definitie op verschillende manieren; bekijk de opdrachten voor elk ervan om het juiste gebruik te valideren. Wijs het beleid vervolgens met behulp van het geparameteriseerde effect toe aan de juiste resources om de veiligheid van uw opslagaccounts te beheren.

Resources opschonen

Als u klaar bent met het werken met resources uit deze zelfstudie, gebruikt u de volgende stappen om een van de toewijzingen of definities die u hebt gemaakt te verwijderen:

  1. Selecteer Definities (of Toewijzingen als u een toewijzing wilt verwijderen) onder Ontwerpen in het linkerdeelvenster van de Azure Policy-pagina.

  2. Zoek naar de nieuwe initiatief- of beleidsdefinitie (of toewijzing) die u zojuist hebt gemaakt.

  3. Klik met de rechtermuisknop op de rij of selecteer de weglatingstekens aan het einde van de definitie (of de toewijzing) en selecteer Definitie verwijderen (of Toewijzing verwijderen).

Beoordelen

In deze zelfstudie hebt u de volgende taken uitgevoerd:

  • De vereisten van uw bedrijf geïdentificeerd
  • Elke vereiste toegewezen aan een Azure-resource-eigenschap
  • De eigenschap toegewezen aan een alias
  • Bepaald welk effect moet worden gebruikt
  • De beleidsdefinitie opgesteld

Volgende stappen

Gebruik vervolgens de aangepaste beleidsdefinitie om een beleid te maken en toe te wijzen: