Reprenez le contrôle des ressources Azure avec Azure Policy

A common theme in cloud environments today is the ability to define templates, policies, and procedures. These templates then dictate what can be done and verify that what does exist is correct. A service from Microsoft called Azure Policy is a great way to make that happen.

Dans cet article, vous apprendrez comment fonctionne Azure Policy, puis vous verrez comment créer différentes politiques et actions correctives.

Création d’une politique Azure

Il existe plusieurs façons de créer des politiques, telles que via le portail Azure, PowerShell, Azure CLI et les modèles ARM.

Portail Azure

Si vous préférez l’interface graphique ou si vous explorez vos options, commencer ici est une bonne introduction aux politiques. L’interface est simple et vous permet de voir vos options en un coup d’œil.

  1. Dans le portail Azure, recherchez Politique.
  2. Cliquez sur Affectations sous la section Autorisation
  3. Cliquez sur Affecter une politique
  4. Cliquez sur les points de suspension sous Étendue pour sélectionner l’abonnement auquel l’application doit s’appliquer et éventuellement le groupe de ressources
  5. Cliquez sur les points de suspension sous Définition de la politique pour sélectionner la politique à définir
  6. Utilisez soit le nom généré par défaut sous Nom de l’affectation n ou saisissez-en un pour identifier de manière unique votre politique
  7. Remplissez tous les paramètres nécessaires en fonction de la politique choisie
  8. Enfin, créez une identité gérée et définissez son emplacement si nécessaire
Creating a Policy

PowerShell

Heureusement, PowerShell permet d’attribuer rapidement et facilement une définition de politique Azure à une affectation de politique. Il y a deux prérequis, à savoir avoir la dernière version d’Azure PowerShell installée et enregistrer le fournisseur de ressources Azure Policy Insights.

Register Policy Insights Resource Provider
PS51> Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
Assign the Policy
PS51> $resourceGroup = Get-AzResourceGroup -Name '<resourceGroupName>'

PS51> $definition = Get-AzPolicyDefinition | Where-Object { $_.Properties.DisplayName -eq '<policyName>' }

PS51> New-AzPolicyAssignment -Name '<assignment-name>' -DisplayName '<friendlyName>' -Scope $resourceGroup.ResourceId -PolicyDefinition $definition -listOfResourceTypesAllowed '<parameterValues>'

Azure CLI

Si PowerShell n’est pas disponible ou n’est pas préféré, l’utilisation de l’interface de ligne de commande Azure vous permet également d’accomplir une grande partie des mêmes tâches. Cela peut également être utile dans des scénarios multiplateformes si vous ne pouvez pas utiliser PowerShell sur tous les systèmes d’exploitation.

> az policy assignment create --name '<policyName>' --display-name '<friendlyName>' --scope '<scope>' --policy '<policyDefinitionID>'

Modèles de stratégie Azure

Les modèles de gestionnaire de ressources Azure sont un autre moyen de créer et d’attribuer des stratégies aux ressources. Ci-dessous se trouve un modèle de démarrage que vous pouvez utiliser pour choisir une stratégie à attribuer à un groupe de ressources à titre d’exemple.


{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "policyAssignmentName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the policy assignment."
      }
   },
    "rgName":{
      "type": "string",
      "defaultValue": "[resourceGroup().name]",
      "metadata": {
        "description": "Specifies the name of the resource group where you want to assign the policy."
      }
},
    "policyDefinitionID": {
      "type": "string",
      "metadata": {
        "description": "Specifies the ID of the policy definition or policy set definition being assigned."
      }
    }
},
  "resources": [
{
      "type": "Microsoft.Authorization/policyAssignments",
"name": "[parameters('policyAssignmentName')]",
"apiVersion": "2018-05-01",
"properties": {
   "scope": "[concat (subscription ( ).id, '/resourceGroups/', parameters('rgName'))]",
   

Fonctionnement de l’attribution de la stratégie Azure

Après avoir choisi ou créé les définitions de stratégie que vous souhaitez appliquer, attribuez ces définitions pour affecter un champ d’application spécifique. Le champ d’application définit simplement à quoi la stratégie d’attribution va s’appliquer, comme un groupe de gestion ou de ressources. Notez que les affectations de stratégies sont héritées par toutes les ressources enfants, mais vous avez la possibilité d’exclure un sous-champ si nécessaire.

Exemples de stratégies Azure

Il existe de nombreuses définitions de stratégie et il peut être difficile de décider ce qui est le mieux à appliquer. Quelles sont donc les options, quand les utiliser et pourquoi?

  • Exiger une balise et sa valeur – Cela peut être utilisé de plusieurs manières, mais une possibilité est par exemple les codes de coût, ou pour identifier plusieurs ressources différentes réparties dans plusieurs groupes de ressources.
  • Types de ressources autorisés – Et si vous ne vouliez autoriser que des ressources spécifiques? Cela peut être imposé, par exemple avec juste la possibilité de créer une ressource de stockage.
  • Vérifiez les VM Windows avec un redémarrage en attente – Peut-être voulez-vous savoir quelles VM Windows nécessitent un redémarrage en attente, pour vous assurer qu’elles ne sont pas laissées de côté ? Utilisez cette politique pour les trouver et éventuellement les corriger selon un calendrier.
  • Audit des paramètres de diagnostic – Si les paramètres de diagnostic ne sont pas activés, cette politique identifiera ceux qui ne sont pas conformes.
  • Les ports de gestion doivent être fermés sur vos machines virtuelles – Vérifiez que les ports de gestion sur vos VM sont fermés, une excellente politique pour les soucieux de sécurité.
  • Les comptes obsolètes doivent être supprimés de votre abonnement – Pour tous les comptes qui ont été bloqués pour connexion dans un répertoire, trouvez ceux à corriger éventuellement selon les besoins. Bien qu’il y en ait beaucoup ici, et encore plus créés chaque jour, vous avez également une capacité très puissante de créer vos propres définitions de stratégies personnalisées. En utilisant un schéma de définition de requête simple, vous pouvez créer des constructions if-then puissantes pour définir sur quoi vous souhaitez appliquer des stratégies.

Comment rendre les stratégies Azure plus réutilisables

Paramètres

Un des outils les plus utiles consiste à définir des paramètres pour une utilisation dans vos stratégies. Si vous deviez définir une politique unique pour chaque variation dans une politique, vous pourriez finir par en avoir des centaines. Une excellente solution à cela est de paramétrer une politique. Avec cela, vous pouvez personnaliser la politique au moment de l’assignation et faire en sorte qu’une définition de politique s’applique à de nombreux cas d’utilisation différents.

Initiatives

La prochaine étape logique consiste à regrouper plusieurs définitions dans un ensemble. Cela vous permet d’attribuer toutes ces différentes définitions à une portée sans avoir à les attribuer individuellement encore et encore.

Paramètres d’initiative

Enfin, vous pouvez ajouter des paramètres aux initiatives qui peuvent être hérités jusqu’aux politiques individuelles. Cela signifie que vous n’avez pas besoin d’attribuer individuellement des paramètres pour chaque politique contenue dans une initiative. Cela peut vous faire gagner beaucoup de temps, car vous pouvez définir seulement quelques initiatives qui appliquent de nombreuses politiques différentes de plusieurs façons différentes en fonction des paramètres choisis.

Tâches de remédiation

Que faites-vous lorsque vous avez une politique qui évalue mais trouve des ressources non conformes ? À ce stade, vous pouvez lancer une tâche de remédiation pour corriger quel que soit le problème. Cela peut être très puissant, mais aussi très dangereux si la configuration est incorrecte. Une fois de plus, il existe plusieurs façons de définir ces tâches, soit via le portail Azure, PowerShell ou via l’interface de ligne de commande Azure.

Portail Azure

Comme auparavant, vous pouvez utiliser le portail Azure pour explorer la création d’une tâche de remédiation. Si vous constatez qu’il n’y a aucune politique répertoriée, assurez-vous d’avoir à la fois des politiques deployIfNotExists et celles qui ont été évaluées comme non conformes, sinon elles ne s’afficheront pas.

  1. Dans le portail Azure, recherchez Politique
  2. Cliquez sur Remédiation dans le menu de gauche
  3. Cliquez sur une politique de type deployIfNotExists et ayant des ressources non conformes
  4. Filtrez les ressources à remédier sur la page de tâche de Nouvelle remédiation pour limiter l’application de la tâche
  5. Cliquez sur Remédier pour démarrer la tâche elle-même

PowerShell

Il est assez simple de créer une tâche de remédiation via PowerShell. L’élément principal à retenir est que vous devez utiliser une politique deployIfNotExists.

PS51> Start-AzPolicyRemediation -Name 'remediationTask' -PolicyAssignmentId '/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments/{assignmentID}'

Azure CLI

À la place de PowerShell, vous pouvez également utiliser Azure CLI pour démarrer une tâche de remédiation. Il en va de même pour cela que pour la tâche PowerShell.

> az policy remediation create --name remediationTask --policy-assignment '/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments/{assignmentID}'

Résumé

Le pouvoir d’utilisation des politiques Azure réside dans le fait que pour n’importe quelle souscription Azure, vous pouvez définir un nombre quelconque de politiques flexibles pour vous aider à gérer votre environnement. De plus, avec du temps, des efforts et de la réflexion mis dans la façon dont vous structurez vos politiques, initiatives et paramètres, vous pouvez créer une configuration bien définie et facile à remédier.

Étant donné que les politiques Azure sont gratuites pour toute souscription Azure, il est logique de prendre le temps de mettre en œuvre ce dont vous avez besoin. Compte tenu de la flexibilité dans la création et le déploiement de ces définitions et politiques, cela peut s’appliquer à presque tout et vous aider à garder le contrôle sur votre environnement!

Source:
https://adamtheautomator.com/azure-policy/