Sécurité

Vérifier la sécurité de votre VM avec Microsoft Azure Attestation

Introduction

Microsoft Azure Attestation est un service unifié de certification pour les clients de Microsoft Azure. Il permet de valider l’état de sécurité d’un appareil ou d’une application, ce qui peut être utilisé pour renforcer la sécurité des charges de travail cl oud – en particulier pour les charges de calcul qui s’appuient sur la technologie Azure Confidential Computing. 🛡️

Principe de fonctionnement d’une VM Azure Confidential Computing dans le Cloud de Microsoft et de son enclave sécurisée « TEE »

Comme je vous en ai déjà parlé dans mon précédent article : avec Azure Confidential Computing il est possible de créer des machines virtuelles et des containers dont la confidentialité est garantie par des éléments de sécurité présent sur des puces AMD, Intel ou encore Nvidia sur les serveurs physiques qui hébergent ces ressources.

Evidemment pour que ça fonctionne, il faut que ces éléments de sécurité ne reposent pas (uniquement) sur la confiance envers votre hébergeur cloud (Azure dans le cas présent) mais il faut également que cette sécurité puisse être vérifiée. Et cela, les acteurs du Cloud l’ont bien compris.

Pour ce faire, les constructeurs comme NVidia, Intel ou encore AMD proposent généralement un kit qui permet de récupérer des informations sur les VM sécurisées afin de s’assurer que le contenu de la RAM ou le CPU n’ont pas été altérés et donc que la partie logicielle qui fonctionne sur la VM ou le container s’exécute en parfaite sécurité.

Mécanisme d’attestation pour une VM Azure Confidential Computing

Evidemment, ce contrôle peut être effectué manuellement mais l’objectif est plutôt de le « coder » afin que l’application ou la charge de calcul qui s’exécute puisse vérifier à tout moment qu’elle s’exécute dans une enclave sécurisée (ou TEE – Trusted Execution Environment).

L’objectif est de pouvoir récupérer certaines métadonnées qui vont venir confirmer / attester de l’état de sécurité de notre VM ou container. La méthodologie diffère évidemment selon que votre VM fonctionne utilise un processeur sécurisé Intel, AMD ou autre.

Projet « VirTEE » qui permet d’attester la confidentialité d’une VM

Mais Microsoft a également prévu de proposer son propre service qui s’appelle Azure Attestation. Plus d’infos en suivant les 2 liens ci-dessous : Microsoft Azure Attestation (FR) ou https://learn.microsoft.com/en-us/azure/attestation/overview. Pour l’instant, vous ne verrez rien de « graphique » puisque Microsoft semble encore travailler à l’intégration de ce composant au portail Azure (en tout cas au moment où je rédige cet article).

Je vous propose de tester ce service dans les étapes ci-dessous avec une VM Linux. 🛡️

(Ads)

Présentation du service Microsoft Azure Attestation

Logique de fonctionnement de Microsoft Azure Attestation

Le service Azure Attestation fonctionne en utilisant un cadre de confiance (trust framework) qui définit les politiques et les procédures utilisées pour valider l’état de sécurité d’un appareil ou d’une application. Le cadre de confiance peut être défini par l’utilisateur ou utiliser des politiques par défaut prédéfinies par Microsoft.

Pour valider l’état de sécurité d’un appareil ou d’une application, Azure Attestation utilise une combinaison de méthodes, notamment :

  • L’authentification du matériel (hardware authentication) : cette méthode utilise des informations spécifiques au matériel, telles que le numéro de série ou la configuration du BIOS, pour identifier un appareil.
  • L’authentification du logiciel (software authentication) : cette méthode utilise des informations spécifiques au logiciel, telles que la version du système d’exploitation ou la présence de logiciels malveillants, pour identifier un appareil.
  • L’évaluation des politiques : cette méthode utilise les politiques définies dans le cadre de confiance pour évaluer l’état de sécurité d’un appareil ou d’une application.

Ce type de service permet de contrôler la sécurité et la conformité d’une charge de calcul dans Azure (VM, container) dans différents cas d’usage et notamment : protection des charges de travail sensibles (données personnelles, secrets commerciaux / industrieux, – et tous les usages où vous utiliseriez Azure Confidential Computing.

(Ads)

Exemple d’utilisation sur une VM Ubuntu

Fonctionnement d’une VM/container Confidential Computing dans Azure avec l’espace TEE

Je vous propose de tester le service Azure Attestation sur une machine Linux que nous allons déployer avec un gabarit Azure Confidential Computing.

# Resource Group creation
az group create --name "Confidential-VM" --location northeurope

# VM creation Confidential Computing
az vm create --resource-group "Confidential-VM" --name "VM-ACC" `
--generate-ssh-keys --size Standard_DC4as_v5  --admin-username thibault --admin-password "testpassword" `
--enable-vtpm true --image "Canonical:0001-com-ubuntu-confidential-vm-focal:20_04-lts-cvm:latest" `
--public-ip-sku Standard   --security-type ConfidentialVM `
--os-disk-security-encryption-type VMGuestStateOnly `
--enable-secure-boot true

Avec ces premières commandes, je créée un nouveau Resource Group et une VM Confidential Computing Ubuntu. N’oubliez pas de modifier le login et le mot de passe que vous souhaitez utiliser. Vous pouvez également adapter la taille – dans mon cas, j’ai choisi une DC4as_v5 (4 vCPU / 16 Go de RAM). Après quelques instants, vous devriez avoir les objets ci-dessous.

Une VM de type confidentielle sous Ubuntu a été créée avec l’ensemble des éléments pour la gérer. Pour vous y connecter, récupérez l’adresse IP publique.
Dans les options de Security Type, vous pouvez voir qu’il s’agit bien d’une VM de type confidentielle et que les options Secure Boot, vTPM sont activées.

Pour pouvoir utiliser Microsoft Azure Attestation, connectez-vous sur la VM en SSH et commencez par installer les prérequis suivants.

sudo apt update && sudo apt-get --assume-yes install build-essential && sudo apt-get --assume-yes install libcurl4-openssl-dev && sudo apt-get --assume-yes install libjsoncpp-dev && sudo apt-get --assume-yes install libboost-all-dev && sudo apt --assume-yes install nlohmann-json3-dev && wget https://packages.microsoft.com/repos/azurecore/pool/main/a/azguestattestation1/azguestattestation1_1.0.2_amd64.deb && sudo dpkg -i azguestattestation1_1.0.2_amd64.deb

Vous devriez obtenir ceci :

Installation des prérequis pour Microsoft Azure Attestation sur une VM Linux (Ubuntu)

Maintenant, nous pouvons récupérer les sources de l’outil Microsoft Azure Attestation sur le repository GitHub officiel. Pour ce faire, utilisez la commande ci-dessous :

git clone https://github.com/Azure/confidential-computing-cvm-guest-attestation.git && cd confidential-computing-cvm-guest-attestation/cvm-attestation-sample-app && sudo apt --assume-yes install cmake && sudo apt --assume-yes install g++ && sudo cmake . && sudo make

C’est du C++ donc la commande permet de compiler également l’application.

Vous devriez obtenir le retour ci-dessous :

Installation de l’outil Microsoft Azure Attestation sur une VM Linux (Ubuntu)

Une fois que c’est bon, utilisez la commande suivante pour récupérer le token :

sudo ./AttestationClient -o token

Vous obtiendrez alors quelque-chose comme ça :

Récupération du token via Microsoft Azure Attestation

Si vous copiez-collez l’ensemble du token sur le site suivant : https://jwt.io/ vous pourrez alors le décoder pour mieux voir les informations qu’il contient :

Décodage du token Microsoft Azure Attestation (VM Ubuntu)

On récupère des informations classiques comme la version d’OS (dans mon cas une Ubuntu 20.04 ou encore le fait que le fait que mon attestation est associée à une VM de type SEV-SNP – donc on sait que c’est une VM confidentielle de type AMD.

Si je regarde un peu plus bas, j’ai d’autres éléments comme le fait que la VM dispose bien du Secure Boot activé, vTPM activée… et encore d’autres claims. Si vous souhaitez approfondir sur les éléments intégrés à ce token, je vous invite à consulter le site de Microsoft via ce lien (attention, c’est technique). 😉

Décodage du token Microsoft Azure Attestation (VM Ubuntu) – suite

Il ne vous reste plus qu’à automatiser ces éléments de contrôles au lancement de votre application.

Cet exemple d’utilisation est inspiré de la procédure que vous retrouvez sur GitHub ici. J’ai simplement ajouté l’option « –assume-yes » pour vous éviter d’avoir à confirmer l’installation des dépendances. Tout va s’installer automatiquement sans vous demander de confirmation. 😉

(Ads)

Exemple d’utilisation sur une VM Windows Server 2022 (Azure Edition)

Afin que cet article soit complet, je vous propose de réaliser le même test mais cette fois-ci sur une VM Windows Server. Perso, j’utilise un Windows Server 2022 – Azure Edition. Histoire de changer un peu, j’ai cette fois-ci créée ma VM via l’interface graphique du portail web d’Azure.

Voici ce que j’ai choisi :

Création d’un VM Azure Confidential Computing sous Windows Server

On retrouve bien la dénomination « C » pour Confidential dans le nom de la VM et le « a » signifie que je suis toujours sur une VM confidential de type AMD.

Evidemment, le processus d’installation de Microsoft Azure Attestation va être plus simple sur un Windows Server grâce à l’interface graphique. 😁 – Il vous suffit de vous rendre sur le même repository GitHub mais je vous donne le lien direct pour plus de simplicité : https://github.com/Azure/confidential-computing-cvm-guest-attestation/tree/main/cvm-platform-checker-exe. Dans le dossier Windows, récupérez le fichier ZIP suivant : cvm_windows_attestation_client.zip.

Décompressez le tout et commencez par installer le VC Redist x64.

Installation de Microsoft Azure Attestation sur Windows Server

Une fois que c’est bon, ouvrez un CMD et exécutez la commande ci-dessous pour retrouver le token de notre VM Azure Confidential Computing :

AttestationClientApp.exe -o token

Vous obtenez le même retour que pour notre VM Ubuntu :

Récupération du token Microsoft Azure Attestation sur Windows Server

Retournez sur le site https://jwt.io/ pour copier-coller votre token et voir ce qu’il contient. On retrouve des informations similaires à notre VM Ubuntu.

Décodage du Token Microsoft Azure Attestation

Pour Windows Server, vous pouvez retrouver la procédure que j’ai détaillé ci-dessus sur le repository GitHub officiel de Microsoft via ce lien : https://github.com/Azure/confidential-computing-cvm-guest-attestation/tree/main/cvm-platform-checker-exe.

Conclusion

Voilà, vous savez désormais utiliser Microsoft Azure Attestation au sein d’une VM Linux et même Windows Server. C’est un service qui peut être utilisé pour contrôler / attester de la sécurité des charges de travail dans le cloud en vérifiant la confidentialité de sa VM configurée en Azure Confidential Computing sur le cloud de Microsoft. 👍 Evidemment pour l’instant, c’est essentiellement de la CLI mais on imagine assez facilement que Microsoft ajoutera une nouvelle option directement dans le portail Azure à termes.

Plus d’informations sur les liens suivants de Microsoft :

Share
Published by
thibault

Recent Posts

Twitter banni au Brésil : une atteinte à la liberté d’expression ?

Le Brésil vient de franchir un nouveau pas vers la censure en bannissant le réseau…

2 jours ago

La nouvelle fonctionnalité Recall de Windows devient désormais optionnelle

La nouvelle fonctionnalité Recall de Windows devient désormais optionnelle La controverse Recall prend fin Annoncée…

4 jours ago

Notion quitte la Russie : Quelles conséquences pour les utilisateurs ?

Fin de Notion en Russie Notion, l'outil de productivité populaire, a annoncé son retrait du…

5 jours ago

OpenAI dans la ligne de mire d’Apple : un partenariat stratégique à venir ?

Apple serait prêt à investir dans OpenAI Une alliance qui pourrait redéfinir le paysage technologique…

6 jours ago

FAT32 : Microsoft va permettre la création de partitions jusqu’à 2 To

Une limitation historique enfin dépassée Le format FAT32, un vieux routier des systèmes d'exploitation, a…

1 semaine ago

Microsoft va supprimer le Panneau de Configuration de Windows

Microsoft va supprimer le Panneau de Configuration de Windows La semaine dernière, Microsoft a fait…

1 semaine ago