Formation
Certification
Microsoft Certified : Azure Administrator Associate - Certifications
Faites la démonstration de compétences clés pour configurer, sécuriser et administrer des fonctions professionnelles clés dans Microsoft Azure.
Ce navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour bénéficier des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Dans cet article, vous allez voir comment configurer des abonnements à des événements Azure Policy afin d’envoyer des événements de changement d’état de stratégie à un point de terminaison web. Les utilisateurs Azure Policy peuvent s’abonner à des événements qui sont émis quand des modifications d’état de stratégie se produisent sur des ressources. Ces événements peuvent déclencher des webhooks, Azure Functions, des files d’attente Stockage Azure ou tout autre gestionnaire d’événements pris en charge par Azure Event Grid. En règle générale, vous envoyez des événements à un point de terminaison qui traite les données d’événement et entreprend des actions. Pour simplifier ce tutoriel, vous envoyez les événements à une application web qui collecte et affiche les messages.
az --version
. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.Les rubriques Event Grid sont des ressources Azure et doivent être placées dans un groupe de ressources Azure. Un groupe de ressources est une collection logique dans laquelle des ressources Azure sont déployées et gérées.
Créez un groupe de ressources avec la commande az group create.
L’exemple suivant crée un groupe de ressources nommé <resource_group_name>
à l’emplacement westus. Remplacez <resource_group_name>
par un nom unique pour votre groupe de ressources.
# Log in first with az login if you're not using Cloud Shell
az group create --name <resource_group_name> --location westus
Comme nous disposons maintenant d’un groupe de ressources, nous créons une rubrique système. Une rubrique système dans Event Grid représente un ou plusieurs événements publiés par les services Azure, tels qu’Azure Policy et Azure Event Hubs. Cette rubrique système utilise le type de rubrique Microsoft.PolicyInsights.PolicyStates
pour les changements d’état Azure Policy.
Vous devez d’abord inscrire les fournisseurs de ressources PolicyInsights
et EventGrid
au niveau de l’étendue de gestion appropriée. Le portail Azure inscrit automatiquement les fournisseurs de ressources que vous appelez pour la première fois, mais Azure CLI ne le fait pas.
# Log in first with az login if you're not using Cloud Shell
# Register the required RPs at the management group scope
az provider register --namespace Microsoft.PolicyInsights -m <managementGroupId>
az provider register --namespace Microsoft.EventGrid -m <managementGroupId>
# Alternatively, register the required RPs at the subscription scope (defaults to current subscription context)
az provider register --namespace Microsoft.PolicyInsights
az provider register --namespace Microsoft.EventGrid
Remplacez ensuite <subscriptionId>
dans le paramètre scope
par l’ID de votre abonnement, et <resource_group_name>
dans le paramètre resource-group
par le groupe de ressources créé.
az eventgrid system-topic create --name PolicyStateChanges --location global --topic-type Microsoft.PolicyInsights.PolicyStates --source "/subscriptions/<subscriptionId>" --resource-group "<resource_group_name>"
Si votre rubrique système Event Grid est appliquée à l’étendue du groupe d’administration, la syntaxe du paramètre --source
d’Azure CLI est un peu différente. Voici un exemple :
az eventgrid system-topic create --name PolicyStateChanges --location global --topic-type Microsoft.PolicyInsights.PolicyStates --source "/tenants/<tenantID>/providers/Microsoft.Management/managementGroups/<management_group_name>" --resource-group "<resource_group_name>"
Avant de nous abonner à la rubrique, nous allons créer le point de terminaison pour le message de l’événement. En règle générale, le point de terminaison entreprend des actions en fonction des données d’événement. Pour simplifier ce guide de démarrage rapide, vous allez déployer une application web prédéfinie qui affiche les messages d’événement. La solution déployée comprend un plan App Service, une offre App Service Web Apps et du code source en provenance de GitHub.
Remplacez <your-site-name>
par un nom unique pour votre application web. Le nom de l’application web doit être unique, car il fait partie de l’entrée DNS (Domain Name System).
# Log in first with az login if you're not using Cloud Shell
az deployment group create \
--resource-group <resource_group_name> \
--template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
--parameters siteName=<your-site-name> hostingPlanName=viewerhost
Le déploiement peut prendre quelques minutes. Après un déploiement réussi, visualisez votre application web pour vérifier qu’elle s’exécute. Dans un navigateur web, accédez à : https://<your-site-name>.azurewebsites.net
Vous devez voir le site sans messages affichés.
Vous vous abonnez à une rubrique pour communiquer à Event Grid les événements qui vous intéressent, et où les envoyer. L’exemple suivant s’abonne à la rubrique système que vous avez créée et transmet l’URL à partir de votre application web en tant que point de terminaison destiné à recevoir les notifications d’événement. Remplacez <event_subscription_name>
par un nom pour votre abonnement aux événements. Pour <resource_group_name>
et <your-site-name>
, utilisez les valeurs que vous avez créées précédemment.
Le point de terminaison de votre application web doit inclure le suffixe /api/updates/
.
# Log in first with az login if you're not using Cloud Shell
# Create the subscription
az eventgrid system-topic event-subscription create \
--name <event_subscription_name> \
--resource-group <resource_group_name> \
--system-topic-name PolicyStateChanges \
--endpoint https://<your-site-name>.azurewebsites.net/api/updates
Affichez à nouveau votre application web, et notez qu’un événement de validation d’abonnement lui a été envoyé. Sélectionnez l’icône en forme d’œil pour développer les données d’événements. Event Grid envoie l’événement de validation pour que le point de terminaison puisse vérifier qu’il souhaite recevoir des données d’événement. L’application web inclut du code pour valider l’abonnement.
Dans ce guide de démarrage rapide, vous créez une affectation de stratégie et vous attribuez la définition Exiger une étiquette sur les groupes de ressources. Cette définition de stratégie identifie les groupes de ressources qui ne contiennent pas l’étiquette configurée lors de l’attribution de stratégie.
Exécutez la commande suivante pour créer une attribution de stratégie dont l’étendue est définie sur le groupe de ressources destiné à contenir la rubrique Event Grid :
# Log in first with az login if you're not using Cloud Shell
az policy assignment create --name 'requiredtags-events' --display-name 'Require tag on RG' --scope '<resourceGroupScope>' --policy '<policy definition ID>' --params '{ \"tagName\": { \"value\": \"EventTest\" } }'
La commande précédente utilise les informations suivantes :
<scope>
par le nom de votre groupe de ressources. Le format de l’étendue d’un groupe de ressources est /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>
.az policy definition list --query "[?displayName=='Require a tag on resource groups']"
Une fois l’affectation de stratégie créée, attendez qu’une notification d’événement Microsoft.PolicyInsights.PolicyStateCreated
apparaisse dans l’application web. Au départ, le groupe de ressources que nous avons créé affiche la valeur NonCompliant pour le paramètre data.complianceState
.
Remarque
Si le groupe de ressources hérite d’autres attributions de stratégie de la hiérarchie des groupes d’administration ou des abonnements, les événements correspondants s’affichent également. Pour vérifier que l’événement concerne l’affectation dans ce tutoriel, évaluez la propriété data.policyDefinitionId
.
Pour rendre le groupe de ressources conforme, une étiquette portant le nom EventTest est requise. Ajoutez l’étiquette au groupe de ressources avec la commande suivante, en remplaçant <subscriptionId>
par votre ID d’abonnement et <resourceGroup>
par le nom du groupe de ressources :
# Log in first with az login if you're not using Cloud Shell
az tag create --resource-id '/subscriptions/<SubscriptionID>/resourceGroups/<resourceGroup>' --tags EventTest=true
Une fois que vous avez ajouté la balise nécessaire au groupe de ressources, attendez qu’une notification d’événement Microsoft.PolicyInsights.PolicyStateChanged
apparaisse dans l’application web. Développez l’événement ; data.complianceState
a désormais pour valeur Compliant.
Si vous voyez une erreur semblable à ce qui suit, vérifiez que vous avez inscrit les deux fournisseurs de ressources au niveau de l’étendue à laquelle vous vous abonnez (groupe d’administration ou abonnement) :
Deployment has failed with the following error: {"code":"Publisher Notification Error","message":"Failed to enable publisher notifications.","details":[{"code":"Publisher Provider Error","message":"GET request for <uri> failed with status code: Forbidden, code: AuthorizationFailed and message: The client '<identifier>' with object id '<identifier>' does not have authorization to perform action 'microsoft.policyinsights/eventGridFilters/read' over scope '<scope>/providers/microsoft.policyinsights/eventGridFilters/_default' or the scope is invalid. If access was recently granted, please refresh your credentials.."}]}
Deployment has failed with the following error: {'code':'Publisher Notification Error','message':'Failed to enable publisher notifications.','details':[{'code':'ApiVersionNotSupported','message':'Event Grid notifications are currently not supported by microsoft.policyinsights in global. Try re-registering Microsoft.EventGrid provider if this is your first event subscription in this region.'}]}
Si vous envisagez de continuer à utiliser cette application web et l’abonnement aux événements Azure Policy, ne supprimez pas les ressources créées dans cet article. Sinon, utilisez la commande suivante pour supprimer les ressources créées avec cet article.
Remplacez <resource_group_name>
par le groupe de ressources que vous avez créé.
az group delete --name <resource_group_name>
Vous savez désormais comment créer des rubriques et des abonnements aux événements pour Azure Policy. Découvrez plus en détail les événements de changement d’état de stratégie et Event Grid :
Formation
Certification
Microsoft Certified : Azure Administrator Associate - Certifications
Faites la démonstration de compétences clés pour configurer, sécuriser et administrer des fonctions professionnelles clés dans Microsoft Azure.
Documentation
Tutoriel : Créer une définition de stratégie personnalisée - Azure Policy
Dans ce tutoriel, vous créez une définition de stratégie personnalisée pour Azure Policy afin d’appliquer des règles métier personnalisées sur vos ressources Azure.
Créer des stratégies par programmation - Azure Policy
Cet article vous explique comment créer et gérer des stratégies par programmation pour Azure Policy avec Azure CLI, Azure PowerShell et l’API REST.
Réaction aux événements de changement d’état Azure Policy - Azure Policy
Utilisez Azure Event Grid pour vous abonner aux événements Azure Policy, qui permettent aux applications de réagir aux changements d’état sans nécessiter de code complexe.