Continuous integration for a SharePoint Framework Project

 

blog ai3 Header-1024x195 Continuous integration for a SharePoint Framework Project

 

SharePoint Framework is the development tooling used for the new SharePoint Modern Pages, it allow to create WebPart, List Field Customiser or Page extensions.

In the context of a development project, you may be need to increase the speed of your deployment and testing by using the Azure DevOps Tool Suite. You’ll find below a small tutorial to automate your build and release with Azure DevOps.

The SharePoint Framework package creation with Azure DevOps is splitted in two parts: the creation of the package itself and its deployment to the SharePoint Online App Catalog.

Build Setup :

From the Pipelines menu click on Builds and on New Pipeline, the configuration wizard is displayed:

blog ai3 Create-Build1-300x211 Continuous integration for a SharePoint Framework Project

From this screen, you should select your project, the repository and your target branch. On the next screen, you have the possibility to start from a template but we’ll start from a fresh template, so click one Empty Job

blog ai3 Create-Build2-300x70 Continuous integration for a SharePoint Framework Project

 

To do this job you should had the following steps :

 

  • Task Node Tool Installer

Here we will install the recommended Node Version for SharePoint Framework : 8.11.

blog ai3 Create-Build3-300x155 Continuous integration for a SharePoint Framework Project

  • Task NPM

Here we’re installing all Node Modules for our project

 

blog ai3 Create-Build4-300x182 Continuous integration for a SharePoint Framework Project

 

  • Task Gulp x2

Here we’re adding 2 gulp task to bundle and package our SPFX project

blog ai3 Create-Build5-300x273 Continuous integration for a SharePoint Framework Projectblog ai3 Create-Build6-270x300 Continuous integration for a SharePoint Framework Project

 

  • Task Publish Build Artifacts

Finally we’re publishing the build package to use it in the release pipeline

blog ai3 Create-Build7-279x300 Continuous integration for a SharePoint Framework Project

Release Setup:

There’s several ways to publish a SPFX package : Gulp, PowerShell and the Office 365 CLI. For this tutorial I’ll use the latest method because it is system agnostic ( based on NodeJS ) and easier to use.

First of All, you’ll have to grant the permissions on your tenant to the Office 365 CLI ( just connect to your tenant through this CLI from your computer ).
You can find an installation guide of Office 365 CLI here : https://pnp.github.io/office365-cli/

 

blog ai3 Create-Release1-1024x654 Continuous integration for a SharePoint Framework Project

Once it’s done, we’re ready to create our Release Pipeline.

 

From the Pipelines menu click on Releases, New, and then Release Pipeline: the Configuration Wizard is appearing :blog ai3 Create-Release2 Continuous integration for a SharePoint Framework Project

Click on Empty Job  and define a name for your stage ( for our example the stage name will be SharePoint Online ), once it’s done click on the hyperlink below the stage name and access to the task list:blog ai3 Create-Release3 Continuous integration for a SharePoint Framework Project

Add the following tasks :

 

  • Task Node Tool Installer :

We’re installing the recommended Node version for the Office 365 CLI

blog ai3 Create-Release4 Continuous integration for a SharePoint Framework Project

 

  • Task NPM :

We’re installing the Office 365 CLI

 

blog ai3 Create-Release5 Continuous integration for a SharePoint Framework Project

 

  • Task Command Line :

We’re first connecting to the tenant through a user / password authentication method: tenantUrl, password and username are here Custom Variables

blog ai3 Create-Release7 Continuous integration for a SharePoint Framework Project

  • Task Command Line :

Finally we’re adding the app to the app catalog ( _TestIC-CI is the Artifact Name )

blog ai3 Create-Release8 Continuous integration for a SharePoint Framework Project

To test your work create a new release and your package will be deployed in your tenant catalog !

Azure VM Scale Sets : 3 Création du scaleset à partir du vhd

Dans le dernier article de cette série nous allons :

  • Récupérer le blob du vhd modèle
  • Créer un scaleset à partir du vhd
  • Mettre à jour un scaleset à partir du vhd

Cet article s’inscrit dans une série d’articles visant à montrer comment créer un groupe de machines virtuelles identiques à partir d’une machine virtuelle modèle.

3ème étape créer ou mettre à jour le scaleset

1. Initialiser les variables

2. Récupérer le blob du vhd modèle

3. Créer le VMSS à partir du vhd

Nous allons vérifier si un groupe de machine existe déjà, sinon nous allons créer celui-ci.

Comme pour la copie de la vm nous utilisons un template ARM pour configurer la machine. Pour des informations plus détaillées sur celui-ci vous pouvez vous référer à la documentation officielle.

La partie intéressante est « virtualMachineProfile », c’est dans celle-ci que l’on indique que le scaleset se base sur le vhd de la machine modèle.

Le fichier suivant contient les paramètres du template ARM :

4. Mettre à jour le scaleset à partir du vhd

Si vous avez déjà créé le groupe de machines virtuelles il est possible de mettre à jour celui-ci à partir de votre nouvelle image modèle. Il faut ensuite déployer sur chaque instance de votre scaleset la mise à jour.

A l’issue de cette série d’articles nous avons, à l’aide de powershell et des templates ARM:

  • Créé une copie d’une vm existante
  • Généralisé celle-ci
  • Transféré le vhd d’un espace de stockage à un autre
  • Créé ou mis à jour un scale set à partir de l’image

J’espère que cette série d’article a pu vous éclairer sur ce processus !

 

Azure VM Scale Sets : 2 Création du vhd modèle

Dans ce second article sur Azure nous allons :

  • Généraliser notre VM modèle temporaire
  • Sauvegarder notre image modèle ainsi générée

Lors de la première étape nous avons créé une machine virtuelle, copie temporaire de notre modèle, sur laquelle nous avons automatiquement lancé un script de généralisation. Un fichier .vhd sera généré et sera prêt à être utilisé dans un scaleset azure à l’issue de cet article.

2ème étape généraliser la machine virtuelle temporaire

1. Récupérer et éteindre la vm modèle temporaire

2. Finaliser la généralisation de la vm temporaire

A l’étape précédente nous avons généralisé la vm à l’aide de sysprep.exe. Il faut indiquer à Azure que la machine a été généralisée.

3. Sauver la vm généralisée sous la forme d’un vhd

Maintenant que notre machine virtuelle est entièrement généralisée nous pouvons extraire l’image (vhd) que nous utiliserons pour le scaleset.

Le paramètre -Path correspond au chemin local du template arm automatiquement généré.

4. Supprimer la vm généralisée temporaire

La machine temporaire n’est plus d’aucune utilité et peut être supprimée.

 

Dans le prochain article nous verrons comment utiliser le vhd généré pour créer notre scaleset.

Si vous avez besoin de transférer le vhd d’un storage à un autre vous pouvez utiliser un outil tel que cloud berry. Ou aller voir cet article expliquant comment effectuer le transfert à l’aide de powershell.

Azure VM Scale Sets : 1 Copie de la VM modèle

Dans cette série d’article nous allons explorer les groupes de machines virtuelles identiques (scaleset) Azure à l’aide de powershell et des template ARM.

Dans ce premier article nous allons :

  • Créer une copie d’une machine virtuelle azure à l’aide de script powershell et de template arm
  • Configurer cette copie pour qu’un script de généralisation se lance automatiquement au démarrage

Rapide rappel sur les Scale Sets azure à partir de la documentation microsoft :

Les groupes identiques de machines virtuelles Azure vous permettent de créer et de gérer un groupe de machines virtuelles identiques et disposant d’une charge équilibrée. Le nombre d’instances de machine virtuelle peut augmenter ou diminuer automatiquement en fonction d’une demande ou d’un calendrier défini.

Nous allons nous baser sur un cas d’utilisation de cette technologie :

  • Le client dispose d’une vm sur azure et souhaite, à partir de celle-ci, créer une collection de machine afin de pouvoir simplement créer ou supprimer des machines de sa collection en fonction de la charge actuelle
  • Le client à deux options :
    • A partir de sa machine créer une image fixe et déployer celle-ci sur son scaleset :
      Pros : l’utilisateur aura une copie conforme de sa machine
      Cons : si l’utilisateur met à jour sa machine modèle il devra écraser chaque machine le scaleset pars sa nouvelle image
    • Créer un scaleset à partir d’une image par défaut. Lors de la création d’une image lancer un script qui installera les composants nécessaires
      Pros : les machines auront toujours la dernière version de Windows, en cas de mis à jour d’un service/application il suffit de propager uniquement cette mise à jour
      Cons : lors de la création d’une machine il est nécessaire de configurer et d’installer les composants nécessaires

Nous allons explorer la première option.

1ère  étape : créer une copie temporaire de la machine modèle

1. Installer le module azure de powershell (si nécessaire)

2. Initialiser les variables

3. Initialiser les accès

4. Récupérer la machine modèle et l’éteindre si nécessaire

5. Copier le vhd de la machine modèle

Le processus de généralisation d’une machine est définitif, une fois celle ci généralisée il n’est plus possible d’utiliser celle-ci. Nous allons donc d’abord créer une copie temporaire de notre modèle que nous utiliserons pour la généralisation, laissant ainsi notre machine modèle intacte. Pour cela nous allons d’abord copier le vhd de la machine modèle dans notre storage.

6. Créer un script de généralisation

Afin qu’une VM puisse être généralisée l’outil sysprep.exe doit être lancé. Pour éviter d’avoir à manuellement se connecter sur la VM pour lancer sysprep.exe nous allons copier le script powershell suivant dans notre storage. Ce script sera lancé automatiquement au démarrage de la VM.

7. Créer une VM temporaire

Remarquez que nous utilisons ici un template ARM json pour instancier notre nouvelle vm, vous pouvez récupérer celui ci directement depuis le portail azure, azure resource explorer, ou le créer vous même à partir de la documentation microsoft.

Deux parties sont importantes dans notre cas :

  • « storage profile » précise que la VM crée se base sur un vhd existant pointant vers l’url de notre copie temporaire
  • « CustomScriptExtension » ajoute une extension qui lancera le script de généralisation au démarrage de notre vm temporaire, notez qu’il est possible de passer des arguments à ce script pour, par exemple, s’assurer de la configuration de votre vm temporaire

Le fichier suivant contient les paramètres par défaut de votre template ARM, il doit être sur la machine lançant le script powershell :

Dans le prochain article nous verrons comment utiliser cette VM pour créer le vhd qui sera utilisé pour le scaleset.

 

Cost Management Service : Suivi et optimisation de votre consommation dans Azure

La nouvelle est passée relativement inaperçue : Microsoft a racheté Cloudyn en juin 2017. Cloudyn propose une solution de reporting sur les consommations Azure, AWS et Google Cloud, mais aussi de faire des recommandations pour optimiser les coûts en fonction de l’usage. Ce service a été intégré au portail Azure sous le terme « Cost Management ».

blog ai3 cloudyn-dashboard Cost Management Service : Suivi et optimisation de votre consommation dans Azure

Ajouter le service Cost Management dans le portail

La création du service dans le portail se fait par la marketplace : recherchez « Cost » ou « Cost Management »:

blog ai3 cloudyn-search-service-1024x304 Cost Management Service : Suivi et optimisation de votre consommation dans Azure

Sélectionner « Cost Management », puis cliquer sur le bouton « Créer ».

A partir d’ici, la procédure varie en fonction de votre situation :

  • le service est déjà activé sur le tenant Azure, mais votre compte n’y a pas accès.
  • le service n’est pas encore activé sur le tenant Azure.

L’écran ci-dessous se présente dans le cas où le service n’est pas encore activé :

blog ai3 cloudyn-setup-1024x717 Cost Management Service : Suivi et optimisation de votre consommation dans Azure

Pour compléter l’enregistrement, il n’y a que quelques étapes à suivre : l’activation du service ne prend que quelques minutes. Par contre, la mise à jour des statistiques peut prendre plusieurs heures en fonction des services Azure que vous utilisez.

Exemples de tableaux de bord

Les captures d’écran ci-dessous vous donnent quelques exemples significatifs des tableaux de bord proposés par « Cost Management ».

blog ai3 cloudyn-dashboard-2 Cost Management Service : Suivi et optimisation de votre consommation dans Azure

Evolution des coûts par service

blog ai3 cloudyn-dashboard-4 Cost Management Service : Suivi et optimisation de votre consommation dans Azure

Répartition des coûts par entité, type d’usage et région

blog ai3 cloudyn-dashboard-1-1024x770 Cost Management Service : Suivi et optimisation de votre consommation dans Azure

Répartition des coûts par service et par région

L’objectif de la solution étant in fine d’optimiser les coûts, Cloudyn a intégré une navigation par drilldown dans les rapports, ce qui permet de réaliser des analyses très précises sur les consommations :

blog ai3 cloudyn-drilldown Cost Management Service : Suivi et optimisation de votre consommation dans Azure

Au delà des axes d’analyse prévus par Cloudyn (Resource types, Services, Cost Types, etc), il est possible de détailler par « tag ». Aussi, je ne peut que vous conseiller de tagger l’ensemble de vos ressources Azure.

Autres features

Des alertes

Il est possible de définir des alertes (par mail) sur certains indicateurs permettant ainsi de mettre en place rapidement d’éventuelles actions correctives.

blog ai3 cloudyn-alerts Cost Management Service : Suivi et optimisation de votre consommation dans Azure

Conseils pour l’optimisation des coûts

En fonction de l’utilisation de vos ressources, Cost Management est en mesure de vous proposer des optimisations : le cas le plus parlant concerne la taille des VM : si une VM est sous utilisée, il vous proposera de changer sa taille.

blog ai3 cloudyn-cost-optimization Cost Management Service : Suivi et optimisation de votre consommation dans Azure

blog ai3 cloudyn-cost-optimization-2 Cost Management Service : Suivi et optimisation de votre consommation dans Azure

Unification

Comme indiqué en introduction, Cloudyn gère AWS, Azure et Google Cloud. Si vous utilisez plusieurs cloud providers, vous pouvez suivre vos consommations au sein d’un outil unique.

Editions et tarifs

Cost Manager existe en 2 éditions :

  • Standard
  • Premium

Ces 2 éditions sont gratuites pour les utilisateurs Azure, et payantes pour les utilisateurs AWS et Google Cloud.

Blockchain Article 1: concepts fondamentaux

Cet article a pour vocation de vulgariser le concept de blockchain. Il sera suivi d’un second article plus technique qui illustrera comment utiliser un service de blockchain avec les technologies Microsoft.

Concept

Née avec le bitcoin, la blockchain est une technologie de stockage et de transfert d’information sécurisée, décentralisée et sans intermédiation dans un réseau peer-to-peer.

Toute nouvelle information (transaction) est inscrite sous forme de bloc dans une chaîne (un livre de compte) réputée infalsifiable que chaque acteur de la chaîne partage.

A chaque instant, il est possible de connaître la chronologie d’une information échangée dans la chaîne (par qui) car les blocks contiennent la signature public d’un membre mais le contenu de la transaction reste privé. Il faut en posséder la clef privée pour le lire.

blog ai3 chain-1 Blockchain Article 1: concepts fondamentaux

Exemple d’une transaction dans la chaîne BitCoin.

 

Quelles applications pour une blockchain ?

On attribue 3 types d’application à la blockchain :

  • Le transfert d’actifs,
  • Le registre,
  • Les « smart contracts » (mini programmes distribués)

Dans tous les cas, l’objectif est de remplacer des tiers de confiance centralisés qui monopolisent parfois un pouvoir économique, politique ou social sans apporter de valeur ajoutée pour le consommateur final.

Comment fonctionne une blockchain ?

  1. Deux clients de la chaîne effectuent une transaction. A transmet une information à B.
  2. La transaction est inscrite dans un bloc.
  3. Des nœuds du réseau participant à la chaîne (mineurs) valident le bloc par des méthodes cryptographiques.
  4. Le bloc est validé et daté et la transaction est validée, B reçoit l’information.
  5. Le bloc est propagé à tous les membres de la chaîne.

Focus sur le consensus décentralisé : la preuve de travail

Il s’agit du mécanisme qui permet de garantir la validité d’une transaction  au sein de la chaîne et qui est une solution du problème des généraux byzantins . La preuve de travail consiste à fournir aux autres membres le résultat d’un calcul. Le calcul doit être couteux en ressources mais le résultat doit être facilement vérifiable.

Dans notre cas, il s’agit d’éviter que des nœuds du réseau mal intentionnés tentent de produire un bloc contenant de fausses informations.  Voici le fonctionnement :

 

  1. Certaines transactions sont en attente
  2. Des nœuds spéciaux du système (les mineurs) créent localement une version du prochain bloc en exécutant un calcul complexe (1)
  3. Le premier nœud qui résout le problème envoie le résultat à tous les autres nœuds du réseau qui peuvent vérifier facilement ce résultat (2)
  4. Le mineur victorieux peut être rémunéré (il prend une commission sur la transaction)
  5. Le bloc est ajouté à la chaîne
  6. La nouvelle version de la chaîne et propagée à tous les nœuds (3)

 

  • Dans le cas du bitcoin, le calcul consiste à trouver un double hash SHA-256 d’une chaîne qui contient les transactions en attente. Un nœud gagne si son hash commence à minima par n zéro
  • Il faudrait posséder une majorité de nœuds malveillants sur le réseau pour valider un faux bloc.
  • Pour cette raison, la chaîne est mise à jour de façon régulière (de 10 minutes à une heure pour le bitcoin) ce qui induit une latence dans la mise en œuvre des transactions.

blog ai3 Blockchain-1-1024x421 Blockchain Article 1: concepts fondamentaux

Focus sur les contrats

Dans certaines chaînes, une transaction peut contenir un programme avec une mini base de données : un contrat. Les contrats sont répliqués dans tous les nœuds par construction de la chaîne et si un utilisateur exécute une méthode du programme qui met à jour la base, alors cette commande est répliquée sur tout le réseau.

 

Par exemple, on peut implémenter un contrat de location d’un logement dans la chaîne en pré câblant les conditions du contrat :

  • Le bailleur reçoit le montant du loyer en caution à la date d’entrée
  • En fin de contrat, le bailleur retourne la caution
  • En cas de preuve de dégradation (*), le loueur transfert une somme d’argent au bailleur

(*) on pourrait imaginer automatiser ce point avec l’internet des objets.

 

Dans cet exemple, pas besoin d’agent immobilier pour rédiger le contrat ou de juge pour régler un problème de paiement.

 

Quelles sont les limitations d’une blockchain ?

Le choix de la sécurisation par preuve de travail induit une latence élevée pour la validation des transactions et limite le nombre de transactions par jour. Bitcoin atteint aujourd’hui 350000 transactions avec une latence d’environ 15 minutes (parfois une heure) loin du milliard de transactions quotidiennes par carte bancaire du système bancaire institutionnel. Une piste d’amélioration est un changement de paradigme dans la fourniture de la preuve de validité des blocs (la preuve d’état).

 

Quelques exemples d’implémentation

Les applications d’une blockchain sont nombreuses et devraient exploser avec l’avènement de l’internet des objets. Si certains services sont maintenant mieux connus du grand public comme la monnaie virtuelle Bitcoin, d’autres services restent encore au stade de l’expérimentation. On pense par exemple à Monegraph (propriété intellectuelle d’œuvre et conditions d’utilisation) ou La Zooz (un Uber décentralisé sans tiers pour prendre des taxes …).

 

 

Microsoft BAAS

Microsoft fournit des instances de blockchain sous forme de service dans Azure.

La création d’une application avec cette technologie fera l’objet du prochain article.

blog ai3 baas Blockchain Article 1: concepts fondamentaux

Guide de déploiement d’un template ARM

Bonjour, cet article est la suite de mon article concernant Azure Resource Manager. Au sein de celui-ci nous avions vu comment créer un template ARM avec Visual Studio. Ce que je vous propose dans ce nouvel article c’est de voir ensemble les différentes options permettant de déployer un template ARM. Mais trêve de bavardage, entrons dans le vif du sujet.

Le contenu de la solution utilisé pour la suite de cet article se trouve ici.

Déploiement d’un template ARM avec Visual Studio

Afin de déployer un template depuis Visual Studio, il vous suffit d’ouvrir une solution contenant un projet de déploiement, et de faire un clic droit sur celui-ci. Au niveau du menu, sélectionnez l’option « Deploy », et sélectionnez ensuite « New Deployment ».

blog ai3 Deploiement-ARM-avec-Visual-Studio-Step1 Guide de déploiement d'un template ARM

Une nouvelle fenêtre s’ouvre dans laquelle les informations suivantes devront être saisies:

  • Compte utilisé pour effectuer le déploiement.
  • Abonnement dans lequel doit se faire le déploiement.
  • Groupe de ressources auquel sera rattaché les ressources. Vous pouvez soit créer un nouveau groupe de ressources, soit vous baser sur un groupe déjà existant au niveau de l’abonnement sélectionné.
  • Vous devez ensuite choisir le fichier JSON de déploiement et aussi le fichier de paramètres.

Création d’un groupe de ressources

Pour le déploiement de notre template, nous allons partir sur un nouveau groupe de ressources, cela facilitera notamment la suppression des ressources liées à cet article. Pour cela sélectionnez l’option new, et configurez votre nouveau groupe de ressources.

blog ai3 Deploiement-ARM-avec-Visual-Studio-Step2 Guide de déploiement d'un template ARM

Dés que vous aurez correctement saisie ces paramètres, vous pourrez alors déployer votre solution.

blog ai3 Deploiement-ARM-avec-Visual-Studio-Step3 Guide de déploiement d'un template ARM

Création d’un instance Key Vault

Editez les paramètres afin de pouvoir saisir les valeurs concernant le login et le mot de passe de l’instance SQL. Afin de pouvoir protéger notre mot de passe, nous allons nous appuyer sur une instance du service Key Vault. Pour faire bref, ce service permet de gérer des informations secrètes de manière sécurisée. Après avoir correctement saisie les informations demandées, cliquez sur OK pour continuer

blog ai3 Deploiement-ARM-avec-Visual-Studio-Step4 Guide de déploiement d'un template ARM

Au niveau de la popup, Cliquez sur Oui pour valider l’utilisation de Key Vault.

blog ai3 Deploiement-ARM-avec-Visual-Studio-Step5 Guide de déploiement d'un template ARM

Ensuite, il vous restera ensuite les valeurs des différents autres paramètres qui sont utilisés au niveau du template. Une fois terminée, cliquez sur « Save » pour lancer le déploiement.

blog ai3 Deploiement-ARM-avec-Visual-Studio-Step6 Guide de déploiement d'un template ARM

Vous pouvez voir l’avancé du déploiement au niveau de la fenêtre de sortie de Visual Studio. Si tout se passe, au bout de quelques secondes, vous devriez avoir un message comme celui de l’image ci-dessous, si tout s’est déroulé sans erreur.

blog ai3 Deploiement-ARM-avec-Visual-Studio-Step7 Guide de déploiement d'un template ARM

Pour confirmer le bon déroulement de l’opération, connectez vous au portail Azure, et vérifiez que votre groupe de ressources a bien été créée et que celui-ci contient bien votre serveur SQL et votre base de données.

blog ai3 Deploiement-ARM-avec-Visual-Studio-Step8 Guide de déploiement d'un template ARM

Félicitation, vous venez de publié votre premier template sur Azure. Afin de vérifier la généricité de notre template, vous pouvez essayer de redéployer celui-ci en modifiant les paramètres.

Une fois vos tests terminés, supprimez les groupes de ressources afin d’éviter une facturation inutile. Ceci étant fait, nous allons pouvoir voir une autre méthode de déploiement en passant par le portail Azure. Ceci sera le sujet des prochains paragraphes.

Déploiement depuis le portail Azure

Afin de déployer votre template, au niveau du menu de gauche, cliquez sur « Nouveau », et au niveau du panneau venant de s’ouvrir entrer le texte « Template deployment » au niveau de la zone de recherche, et validez votre saisie.

blog ai3 Deploiement-ARM-avec-portail-Azure-Step1 Guide de déploiement d'un template ARM

Au niveau du panneau de résultats, choisissez l’option « Déploiement de modèle ».

blog ai3 Deploiement-ARM-avec-portail-Azure-Step2 Guide de déploiement d'un template ARM

Au niveau du panneau qui vient de s’ouvrir cliquez sur la bouton Créer afin d’ouvrir le panneau qui va nous permettre de configurer les informations concernant notre nouveau déploiement.

blog ai3 Deploiement-ARM-avec-portail-Azure-Step3 Guide de déploiement d'un template ARM

Création d’un nouveau modèle

Un nouveau panneau va alors s’ouvrir, vous permettant de configurer les différents éléments nécessaire à votre déploiement. Dans un premier temps vous devrez définir le contenu du template que vous désirez déployer. Afin de renseigner ce template vous pouvez soit construire votre template depuis le portail, comme nous l’avons vu au paragraphe 2.1, soit copier coller le contenu depuis un fichier existant, et adapter ce contenu à votre besoin, soit partir sur un modèle de création rapide préexistant et l’adapter suivant vos désirs. Pour ce dernier cas il vous suffira de cliquer sur le bouton « Modèle de démarrage rapide » et de sélectionner le template sur lequel vous désirez vous baser.

blog ai3 Deploiement-ARM-avec-portail-Azure-Step4 Guide de déploiement d'un template ARM

Dans notre cas, nous allons copier le contenu du template que nous avons créé depuis Visual Studio et le coller au niveau du portail Azure.

blog ai3 Deploiement-ARM-avec-portail-Azure-Step5 Guide de déploiement d'un template ARM

Gestion des paramètres

Dès que vous avez terminé les modifications de votre template vous pouvez sauvegarder celles-ci et passer à l’étape suivante. Vous pouvez ensuite passer au renseignement des différents paramètres définis au niveau de notre template comme illustré dans l’image ci-dessous.

blog ai3 Deploiement-ARM-avec-portail-Azure-Step6 Guide de déploiement d'un template ARM

Gestion du groupe de ressources

Vos paramètres étant définis, il vous faudra ensuite choisir l’abonnement sur lequel vous désirez effectuer le déploiement, choisir le groupe de ressources dans lequel vous désirez déployer vos ressources (vous pouvez aussi choisir de créer un nouveau groupe), et enfin choisir l’emplacement où résidera votre groupe. La dernière étape consistera à accepter les conditions d’utilisation. Cliquer ensuite sur le bouton « Créer » pour lancer le déploiement de votre template.

blog ai3 Deploiement-ARM-avec-portail-Azure-Step7 Guide de déploiement d'un template ARM

Il se pourrait que vous ayez certaines erreurs empêchant le bon déroulement de l’opération. Dans pareils cas vous verrez apparaître un petit encart vous informant du mauvais déroulement de la procédure de déploiement. Cliquez alors sur cet encart pour avoir les informations concernant les erreurs, et corrigez celles-ci. Réessayer de lancer le déploiement. Je vous le dit de suite les erreurs remontées ne sont pas très parlante, mais bon il faut faire avec.

Exécution du déploiement

blog ai3 Deploiement-ARM-avec-portail-Azure-Step8 Guide de déploiement d'un template ARM

Si tout se déroule comme prévue vous devriez voir apparaître une notification vous information que le déploiement de votre template a commencer.

blog ai3 Deploiement-ARM-avec-portail-Azure-Step9 Guide de déploiement d'un template ARM

Après avoir attendu quelques instants vous pouvez cliquez sur les notifications pour voir si votre déploiement est terminé.

blog ai3 Deploiement-ARM-avec-portail-Azure-Step10 Guide de déploiement d'un template ARM

Vous pouvez cliquer sur la notification pour voir le détails concernant l’exécution du déploiement.

blog ai3 Deploiement-ARM-avec-portail-Azure-Step11 Guide de déploiement d'un template ARM

Voilà le déploiement de notre template depuis le portail Azure est maintenant terminé, il ne nous reste plus qu’a voir comment effectuer cette même tâche avec PowerShell. N’oubliez pas de supprimer le groupe de ressources que vous venez de créer pour éviter de dépenser de l’argent inutilement . Comme le dit si bien Guy Roux, je sais il y a mieux comme référence, il faut pas gâcher.

Déploiement d’un template existant

Dernière petite chose avant de passer à PowerShell. Si vous désirez redéployer votre template, il vous suffit de sélectionner le groupe de ressources créé lors du déploiement de ce template, ensuite d’aller sur déploiements et de cliquer sur le déploiement que vous venez d’effectuer.

blog ai3 Deploiement-ARM-avec-portail-Azure-Step12 Guide de déploiement d'un template ARM

Ensuite au niveau du panneau regroupant les informations sur le déploiement, il vous suffit de cliquer sur le bouton Redéployer, renseigner les paramètres concernant votre nouveau déploiement, de sélectionner un groupe de ressources ainsi que la région qui sera concernée, et ensuite de cliquer sur le bouton créer pour lancer celui-ci.

blog ai3 Deploiement-ARM-avec-portail-Azure-Step13 Guide de déploiement d'un template ARM

Voilà cette fois nous en avons vraiment finis avec le portail, et nous allons aborder la dernière partie de cet article qui concerne le déploiement d’un template à l’aide de PowerShell.

Déploiement d’un template ARM avec PowerShell

Avant d’exécuter le script PowerShell permettant d’effectuer le déploiement de notre template, nous allons ouvrir la solution Visual Studio.

Au niveau de Visual Studio, éditez le fichier de paramètres et renseignez ceux-ci. Cette opération doit être réalisée car ce fichier sera utilisé par notre Script PowerShell pour récupérer les valeurs des paramètres définis au niveau du template.

blog ai3 Deploiement-ARM-avec-PowerShell-Step1 Guide de déploiement d'un template ARM

Afin de procéder au déploiement de notre template à l’aide de PowerShell, nous allons utiliser le composant PowerShell ISE. Ouvrez une nouvelle instance de PowerShell ISE, et ouvrez ensuite le fichier PS1 provenant de la solution Visual Studio.

Connexion à votre abonnement Azure

Ayant récupérer notre script, nous allons maintenant procéder à l’ouverture d’une session sur notre abonnement Azure. Pour se faire entrez la commande suivante : Login-AzureRmAccount, et saisissez vos information de connexion.

blog ai3 Deploiement-ARM-avec-PowerShell-Step2 Guide de déploiement d'un template ARM

Gestion des paramètres

Dans un premier temps nous allons exécuter les commandes du script, permettant de déclarer les paramètres, unes à une au niveau de PowerShell. Pour se faire sélectionnez chacune des lignes concernant les paramètres et cliquez sur le bouton « Exécuter la sélection » comme montré dans l’image ci-dessous.

blog ai3 Deploiement-ARM-avec-PowerShell-Step3 Guide de déploiement d'un template ARM

Et en sortie vous devriez avoir quelque chose ressemblant à l’image ci-dessous.

blog ai3 Deploiement-ARM-avec-PowerShell-Step4 Guide de déploiement d'un template ARM

Création d’un groupe de ressources

Nous allons maintenant passé à l’exécution de la commande permettant de créer le groupe de ressources,

Pour cela entrez la commande suivante : New-AzureRmResourceGroup -Name $resourceGroupName -Location $localisation -Verbose -Force

Vous devriez avoir le résultat suivant au niveau de la sortie :

blog ai3 Deploiement-ARM-avec-PowerShell-Step5 Guide de déploiement d'un template ARM

Création du container Key Vault

Notre groupe de ressources étant créer nous allons passer à la création d’un container KeyVault. Pour faire court un container KeyVault permet d’héberger des données sensibles (tel un mot de passe d’instance SQL) de manière sécurisé, et nous allons utilisé ce container afin de gérer le mot de passe de notre instance SQL afin de ne pas l’avoir dans notre fichier template.

Afin de créer votre container KeyVault, veuillez sélectionné la commande suivante : New-AzureRmKeyVault -VaultName $keyVaultName -ResourceGroupName $resourceGroupName -Location $localisation -EnabledForDeployment et cliquez sur le bouton « Exécuter la sélection ».

Si tous se passe correctement vous devriez avoir une sortie à l’image de la copie d’écran ci-dessous :

blog ai3 Deploiement-ARM-avec-PowerShell-Step6 Guide de déploiement d'un template ARM

Gestion des droits sur le container Key Vault

Par contre si vous avez un résultat ressemblant à celui de l’image ci-dessous au niveau du résultat de l’exécution de la commande, vous allez devoir lancer une autre commande afin de mettre en place des droits sur le container que nous venons de créer.

blog ai3 Deploiement-ARM-avec-PowerShell-Step7 Guide de déploiement d'un template ARM

Dans le cas ou vous devez ajouter des droits sur le container Azure Vault, veuillez entrer la commande suivante :

Set-AzureRmKeyVaultAccessPolicy -VaultName $keyVaultName -UserPrincipalName ‘votreadressemail@hotmail.com’ -PermissionsToKeys create,import,delete,list -PermissionsToSecrets set,delete

Ajout de la chaine de connexion dans le container Key Vault

Notre container étant maintenant opérationnel, nous allons sauvegardé notre mot de passe à l’intérieur de celui-ci.

Pour cela exécuter la ligne suivante pour pouvoir convertir la chaine de caractères contenant notre mot de passe en type secureString :

$sqlAdminPassword = ConvertTo-SecureString -String $serverPassword -AsPlainText -Force

Lancer ensuite la commande suivante afin de sauvegarder le mot de passe au niveau de votre container :

Set-AzureKeyVaultSecret -VaultName $keyVaultName -Name $keyVaultSqlAdminPasswordSecretName -SecretValue $sqlAdminPassword

Vous devriez avoir un résultat semblable à ce que vous pouvez voir dans l’image ci-dessous :

blog ai3 Deploiement-ARM-avec-PowerShell-Step8 Guide de déploiement d'un template ARM

Nous allons maintenant remplacer les informations de paramètres concernant le container Key Vault au niveau du fichier template de paramètres.

Afin d’effectuer cette opération, veuillez entrer la commande suivante pour récupérer les informations concernant le container Key Vault : Get-AzureRmKeyVault -VaultName $keyVaultName

Au niveau de la sortie copier la valeur de la propriété Resource ID.

blog ai3 Deploiement-ARM-avec-PowerShell-Step9 Guide de déploiement d'un template ARM

Copier cette valeur au niveau du fichier de paramètre au niveau de la valeur du paramètre demodeploiementAdminLoginPassword.

blog ai3 Deploiement-ARM-avec-PowerShell-Step10 Guide de déploiement d'un template ARM

Exécution du déploiement

Nous allons maintenant pouvoir exécuter la partie du script concernant le déploiement. Pour se faire sélectionner la ligne correspondante :

New-AzureRmResourceGroupDeployment -Name $deploymentName -ResourceGroupName $resourceGroupName -TemplateFile $templateFilePath -TemplateParameterFile $templateParametersFilePath -Verbose -Force

Et cliquez sur le bouton « Exécuter la sélection ».

blog ai3 Deploiement-ARM-avec-PowerShell-Step11 Guide de déploiement d'un template ARM

Au niveau de la sortie d’exécution de la commande vous devriez avoir quelque chose ressemblant à l’image ci-dessous :blog ai3 Deploiement-ARM-avec-PowerShell-Step12 Guide de déploiement d'un template ARM

Vous pouvez voir au niveau du portail que vos ressources on bien été créées.

blog ai3 Deploiement-ARM-avec-PowerShell-Step13 Guide de déploiement d'un template ARM

Voilà cette dernière étape marque la fin de cet article concernant le déploiement de template ARM.

Rendez-vous bientôt pour un nouvel article.

David Moïsa

 

Découverte de Azure Resource Manager

Introduction

Aujourd’hui je vous proposes une présentation de Azure Resource Manager qui pour faire simple est le nouveau modèle de gestion des ressources au niveau de Microsoft Azure.

Au cours de cette présentation nous verrons dans un premier temps la problématique à laquelle permet de répondre Azure Resource Manager ainsi qu’une présentation des différents composants et concept relatif à Azure Resource Manager. Dans une seconde partie nous verrons comment au travers de l’utilisation de templates, déployer des ressources Azure en utilisant l’architecture ARM (Azure Resource Manager). Mais ne perdons plus de temps et entrons dans le vif du sujet.

Ancien mode de gestion des ressources

Quand on arrive sur le portail après quelque temps d’utilisation de Microsoft Azure, et l’instanciation plusieurs services, la première chose qui vous vient à l’idée c’est : « C’est le bordel ». En effet pour peu que vous ayez quelques projets, pour lesquels vous devez faire de l’administration, vous perdez énormément de temps dans la recherche des composants. Vous pouvez vous faire une idée en regardant l’image ci-dessous montrant la liste des instances de services de votre abonnement Azure telle qu’elle est présentée au niveau du portail actuel.

blog ai3 Resource-Manager-Presentation-1 Découverte de Azure Resource Manager

La deuxième chose qui est dommageable est la gestion des autorisations. En effet, imaginez que vous hébergez plusieurs projets au niveau de votre abonnement avec pour chacun d’eux une équipe projet différente, avec cette version du portail il vous ait impossible de pouvoir gérer les accès de façon granulaire afin de limiter les accès aux différents éléments de votre abonnement. En gros quand vous avez accès à la console d’administration Azure vous avez le droit de faire tout ce que vous voulez.

Un autre point important concerne l’estimation des coûts de vos projets sur Azure. En effet avec la version courante du portail, il n’y a aucun point d’entrée permettant d’avoir une vision sur les coûts estimés d’une solution déployée.

Un dernier point concerne le déploiement de ressources qui n’offrait aucune facilité et limitait la mise en place de processus d’automatisation des déploiements.

Azure ressource Manager

Afin de pouvoir pallier aux différents problèmes exposés précédemment, Microsoft a décider de modifier profondément l’architecture de gestion des ressources au niveau de Azure connue sous le nom de Azure Resource Manager.

Azure Ressource Manager permet de regrouper des ressources au sein d’un groupe logique connu sous le nom de groupe de ressources (Ressources Group). Chaque ressource (instance de services) que vous allez créer au niveau d’Azure devra appartenir à un groupe de ressource, et ce groupe de ressources sera unique pour celle-ci.

Concernant la gestion des accès aux ressources, l’architecture basée sur Resource Manager permet de gérer les éléments de manière beaucoup plus granulaire. Il vous ait maintenant possible de limité l’accès d’un utilisateur à un ou des groupes de ressources ou encore à un ou plusieurs ressources. Si vous désirez plus d’informations concernant la gestion des accès aux ressources vous pouvez allez voir l’article que j’ai rédigé à ce sujet ici.

Pour régler le problème lié à l’estimation des coûts, groupe vous avez, via le panneau dédié à votre groupe de ressources, directement accès aux informations concernant le coût estimé de chacune des ressources faisant partie du groupe que vous avez sélectionné. Vous pouvez voir un exemple, de cette fonctionnalité, au travers de l’image ci-dessous.

blog ai3 Resource-Manager-Presentation-2 Découverte de Azure Resource Manager

Cette nouvelle organisation permet aussi de définir des dépendances entre des ressources permettant de définir un ordre lors du déploiement d’une instance de service au niveau de Azure. Par exemple une instance de machine virtuelle aura besoin au préalable de la définition d’un compte de stockage, pour les disques virtuels, ainsi qu’un réseau virtuel.

Azure Ressource Manager permet aussi de mettre en place des déploiements de façon répétés. Pour le mise en place des déploiements, Azure Ressource Manager s’appuie sur la définition de template, permettant de définir la configuration des différents éléments devant être déployés au niveau d’Azure.

Enfin Azure Ressource Manager se base sur le système de Role Based Access Control (RBAC) afin de gérer de manière affinée les accès aux différentes ressources. Pour plus d’informations concernant RBAC, vous pouvez lire l’article se trouvant ici.

Après cette rapide introduction, je vous proposes de voir un peu comment s’architecture Azure Ressource Manager.

Architecture Azure Resource Manager

Toutes les interactions avec Azure Resource Manager, que se soit avec Visual Studio, le portail Azure, ou PowerShell, se fait via des appels à l’API Web exposée par ARM. Chaque service Azure, utilisable avec ARM, propose un provider qui expose un point d’entrée REST permettant d’interagir avec lui. Parmi ces provider en trouve (liste non exhaustive) : Web App, Search, My SQL, SQL DB …. Chaque provider va exposer un ensemble d’opérations permettant d’interagir avec les ressources qu’il expose.

Ce modèle peut aussi être utilisé ce modèle afin de proposer la même expérience via l’utilisation du Marketplace Azure.

Afin de pouvoir être utilisé par ARM, les composants Azure exposent un provider connu sous le nom de Azure Ressource Provider permettant de déployer une ressource via ARM.

Au moment de l’écriture de cet article tous les composant Azure ne bénéficie par encore de ce provider, comme par exemple Azure AD, ce qui explique le fait de l’existence des deux portails Azure.

Il est aussi a noté que tous les Resource Provider ne sont pas disponible dans tous les DataCenters Azure, c’est la cas par exemple du service Azure KeyVault.

blog ai3 Architecture-Azure-Resource-Manager Découverte de Azure Resource Manager

Après cette rapide revue de l’architecture de Azure Resource Manager, je vous propose de nous lancer dans l’étude de la structure des templates ARM. Pour rappel, ces templates permettent la mise en place de déploiements automatique au niveau de la plateforme Azure. Cette partie n’est pas la plus intéressante, mais elle est obligatoire pour avoir une bonne compréhension du reste de l’article.

Structure d’un template Azure Resource Manager

La définition d’un modèle ARM est établie via l’utilisation d’un fichier au format JSON. Afin de pouvoir être consommée par le moteur Azure Resource Manger, ce fichier se doit de respecter un certain formalisme dont les règles sont établies via la définition d’un schéma. Vous pouvez voir dans l’image ci-dessous un exemple de template ARM vide.

blog ai3 Azure-Resource-Manager-Template Découverte de Azure Resource Manager

La première chose définissant un template est son schéma de déploiement, qui se trouve au début du fichier, et qui permet au moteur ARM de savoir comment valider la structure du fichier.

Le champ contentVersion permet de définir la version du fichier de configuration. Celui-ci peut être utilisé par exemple lors d’un projet afin de suivre l’évolution des numéro de version de votre application et faire ainsi suivre la version de votre template avec la version de votre application.

Définition de paramètres et de variables

Le champs parameters permet de définir les paramètres qui seront utilisés lors du déploiement de votre solution. Cela permettra par exemple de définir le nom de votre application Web dans le cadre du déploiement d’un application Web.

blog ai3 Azure-Resource-Manager-Template1 Découverte de Azure Resource Manager

Un paramètre est composé des éléments suivants :

  • Un nom
  • Un type qui permettra de typer le paramètre.
  • Une valeur par défaut (defaultValue) qui vous permettra de définir une valeur par défaut à votre paramètre.
  • allowedValues est utilisé sur certains paramètres qui n’acceptent qu’un certain nombre de valeur. Ce champs permet de donner les différentes valeurs acceptées par le paramètre. Avec ce type de paramètre, si vous passez une valeur inattendue, une exception sera levée par le moteur ARM lors du déploiement.
  • metadata
    • Contient un champs description permettant de donner une description du paramètre.

Afin de pouvoir passer des valeurs à ces différents paramètres, on peut associer à notre fichier template, un autre fichier, lui aussi au format JSON, qui contiendra les valeurs des différents paramètres.

Structure du fichier de paramètres.

La première ligne définissant le schéma permettant de valider le contenu du fichier.

La définition des différents paramètres avec pour chaque paramètre, le nom de celui-ci, et ensuite la valeur affectée à ce paramètre. Vous pouvez voir un exemple de fichier paramètre avec l’image ci-dessous.

NB : Si au niveau de votre fichier template, vous avez des paramètres de type secureString, vous ne pourrez pas utiliser le fichier de paramètres pour affecter des valeurs à ceux-ci.

blog ai3 Azure-Resource-Manager-Template2 Découverte de Azure Resource Manager

Le champs variables (partie non obligatoire) permet comme son nom l’indique de définir des variables que vous pourrez utilisées dans votre template.

Définition de ressources

Le champs resources contiendra la définition des différentes ressources que vous allez déployer via votre template.

Chacune des ressources contenues dans le fichier template sera composée des éléments suivants :

  • Un nom
  • Un type
  • Définition du numéro de version de l’API utilisée pour créer la ressource
  • La localisation où sera installée la ressource
  • Les dépendances de la ressource si il y en a
  • Un ensemble de propriétés spécifique au type de ressource que vous installée.

blog ai3 Azure-Resource-Manager-Template3 Découverte de Azure Resource Manager

Enfin le champs Outputs vous permettra de définir des valeurs de sortie qui seront utilisés pour vous donnez des informations lors de vos déploiements.

Si vous désirez plus d’informations concernant la structure des fichiers template vous pouvez vous rendre à l’adresse suivante : https://github.com/Azure/azure-resource-manager-schemas, cette adresse vous sera utile lors de vos début pour avoir les informations utiles sur les différentes possibilités lors de la définition de vos templates.

Voilà la partie concernant la structuration d’un template est maintenant terminée, nous allons de ce pas passer à la pratique et voir comment créer un template à l’aide de Visual Studio.

Création d’un template Azure Resource Manager avec Visual Studio

Ouvrez Visual studio et créez une nouvelle solution vide. Ensuite ajoutez un nouveau projet de type « Azure Resource Group » au niveau de votre solution.

blog ai3 Creation-template-ARM-avec-VS-Step1 Découverte de Azure Resource Manager

Une nouvelle fenêtre s’ouvre vous permettant de sélectionner le type de template qui vous servira de base. Choisissez le type de template vide et cliquez sur OK.

blog ai3 Creation-template-ARM-avec-VS-Step2 Découverte de Azure Resource Manager

Dans le cadre de cet article nous partirons sur un template vide, auquel nous allons ajouter des ressources afin de déployer un serveur de base de données, et une base de données de tests. Si vous explorer le projet venant d’être créé, vous pourrez constater que celui-ci contient les éléments suivants :

  • Un premier fichier JSON qui contiendra la définition de votre déploiement avec les différents composants associés à celui-ci.
  • Un deuxième fichier JSON contenant les paramètres qui seront utilisés pour le déploiement, et qui contiendra la définition des différents paramètres devant être définis pour la mise en place des différents composants.
  • Vous aurez enfin, un script Power Shell qui vous permettra de déployer votre solution. Ce script prend en paramètres les deux fichiers JSON énumérés précédemment afin d’effectuer le déploiement.

blog ai3 Creation-template-ARM-avec-VS-Step3 Découverte de Azure Resource Manager

Nous allons maintenant ajouter notre première ressource dans notre template. Pour ce faire, ouvrez le fichier JSON contenant le template vide et faites un clic droit sur le nœud resources du panneau de gauche, venant de s’ouvrir, et sélectionnez l’option Add New Resource.

blog ai3 Creation-template-ARM-avec-VS-Step4 Découverte de Azure Resource Manager

Creation d’une instance SQL Server

Au niveau de la nouvelle fenêtre, sélectionner le type de ressource SQL Server et donner lui un nom. Cliquez ensuite sur le bouton « Add » pour valider votre choix.

blog ai3 Creation-template-ARM-avec-VS-Step5 Découverte de Azure Resource Manager

Visual Studio va alors générer le contenu adéquate concernant notre instance de serveur SQL Server. Comme vous pouvez le voir, dans l’image ci-dessous, le nom de l’instance est basée sur le contenue d’une variable qui effectue une concaténation. Dans le but d’avoir la main sur le nom de l’instance, et de pouvoir utilisé ce template pour de multiple déploiement, nous allons modifier ceci en ajoutant un paramètre au template. Celui-ci sera utilisé pour renseigner le nom de notre instance de serveur.  Pour se faire, ajouter un nouveau paramètre au niveau du fichier template, et modifiez la propriété name de la ressource afin que celui-ci pointe vers notre nouveau paramètre.

blog ai3 Creation-template-ARM-avec-VS-Step6 Découverte de Azure Resource Manager

Après modification, votre template devrait ressembler à l’exemple que vous pouvez voir dans l’image ci-dessous.

blog ai3 Creation-template-ARM-avec-VS-Step7 Découverte de Azure Resource Manager

Creation d’une instance SQL Database

Ceci étant fait, nous allons maintenant un nouvelle instance de base de données à notre serveur. Pour se faire effectuer la même opération que lors de l’ajout de la précédente ressource, et sélectionnez le type de ressource SQL Database. Comme vous pouvez le constater, Visual Studio détecte le fait qu’une instance de server SQL existe au niveau de votre template et vous propose par défaut de baser l’installation de cette ressource dessus. Cliquez sur le bouton « Add » pour valider la création de cette base de données.

blog ai3 Creation-template-ARM-avec-VS-Step8 Découverte de Azure Resource Manager

Vous pouvez voir si vous regarder l’arborescence des ressources, sur le panneau de gauche, que la base de données a été automatiquement déclarée comme ressource dépendante de notre ressource de type instance SQL Server. Ceci permet au moteur ARM de savoir qu’il doit dans un premier temps déployer la ressource de type SQL Server avant de déployer la ressource de type base de donnée associée à ce serveur.

blog ai3 Creation-template-ARM-avec-VS-Step9 Découverte de Azure Resource Manager

Notre template est maintenant prêt, et nous allons donc pouvoir passer au déploiement de celui-ci. Cette dernière étape marque la fin de cet article. Nous verrons dans un prochain article comment déployer ce template en utilisant différentes façon.

Dernière chose, vous pourrez trouvez la solution Visual Studio ici.

 

David Moïsa.

 

Introduction a Microsoft Azure Profiler

Au menu du jour, une présentation de Azure Profiler qui est un nouveau service proposé par Microsoft, en mode preview, permettant de mettre en place une solution de profilage de vos applications Web. Ce service permet de faire des analyses poussées d’une application, et d’explorer les métriques remontés afin de trouver les causes de problèmes que peuvent rencontrés vos applications. Pour faire un parallèle avec un produit du marché, Azure Profiler propose des fonctionnalités proche de ANTS performance Profiler.

Pour fonctionner, cette solution s’articule autour de trois éléments principaux :

  • Un agent permettant de collecter les données de votre application.
  • Un compte de stockage Azure utilisé pour stocker les informations récoltées par l’agent Profiler.
  • Une application Web qui vous permettra d’accéder aux informations récoltées par l’agent.

Pour pouvoir créer une nouvelle instance de ce service, il vous faudra vous rendre à l’adresse suivante: https://www.azureserviceprofiler.com/ . Vous devrez ensuite vous connectez avec un compte possédant un abonnement Azure et pouvant manipuler des comptes de stockage.

Une fois connecté vous arriverez sur l’écran d’accueil du service.

blog ai3 Azure-Profiler-Portal Introduction a Microsoft Azure Profiler

A partir de cet écran vous pourrez soit créer un nouveau Data Cube, soit utilisez un wizard de création d’une nouvelle instance de profiler, en cliquant sur le lien « Get started » se trouvant sur la page d’accueil du portail. C’est cette seconde option que nous allons voir dans la suite de cet article pour mettre en place notre première instance de service Azure Profiler.

Le premier niveau de configuration concerne le choix de l’abonnement sur lequel vous désirez travailler. Au cours de mes tests je n’ai pas pu changer l’abonnement sur lequel je voulais déployer un agent. L’application me remonte tout le temps le premier de mes abonnements.

blog ai3 Azure-Profiler-Create-Data-Cube-Step1 Introduction a Microsoft Azure Profiler

Vous devez ensuite choisir l’application sur laquelle vous désirez mettre en place votre agent. Si votre application est en mode PAAS, il  faudra au minimum que votre application se trouve dans un App Service de type B1, et quel’option Always On soit activée. Vous pouvez apporter ces modifications, si nécessaire, directement depuis le portail de configuration de votre Cube, ou alors effectuer celles-ci à partir le portail Azure, et revenir ensuite finir la mise en place de votre agent. Tant que ces prérequis ne sont pas remplis vous ne pouvez pas aller plus loin au niveau de la configuration.

blog ai3 Azure-Profiler-Create-Data-Cube-Step2 Introduction a Microsoft Azure Profiler

Dès que tous les prérequis sont respectés, vous pouvez alors sélectionner votre application Web.

blog ai3 Azure-Profiler-Create-Data-Cube-Step3 Introduction a Microsoft Azure Profiler

L’étape de sélection de l’application étant effectuée, l’étape suivante consiste à choisir soit de vous appuyez sur un cube existant, soit de créer un nouveau cube. Si vous décidez de créer un nouveau cube, il vous faudra alors sélectionné un compte de stockage de votre abonnement Azure pour héberger les données en provenance de l’agence. Il est important de noté qu’un compte de stockage ne peut être lié qu’à une seule instance de cube. Si vous décidez de créer un nouveau cube, et d’utiliser un compte de stockage déjà lié à un cube, toutes les données seront écrasées par votre nouvelle instance de cube.

blog ai3 Azure-Profiler-Create-Data-Cube-Step4 Introduction a Microsoft Azure Profiler

Votre cube est maintenant créé. Il ne reste plus qu’à déployer le nécessaire au niveau de l’application Web afin de pouvoir la monitorer et c’est ce que nous allons voir lors de l’étape suivante.

blog ai3 Azure-Profiler-Create-Data-Cube-Step5 Introduction a Microsoft Azure Profiler

Comme vous pouvez le voir au niveau de la copie d’écran ci-dessous, un certain nombre d’opérations vont être effectuées afin de pouvoir déployer le nécessaire à la mise en place de l’agent de monitoring au niveau de votre application. durant cette opération les opérations suivantes vont être réalisées :

  • Une extension permettant à Azure Profiler de fonctionner va être publier au niveau de votre application web.
  • Une chaine de connexion va être rajouter aux settings de votre application web, afin que l’agent puisse sauvegarder les informations concernant votre application.
  • Une instance de Web Job va être ajoutée. Ce Web Job hébergera l’agent.

Afin de lancer le déploiement de votre service profiler, veuillez cliquer sur le bouton « Deploy ».

blog ai3 Azure-Profiler-Create-Data-Cube-Step6 Introduction a Microsoft Azure Profiler

Vous allez alors arriver sur une page vous informant sur l’avancée de l’installation et de la configuration des différents éléments. la dernière opération consistant à l’instanciation d’un service de type Web Job prenant un certain temps, vous pouvez aller boire un petit café et revenir. Il arrive dès fois que l’information concernant l’avancée de l’installation du Web Job soit erronée (statut reste toujours à en cours), dans ce cas là rafraichissez l’écran.

blog ai3 Azure-Profiler-Create-Data-Cube-Step7 Introduction a Microsoft Azure Profiler

 

Une fois toutes les opérations terminées vous pourrez revenir à la page de gestion des Data Cubes afin d’accéder au cube que vous venez de créer. Vous pourrez voir que votre cube a été correctement créé, que l’agent est en cours d’exécution et que la collecte des données relatives à votre application est effective.

blog ai3 Azure-Profiler-Create-Data-Cube-Step8 Introduction a Microsoft Azure Profiler

Afin de vérifier la bonne installation du Web Job, vous pouvez vous connecter au portail Azure, et ouvrir le groupe de ressources concernant votre application Web. En allant dans le détails de celle-ci vous pourrez voir qu’une instance de Web Job a été ajoutée.

blog ai3 Azure-Profiler-Create-Data-Cube-Step9 Introduction a Microsoft Azure Profiler

Votre profiler est maintenant opérationnel, vous allez maintenant pouvoir analyser votre application, et pouvoir trouver les potentiels problèmes pouvant exister au niveau de celle-ci. Pour se faire connectez vous au portail Azure Profiler à l’adresse suivante : https://www.azureserviceprofiler.com/. Au niveau de la page d’accueil cliquez sur le cube afin d’aller sur l’écran de détails. Vous pouvez maintenant explorer votre application, et accéder aux informations récoltés par votre agent.

blog ai3 Azure-Profiler-App Introduction a Microsoft Azure Profiler

Vous pouvez ensuite aller sur le détails de chacune de vos requête, et voir les portions de code qui consomme le plus de ressources en cliquant sur le lien « show hotpath ».

blog ai3 Azure-Profiler-App1 Introduction a Microsoft Azure Profiler

 

Voilà cette introduction à Azure Profiler touche à sa fin. N’hésitez surtout pas à faire des tests par vous même et à approfondir les possibilités de ce service. Celui-ci étant encore en preview il est sur que des ajouts de fonctionnalités seront effectuées pour enrichir encore plus le produit.

David Moïsa.

 

Introduction à Azure Security Center

Introduction

Azure Security Center est un service récent proposé par la plateforme Azure, et oui encore un, permettant d’avoir une vue, quasi temps réel, des menaces potentiels qui pèsent sur les services hébergés au niveau de votre abonnement et qui propose des solutions afin de pouvoir pallier à celles-ci. Azure Security Center permet aux équipes en charge de gérer l’infrastructure Azure au sein d’une organisation, d’avoir une vue globale de l’état de santé, en terme de sécurité, des différents services, des problèmes de sécurité pouvant exister sur chacun des composants, et des solutions permettant de résoudre  ces problèmes. En plus de cela, Azure Security Center vous permet de prendre connaissances des comportements suspects au niveau de votre infrastructure, et donc de potentielles attaques, avec une remontée d’informations basée sur l’analyse des logs de vos différents composants.

Pour cela Azure Security Center propose principalement deux choses :

  • Un service consacré à la prévention, et qui va vous remontez tous les problèmes de configuration, en terme de sécurité, des différents éléments instanciés au niveau de votre abonnement. Cela va des problèmes potentiels détectés au niveau de vos machines virtuelles, en passant par vos réseaux virtuels, vos instances de base de données SQL Azure, vos applications …. Pour chacun des problèmes remontés, des solutions vous seront proposés afin de pouvoir remédier à ceux-ci. Cette analyse de vos différents composant est effectuée par des algorithmes complexes basés, pour une partie, sur les meilleurs pratiques en terme de sécurité.
  • Un autre service consacré à l’analyse des menaces, basé en partie sur les algorithmes d’intelligence artificielle de Microsoft (Microsoft Global Threat Intelligence), permet d’avoir une vue sur les différentes attaques auxquelles ont été exposés vos composant. Afin de pouvoir mettre en place une analyse précise les algorithmes de détection vont se baser sur les logs issues de vos machines virtuelles, du réseau Azure, et des solutions tierce (partenaire Azure) que vous auriez installées dans votre environnement. Ce service est au fur et à mesure enrichit de nouveaux patterns de types d’attaque, permettant d’avoir ainsi un service efficace en terme de détections.

Après cette petite introduction, je vous propose de voir un peu comment cela se présente au niveau du portail Azure.

Si vous n’avez jamais utilisé Security Center et que vous désirez vous lancer, au niveau du portail Azure, cliquez sur Parcourir, et au niveau de la liste cherchez « Centre de sécurité » ou « Security Center » si vous êtes en anglais.

blog ai3 Azure-Security-Center-Step1 Introduction à Azure Security Center

Lorsque vous lancez la première fois le service Security Center, vous arrivez au niveau d’un écran de bienvenue.

La page principale est composée de 2 parties principales :

  • Une partie consacrée à la prévention vous fournissant des informations sur les problèmes de configuration au niveau de votre infrastructure.
  • Une autre partie dédiée à la détection des menaces qui vous fournira des informations sur des menaces pesant sur les différents éléments de votre abonnement.

 

blog ai3 Azure-Security-Center-Step2 Introduction à Azure Security Center

Si vous cliquez sur le bouton stratégie, vous allez pouvoir configurer les stratégies pour chacun des groupes de ressources liés à votre abonnement. Par défaut ceux-ci héritent des règles fixées au niveau de l’abonnement.

blog ai3 Azure-Security-Center-Step3 Introduction à Azure Security Center

Si vous sélectionnez le nœud racine, qui correspond à votre abonnement, vous allez pouvoir définir la stratégie au niveau de votre abonnement. Cette configuration sera appliquée par défaut sur tous les groupes de ressources contenus au niveau de votre abonnement. Comme dis précédemment, il vous sera possible de casser cette notion d’héritage, en redéfinissant la stratégie au niveau des différents groupes de ressources que vous désireriez configurer différemment. Cela permet par exemple de mettre en place une stratégie de sécurité minimum pour un groupe de ressources dédié à un environnement de tests et pour lequel nous aurons moins de considération et une autre stratégie, plus avancée, pour un groupe de ressources dédié à un environnement de production.

Au niveau de la configuration, nous allons voir quels sont les différents paramètres que nous pourrons personnaliser au niveau de cette stratégie. Dans un premier temps il vous sera possible de choisir le compte de stockage dans lequel vous voudrez stocker toutes les données récoltées par Security Center. Il est a noté que le compte de stockage n’est configurable qu’au niveau de la définition de la stratégie au niveau abonnement.

blog ai3 Azure-Security-Center-Step4 Introduction à Azure Security Center

Vous pourrez ensuite choisir quels sont les éléments que vous désirez activer au niveau de la prévention. Ce paramétrage aurait une incidence sur les informations concernant les vulnérabilités remontées pour chacun des éléments analysés.

blog ai3 Azure-Security-Center-Step5 Introduction à Azure Security Center

Vous pourrez aussi configurer l’adresse mail qui sera utilisé pour envoyer les notifications générées par Security Center. Il vous sera aussi possible de renseigner un numéro de portable dans le but d’envoyer ces mêmes notifications par SMS. Enfin vous aurez la possibilité de  faire en sorte d’envoyer ces notifications mails au propriétaire de l’abonnement.

blog ai3 Azure-Security-Center-Step6 Introduction à Azure Security Center

La dernière partie concerne le niveau de tarification que vous désirez utiliser dans le cadre de l’utilisation de Security Center. En gros avec la version gratuite, vous avez accès à toute la partie relative à la prévention, et à une version basique des alertes de sécurité. Concernant la détection avancée, il vous faudra passer par la version standard de Azure Security Center. Pour plus d’informations concernant les différences sur les deux niveau de tarification, vous pouvez vous rendre ici.

NB : Les 15$ de la version standard sont à calculer pour chaque composant qui sera analysé (pour l’instant seul les VM sont prises en compte, mais les instances SQL et les instances de Cloud Service seront bientôt aussi pris en compte comme expliqué dans la documentation relative au prix).

Dans si vous avez un groupe de ressource avec 2 VMs, le coût sera de 30$.

blog ai3 Azure-Security-Center-Step7 Introduction à Azure Security Center

 

Après avoir vu  la configuration de la stratégie relative à la partie prévention, je vous proposes de voir quelles sont les informations remontées pour chaque type d’élément analysé par Azure Security Center.

Prévention avec Azure Security Center

Au niveau de la partie consacrée à la prévention, il faut savoir que tout les types de services proposés par Azure ne sont pas audités par le service Azure Security Center. Au moment de l’écriture de cet article les services suivants sont pris en compte par Azure Security Center :

  • Les instances de Machines Virtuelles.
  • Les réseaux Virtuels.
  • Les instances SQL Azure.
  • Les instances Cloud Service.

Les principaux points remontés concernant les réseaux virtuels, sont les suivants:

  • L’absence de définition d’un groupe de sécurité réseau associé à votre réseau virtuel. Pour rappel ce type de composant vous permet de mettre en place des règles de filtrages concernant les flux entrants et sortants.
  • La non présence d’un pare feux frontal à votre réseau virtuel. Si ce type d’erreur et remontée au niveau de votre infrastructure, il vous sera alors possible d’installer une application pré-configurée Azure basée sur la solution Check Point vSec.

blog ai3 Azure-Security-Center-Step8 Introduction à Azure Security Center

Après avoir vu les éléments concernant les réseaux virtuels, jetons un œil sur les information concernant les instances SQL.  Sur ce point, les principales vulnérabilités remontées concernent :

  • L’activation de l’audit au niveau de la base de données.
  • la gestion du chiffrage des données.

De mon point de vue, il est dommageable que le fait d’utiliser le compte créer lors de la création de la base de données, et ayant tous les droits sur celle-ci, ne soit pas remonter comme vulnérabilité au niveau des problèmes de paramétrage.

 

blog ai3 Azure-Security-Center-Step9 Introduction à Azure Security Center

L’analyse concernant les machines virtuelles et la plus riche et c’est elle qui offre le plus vaste éventail d’informations concernant les vulnérabilités. Parmi celles-ci, vous pourrez trouver les éléments suivants :

  • L’absence d’un antimalware sur votre machine.
  • Une version d’OS plus supportée et nécessitant une montée de version.
  • Des mise à jours manquantes.
  • La non configuration du cryptage des disques de votre machine virtuelle.

blog ai3 Azure-Security-Center-Step10 Introduction à Azure Security Center

 

La partie applicative concerne les machines virtuelles de votre abonnement pour lesquelles les ports 80 ou 443 sont ouverts vers l’extérieur. Concernant ces applications, les seules alertes que j’ai pu voir remontées durant mes tests concerne l’absence d’un pare feux applicatif, comme vous pouvez le voir au niveau de l’image ci-dessous.

blog ai3 Azure-Security-Center-Step11 Introduction à Azure Security Center

 

Pour certains des points remontés au niveau de la console, vous pourrez avoir en plus des informations concernant la vulnérabilité rencontrée, l’opportunité de pouvoir installer une solution intégrée Azure, proposée par un partenaire, afin de pallier au problème. Vous pouvez voir par exemple à l’image ci-dessous, que pour un problème relatif à la non présence d’un pare feux applicatif, il vous ait proposé de pouvoir installé un des produits proposé sous forme de solution intégrée Azure.

Bien sur rien ne vous oblige à passer par l’une de ses propositions. Pour l’exemple exposé précédemment, vous pouvez passer par l’installation d’une  VM Linux avec une instance Apache contenant le module mod_security. Attention cependant de bien prendre en compte le fait qu’en installant une solution ne faisant pas partie d’une solution intégrée Azure, les logs en provenance de votre solution ne seront pas prise en compte pas les services d’analyse. De ce fait tout trafic « anormal » remontant des logs de votre composant ne seront pas analysé, et il sera de votre responsabilité de mettre en place une solution permettant l’analyse de ces logs.

blog ai3 Azure-Security-Center-Step12 Introduction à Azure Security Center

 

Analyse des menaces

Comme je l’ai dit lors de l’introduction le service Azure Security Center en plus de son service de prévention propose un service d’analyse des menaces qui est je pense la partie apportant le plus de plus valu, en permettant une analyse poussée et une remontée d’informations pertinentes concernant toute activité suspecte au niveau de votre infrastructure. Afin de mener à bien cette analyse, le service Azure Security Center s’appuie sur 3 principaux axes qui sont les suivants :

  • Une recherche de comportement anormal basé sur les informations des bases de données de sécurité Microsoft et externes permettant par exemple de détecter un trafic sortant depuis l’une de vos VM, vers une machine (IP) connue pour faire partie d’un botnet où du darkweb, annonçant ainsi la compromission de votre VM.
  • Une analyse comportemental basée sur des algorithmes complexes et des études menées par des experts permettant via l’analyse de vos logs de pouvoir déterminer un comportement suspect. Parmi les problèmes pouvant être remontés on peut avoir, l’exécution de script Power Shell par un attaquant, la détection de l’exécution de processus de façon anormal, ou encore un trafic anormalement élevé depuis vos VMs .
  • Une dernière partie concerne la remontée des anomalies. Pour se faire des algorithmes de machine learning analyse l’activité au niveau des différents composants de votre abonnement, et à partir de cette base remonte toute activité inhabituelle sortant de la normale.

C’est à partir de ces trois principaux axes que la gestion des menaces est effectuées. Hélas, Au vu de la complexité de mise en œuvre de menaces fictives me permettant de pouvoir agrémenter mon article, il m’est dans l’impossibilité d’entrer plus dans les détails de l’aspect analyse des menaces. Cependant, si vous désirez approfondir cette partie, je vous conseille cette liste  d’articles :

Je vous conseille enfin un dernier article sur la façon d’utiliser Azure Security Center afin de sécuriser votre infrastructure Cloud : https://azure.microsoft.com/en-us/documentation/articles/security-center-planning-and-operations-guide/

Voilà cette petite introduction de Azure Security Center touche à sa fin. Pour ceux désirant approfondir le sujet,  je vous recommandes vivement de jeter un œil aux différents liens référencés précédemment qui vous permettront de vous faire une idée plus précise des capacités du produit et des possibilités de mise en oeuvre.

 

David Moïsa.