Avez-vous déjà voulu automatiser le processus de création de machines virtuelles dans Azure sur la base de la demande ServiceNow ou d’une demande d’un autre workflow numérique utilisé dans l’entreprise ? Il pourrait également arriver que vous souhaitiez automatiser le processus de mise à jour et de correction des machines virtuelles d’Azure dans un déploiement IaaS, tout en maintenant la configuration de l’état souhaité. Dans ce cas, Azure Automation est fait pour vous.
Le service Azure Automation permet d’automatiser de nombreuses activités et tâches de gestion Azure. Il vous aide également à coordonner directement dans Azure les actions sur les systèmes externes et internes.
Accédez à une série de cours sur l’automatisation des tâches Active Directory à l'aide de PowerShell et obtenez 3 crédits CPE (cours en anglais)
Qu’est-ce qu’Azure Automation ?
Comme expliqué ci-dessus, Azure Automation est un service d’automatisation et de configuration qui assure une gestion et une organisation uniformes et cohérentes des actions dans les environnements Azure, non Azure et sur site. Vous avez ainsi le contrôle total pendant le déploiement, l’utilisation et la mise hors service des charges de travail et des ressources.
Azure Automation est un service d’automatisation à la fois complet et rentable, car le coût relatif du déploiement est faible et basé sur le modèle PAYG (Pay-As-You-Go). Il réduit également les frais liés aux tâches du personnel informatique et du service d’assistance, ce qui permet d’économiser beaucoup de temps et d’efforts. Il est conçu sur PowerShell, ce qui en fait une plateforme robuste offrant une portée vaste et de nombreuses possibilités d’intégration.
Fonctionnalités d’Azure Automation
Azure Automation propose diverses fonctionnalités qui permettent une gestion cohérente des ressources, aussi bien dans Azure qu’en dehors et sur site. Vous avez ainsi le contrôle total pendant le déploiement, l’utilisation et la mise hors service des charges de travail et des autres ressources. Il fournit également des informations sur la conformité actualisée des charges de travail pour le déclenchement d’actions.
Automatisation des processus
L’automatisation des processus présente l’avantage d’automatiser de bout en bout les processus et les tâches de gestion récurrents, chronophages et sources d’erreurs. Elle permet aux équipes informatiques et aux services d’assistance de se concentrer sur des tâches concrètes qui apportent de la valeur ajoutée. L’efficacité des équipes est ainsi renforcée et les coûts opérationnels sont réduits.
Elle permet de créer différents types de runbooks : runbooks graphiques, runbooks PowerShell, runbooks Python, etc. Nous aborderons ce sujet plus précisément ci-dessous lorsque nous configurerons les runbooks PowerShell. Elle dispose en outre de webhooks qui permettent une programmation réactive en fonction des événements, garantissant ainsi un fonctionnement sans faille.
Gestion de la configuration
Azure Automation propose deux fonctions de gestion de la configuration :
- Desired State Configuration (DSC) : Azure Automation State Configuration (AASC) est une plateforme de gestion sur PowerShell. Elle est également connue sous le nom de Desired State Configuration. Cette plateforme vous permet de gérer l’infrastructure informatique et de développement avec la configuration en tant que code.
- Suivi et inventaire des modifications : le suivi et l’inventaire des modifications permettent de gérer et de suivre toutes les modifications apportées à la configuration ou à l’infrastructure. Vous pouvez ainsi suivre les modifications non seulement sur les machines virtuelles, mais également sur d’autres services, logiciels et registres, ce qui vous permet de surveiller et de diagnostiquer les modifications indésirables et d’envoyer des notifications.
Gestion des mises à jour
La gestion des mises à jour est l’une des fonctionnalités les plus appréciées d’Azure Automation. Cette fonctionnalité vous permet d’obtenir des informations sur la conformité actualisée des charges de travail non seulement dans Azure, mais également dans des environnements non Azure et sur site. Une action peut ainsi être déclenchée en conséquence si nécessaire.
Fonctionnalités partagées
Azure Automation propose un certain nombre de fonctionnalités partagées. Les ressources partagées, le contrôle d’accès basé sur les rôles et l’intégration du contrôle de la source font partie des principales fonctionnalités.
- Ressources partagées : les ressources partagées offrent des fonctionnalités qui simplifient les tâches de gestion de l’automatisation et de la configuration, et ce à grande échelle. Cela inclut :
- Programmations
- Modules et galerie de modules
- Données d’identification
- Variables
- Certificats
- Connexions
- Packages Python 2
- Contrôle d’accès basé sur les rôles (RBAC) : avec Azure Automation, vous disposez d’un contrôle d’accès basé sur les rôles sur les ressources d’automatisation, ce qui vous permet de réguler l’accès avec précision.
- Intégration du contrôle de la source : la fonction d’intégration du contrôle de la source d’Azure Automation permet de traiter la configuration en tant que code et d’utiliser le contrôle de la source pour archiver des runbooks et des configurations.
Champ d’application étendu
Azure Automation est conçu pour gérer de manière homogène des scénarios hybrides, comme des systèmes d’exploitation (Windows et Linux) et des charges de travail Azure, non Azure et sur site.
Créer et configurer Azure Automation avec des runbooks PowerShell pour le déploiement automatisé de machines virtuelles
Avant de commencer notre atelier, essayons de comprendre l’objectif final et comment le système devrait se comporter après la mise en œuvre. Dans cet article, nous allons procéder à une configuration concrète. Nous allons suivre le flux de processus ci-dessous, où les demandes proviennent des utilisateurs finaux dans ServiceNow pour une nouvelle machine virtuelle.
Toutes les demandes sont consolidées par le personnel du service d’assistance et sont chargées sur le compte Azure Storage.
Lorsque le fichier a été chargé dans le conteneur blob de stockage, un événement est déclenché et l’instance Event Grid associée publie une notification aux abonnés de l’événement. Azure Automation écoute l’événement à partir du compte de stockage et lance le premier runbook, qui initie le processus de lecture de la feuille Excel, un enregistrement à la fois. Cet enregistrement est ensuite envoyé au deuxième runbook PowerShell, qui procède au provisionnement de la ou des machines virtuelles.
Le deuxième runbook vérifie également si les adresses IP sont disponibles pour être affectées à la machine virtuelle. Si le subnet a épuisé toutes les adresses IP, un nouveau subnet est créé et utilisé pour la création de la VM. En outre, un groupe de sécurité réseau (NSG) prédéfini est affecté à la VM afin de confirmer les exigences de sécurité de l’organisation.
Si deux runbooks sont créés, c’est pour que le code du runbook PowerShell soit plus modulaire et plus facile à comprendre. Nous parlerons davantage des exigences dans la section sur les conditions requises.
Nous allons également utiliser des ressources partagées, comme les données d’identification, les modules et les variables, pour la gestion centralisée du service d’automatisation.
Conditions requises
Pour cet atelier, vous avez besoin du code PowerShell pour créer le principal de service et les runbooks. Pour télécharger le code, rendez-vous sur le site de GitHub (https://gist.github.com/neerajks77).
- Créer le principal de service
CreateServicePrincipal.ps1 - Créer un runbook pour lancer le processus de création de la VM
InitiateWatcherProcess.ps1 - Créer un runbook pour déployer la VM (l’appel doit provenir du runbook InitiateWatcherProcess.ps1)
CreateVirtualMachineActionRunbook.ps1
Créer et configurer Azure Automation avec le runbook PowerShell
Nous allons suivre les étapes ci-dessous pour créer et configurer un service cloud Azure Automation avec les runbooks afin d’automatiser le processus de création de la machine virtuelle sur la base de la demande ServiceNow provenant de l’utilisateur.
- Créer un fichier Excel
- Créer un groupe de ressources
- Créer un compte de stockage
- Créer un réseau virtuel
- Créer un groupe de sécurité réseau
- Créer et configurer le service Azure Automation
- Créer le service Azure Automation
- Créer un principal de service
- Créer des données d’identification dans le service Automation
- Créer des variables dans le service Automation
- Importer les modules requis
- Créer les runbooks PowerShell
- Créer les runbooks PowerShell
- Autoriser le principal de service au niveau de l’abonnement
- Créer et configurer Event Grid
- Créer un webhook qui écoutera les événements dans le compte de stockage
- Créer un abonnement aux événements via le webhook
Créer un fichier Excel
La première étape consiste à créer un fichier Excel qui sera utilisé comme fichier d’entrée. Le nom du fichier Excel est CreateVM.xlsx. Sa structure est la suivante :
- Name : nom donné à la machine virtuelle
- Location : emplacement où la machine virtuelle sera déployée
- RGName : nom du groupe de ressources dans lequel toutes les ressources sont créées
- SKU : SKU de la machine virtuelle, à savoir la version du système d’exploitation (ici, nous avons choisi 2012-R2-Datacenter et 2019-DataCenter)
- Size : taille de la machine virtuelle en fonction des performances et du prix
- LocalAdminUser : nom d’utilisateur de l’administrateur utilisé pour se connecter à la machine virtuelle
- Password : mot de passe associé au nom d’utilisateur de l’administrateur
- PublisherName : nom de l’éditeur du système d’exploitation
- OfferName : type du système d’exploitation (nous utiliserons Windows Server)
- Computername : nom donné à l’ordinateur après la configuration
Créer un groupe de ressources
La deuxième étape de la création de toute ressource dans Azure consiste à créer un groupe de ressources. Ces groupes de ressources sont créés au sein de l’abonnement et sont mappés vers un emplacement.
- Connectez-vous à Azure Portal et accédez à Resource Group puis cliquez sur le bouton Add.
- Sur la page Create a resource group, choisissez un abonnement, saisissez le nom du groupe de ressources et sélectionnez votre région.
- Cliquez sur Review + Create et une fois la validation terminée, cliquez sur le bouton Create.
Créer un compte de stockage
- Dans la barre de recherche, saisissez Storage Account, puis sélectionnez Storage Account.
- Sur la page Storage accounts, cliquez sur le bouton New.
- Sur la page Create a storage account, sélectionnez le groupe de ressources, donnez un nom au compte de stockage, sélectionnez la région, choisissez le niveau de performance Standard et sélectionnez LRS pour la redondance.
- Conservez le paramètre par défaut pour toutes les autres options. Vous n’avez pas non plus à modifier ou à configurer les paramètres sur les autres pages. Conservez toutes les valeurs par défaut.
- Lorsque vous avez terminé, cliquez sur Review + create. Après la validation, cliquez sur Create.
- Une fois le compte de stockage créé, accédez-y et cliquez sur le lien Containers sous Blob Service.
- Sur la page Containers, cliquez sur le bouton Container pour créer un conteneur.
- Nommez le fichier du conteneur « createvm » et laissez toutes les autres options telles quelles.
- Pour finir, cliquez sur le bouton Create.
- Vous voyez désormais qu’un conteneur a été créé pour vous.
Créer un réseau virtuel
- Dans la barre de recherche, saisissez Virtual Network et sélectionnez la première option.
- Cliquez sur le bouton New pour créer un réseau virtuel.
- Sur la page Create virtual network, sélectionnez le groupe de ressources, donnez un nom au réseau virtuel, sélectionnez la région, puis cliquez sur Review + create. Après la validation, cliquez sur le bouton Create.
- Vous n’avez pas à modifier ou à configurer d’autres paramètres pendant la création du réseau virtuel.
Créer un groupe de sécurité réseau
- Recherchez de nouveau le groupe de sécurité réseau et cliquez sur la première option.
- Sur la page Network security groups, cliquez sur le bouton New.
- Sur la page Create network security group, sélectionnez le groupe de ressources et donnez un nom. La région sera renseignée en fonction du groupe de ressources choisi.
- Cliquez sur le bouton Review + create, puis sur le bouton Create après la validation.
Créer et configurer le service Azure Automation
Tous les composants nécessaires à la création du compte Automation sont désormais prêts. Nous allons maintenant procéder à la création et à la configuration d’Azure Automation.
Créer le service Azure Automation
Cliquez dans la barre de recherche, recherchez Automation Accounts, puis cliquez sur la première option, à savoir Automation Accounts.
- Sur la page Automation Accounts, cliquez sur le bouton New.
- Sur la page Add Automation Account, donnez un nom au service d’automatisation et sélectionnez le groupe de ressources.
- La région sera renseignée automatiquement en fonction du groupe de ressources choisi.
- Pour Create Azure Run As Account, sélectionnez No. Nous créerons un principal de service séparément.
- Cliquez sur Create pour créer le service d’automatisation.
Créer un principal de service
Une fois que le compte Automation a été mis en service, nous devons commencer par provisionner un principal de service. Ce compte sera utilisé par les runbooks d’automatisation pour accéder à d’autres services Azure, tels que le compte de stockage.
- Ouvrez un nouvel onglet de navigateur et suivez le lien https://gist.github.com/neerajks77.
- Faites défiler vers le bas la page qui s’ouvre pour trouver le code PS permettant de créer le principal de service.
- Cliquez sur le nom (CreateServicePrincipal.ps1), puis sur le bouton Raw en haut à droite.
- Copiez le code et retournez dans le portail Azure. Vous pouvez exécuter le code à partir de Cloud Shell depuis le portail Azure ou ouvrir une nouvelle fenêtre shell en saisissant shell.azure.com. Le shell associé à votre tenant s’ouvre.
- Une fois dans le shell, vous devrez peut-être créer un autre compte de stockage pour exécuter les commandes shell. Lorsque l’écran bleu s’affiche, vérifiez que PowerShell est sélectionné.
- Collez le code que vous avez copié dans le gist et appuyez sur Entrée. Cela créera une fonction qui pourra être appelée avec le nom d’utilisateur et le mot de passe comme paramètres afin de créer le principal de service.
- Dans l’invite de commande, saisissez le nom de la fonction et transmettez les paramètres de nom d’utilisateur et de mot de passe. Notez le mot de passe, car vous en aurez besoin lors de la création des données d’identification dans le service d’automatisation.
Créer des données d’identification dans le service Automation
-
- Revenez dans le portail Azure et ouvrez Azure Active Directory.
- Sous Manage, cliquez sur App registrations.
- Sur la page App registrations, cliquez sur All applications. Le principal de service créé est affiché.
- Cliquez sur le principal de service que vous avez créé précédemment. Dans la page qui s’ouvre, copiez l’identifiant en regard d’Application (client) ID. Il s’agira du nom d’utilisateur dans la section des données d’identification du compte Automation.
- Revenez dans le compte Automation créé précédemment.
- Faites défiler vers le bas le menu de gauche et cliquez sur Credentials dans la section Shared Resources.
- Sur la page Credentials, cliquez sur Add a credential.
- Dans la fenêtre New Credential qui s’affiche, saisissez le nom de votre choix. Pour notre exemple, saisissez « Creds », car c’est le nom utilisé dans le runbook PowerShell.
- Sous User name, entrez l’identifiant d’application copié dans Azure AD.
- Le mot de passe est le même que celui utilisé lors de la création du principal de service.
- Cliquez sur Create.
Créer des variables dans le service Automation
Nous devons maintenant créer des variables. Ces variables seront utilisées par les runbooks PowerShell pour le traitement.
- Dans le menu de gauche, cliquez sur Variables sous Shared Resources.
- Nous devons créer 4 variables, toutes devant avoir le type String. Commençons par « nsg ».
- Cliquez sur le bouton Add a variable.
- Dans la section Name, saisissez « nsg ».
- Dans la zone Value, saisissez le nom du groupe de sécurité réseau créé précédemment.
- Lorsque vous avez terminé, cliquez sur Create.
- Répétez les étapes 3 à 6 pour ajouter trois autres variables, à savoir « StorageAccount », « TenantID » et « vNet ».
- Pour la variable TenantID, vous pouvez exécuter la commande Get-AzSubscription dans PowerShell afin de récupérer la valeur Tenant ID.
- À la fin, votre écran des variables devrait ressembler à l’écran ci-dessous.
Importer les modules requis
Nous allons maintenant importer tous les modules requis pour cet atelier. Nous allons commencer par Az.Accounts. Vous devez l’importer en premier, car tous les autres modules en dépendent. Nous répéterons ensuite les mêmes étapes pour tous les autres modules.
- Dans le menu de gauche, cliquez sur Modules sous Shared Resources.
- Sur la page Modules, cliquez sur le bouton Browse Gallery.
- Sur la page Browse Gallery, recherchez Az.Accounts.
- Lorsque le module apparaît, cliquez sur son nom puis sur Import pour importer le module.
- L’importation et la configuration de ce module prennent du temps. Une fois le module importé, commencez à importer les autres modules.
- Suivez les étapes 3 et 4 pour importer les autres modules :
- Az.Automation,
- Az.Compute,
- Az.Network,
- Az.Resource,
- Az.Storage et
- ImportExcel
Créer les runbooks PowerShell
Nous allons maintenant créer deux runbooks PowerShell. Le premier runbook lancera le processus en écoutant les événements sur le compte de stockage. Il lira le fichier Excel chargé, extraira les informations une ligne à la fois et les transmettra comme paramètres au second runbook. Le second runbook se chargera de déployer les machines virtuelles et d’associer le groupe de sécurité réseau aux NIC.
Suivez les étapes ci-dessous pour configurer les runbooks.
Créer les runbooks PowerShell
- Dans le menu de gauche, cliquez sur Runbooks sous Process Automation.
- Sur la page Runbooks, cliquez sur Create a runbook.
- Dans la fenêtre Create a runbook qui s’affiche, saisissez « ImportWatcherRunbook » sous Name, puis sélectionnez PowerShell sous Runbook type.
- La page Edit PowerShell Runbook s’affiche.
- Dans une autre fenêtre de navigateur, revenez à gist.github.com/neerajks77 et copiez le code pour « InitiateWatcherProcess.ps1 ».
- Revenez dans la fenêtre Edit PowerShell Runbook et collez le code.
- Pensez à mettre à jour « $vResourceGroupName » et « vAutomationAccountName » selon votre configuration.
- Après avoir collé le code, cliquez sur Save, puis sur Publish. Votre premier runbook est alors publié.
- Répétez les étapes 1 à 7 ci-dessus pour créer le second runbook dont le nom est « CreateVirtualMachineActionRunbook ». Copiez le code PowerShell à partir du gist sous « CreateVirtualMachineActionRunbook.ps1 » et collez-le dans le runbook. Enregistrez et publiez le runbook.
Autoriser le principal de service au niveau de l’abonnement
Une fois les runbooks créés, nous devons attribuer des autorisations au principal de service créé précédemment. Dans le cadre de cet atelier, nous allons attribuer au principal de service un accès de niveau contributeur. Dans la vie réelle, les autorisations doivent être judicieusement accordées afin que les utilisateurs puissent uniquement effectuer les tâches correspondant à leur rôle.
- Dans la barre de recherche, saisissez « subscription » et cliquez sur la première option.
- Sur la page Subscriptions, cliquez sur votre abonnement où toutes les ressources ont été créées.
- Sur la page Subscriptions, cliquez sur Access control (IAM) dans le menu de gauche.
- Sur la page Access Control, cliquez sur Add pour ajouter le principal de service à un rôle de contributeur.
- Dans la fenêtre Add role assignment qui s’affiche, sélectionnez Contributor sous Role, conservez la valeur par défaut pour Assign access to et saisissez Varonis sous Select. L’identifiant VaronisAutomation apparaît et est sélectionné.
- Lorsque vous avez terminé, cliquez sur Save.
Créer et configurer Event Grid
Nous devons maintenant créer Event Grid pour le compte de stockage afin que les événements soient publiés chaque fois qu’un nouveau fichier est chargé sur le compte de stockage.
- Dans la barre de recherche, saisissez « Event Grid », puis cliquez sur Event Grid Topics.
- Sur la page Event Grid Topics, cliquez sur New.
- Sur la page Create Topic, sélectionnez le groupe de ressources, donnez un nom à la rubrique, puis choisissez la région. Vous n’avez pas à modifier les autres options.
- Lorsque vous avez terminé, cliquez sur Review + create. Après la validation, cliquez sur Create.
Créer un webhook qui écoutera les événements dans le compte de stockage
Une fois la rubrique créée, nous devons créer un webhook sur « ImportWatcherRunbook », car ce runbook écoutera les événements de chargement de fichiers à partir du compte de stockage afin de lancer le processus de création de la VM.
- Dans le compte Azure Automation, cliquez sur Runbooks sous Process Automation.
- Cliquez ensuite sur ImportWatcherRunbook.
- Sur la page ImportWatcherRunbook, cliquez sur Add webhook.
- Sur la page Add Webhook, cliquez sur Create a new Webhook.
- Sur la page Create a new webhook, donnez un nom au webhook. Conservez le paramètre par défaut pour toutes les autres valeurs.
- Copiez l’URL qui se trouve en bas et collez-la dans le Bloc-notes. Cette étape est nécessaire, car vous n’aurez plus accès à cette URL une fois que vous aurez quitté cette page. Sinon, vous devrez créer un nouveau webhook.
- Lorsque vous avez terminé, cliquez sur le bouton OK.
- Une fois de retour sur la page Add Webhook, cliquez sur le bouton Create.
Créer un abonnement aux événements via le webhook
Maintenant que le webhook a été créé, nous devons créer un abonnement aux événements. Il s’agit de la dernière étape de la configuration du processus d’automatisation.
- Revenez dans le compte Automation.
- Faites défiler vers le bas le menu de gauche jusqu’à Related Resources et cliquez sur Event grid.
- Sur la page Event grid, cliquez sur Event Subscription pour créer un abonnement.
- Sur la page Event Subscription, donnez un nom à l’abonnement.
- Sous Topic, sélectionnez Storage Accounts.
- Sélectionnez l’abonnement et le groupe de ressources.
- Sous Resource, sélectionnez la rubrique créée dans la section précédente.
- Sous System Topic Name, saisissez le nom de votre choix. J’ai choisi « topicsforwatcher ».
- Sous Event Types, choisissez « Blob Created ».
- Dans la section Endpoint Details, sous Endpoint Type, sélectionnez Webhook dans la liste déroulante, puis cliquez sur le lien « Select an endpoint ».
- Dans la fenêtre Select Webhook qui s’affiche, collez dans la zone Subscriber Endpoint l’URL du terminal que vous avez copiée précédemment.
- Une fois que vous avez fourni toutes les informations, cliquez sur le bouton Confirm Selection, puis sur Create.
Maintenant que vous avez effectué toutes les étapes de la configuration de l’automatisation, vous devez tester le système. Accédez au compte de stockage et chargez le fichier Excel « CreateVM.xlsx » dans le conteneur « createvm ».
Lorsque le fichier a été chargé, revenez dans « InitiateWatcherRunbook » dans le compte Automation. Le runbook démarre automatiquement.
Cliquez sur le statut pour afficher davantage d’informations. Sous la valeur, vous pouvez voir que l’opération a été déclenchée par le webhook.
Une fois l’opération terminée, vous pouvez examiner plus précisément le résultat en cliquant sur l’onglet Output.
Pour finir, vous pouvez accéder aux machines virtuelles afin de vous assurer que les deux machines virtuelles ont bien été déployées.
Récapitulatif
Azure Automation est un service d’automatisation et de configuration basé dans le cloud qui vous permet d’automatiser la gestion et les opérations informatiques et de coordonner les actions dans les environnements Azure, non Azure et sur site. Il aide les équipes informatiques et les services d’assistance à se concentrer sur l’accomplissement de tâches productives plutôt que sur la manière de les effectuer, ce qui ajoute de la valeur à l’entreprise. Il aide également les organisations à réduire leurs dépenses opérationnelles.
Que dois-je faire maintenant ?
Vous trouverez ci-dessous trois solutions pour poursuivre vos efforts visant à réduire les risques liés aux données dans votre entreprise:
Planifiez une démonstration avec nous pour voir Varonis en action. Nous personnaliserons la session en fonction des besoins de votre organisation en matière de sécurité des données et répondrons à vos questions.
Consultez un exemple de notre évaluation des risques liés aux données et découvrez les risques qui pourraient subsister dans votre environnement. Cette évaluation est gratuite et vous montre clairement comment procéder à une remédiation automatisée.
Suivez-nous sur LinkedIn, YouTube et X (Twitter) for pour obtenir des informations sur tous les aspects de la sécurité des données, y compris la DSPM, la détection des menaces, la sécurité de l’IA et plus encore.