Explorer l’implémentation sécurisée des identités managées avec Azure Blob Storage
Dans le monde du cloud, la sécurité des données est d’une importance capitale. Les identités managées d’Azure offrent une solution sécurisée et simplifiée pour gérer l’accès aux ressources, comme les comptes de stockage Blob Azure. Ce tutoriel vous guidera vers l’implémentation des identités managées avec les comptes de stockage Blob Azure, mettant l’accent sur la sécurisation de l’accès aux données stockées.
Les comptes de stockage Blob Azure servent à stocker des données de types variés telles que des fichiers, des images ou des vidéos. Assurer un accès sécurisé à ces données est essentiel pour protéger la confidentialité et l’intégrité des informations stockées. Dans ce tutoriel, nous allons :
- Configurer une identité managée pour les comptes de stockage Blob Azure : Apprenez à attribuer et à gérer une identité managée pour votre compte de stockage Blob Azure.
- Accéder aux données du compte de stockage Blob Azure à partir d’une application ou d’un service : Découvrez comment configurer votre application ou votre service pour accéder en toute sécurité aux données stockées dans votre compte de stockage Blob Azure en utilisant l’identité managée.
Ce tutoriel s’adresse aux développeurs et aux administrateurs cloud soucieux de renforcer la sécurité de leurs données stockées dans les comptes de stockage Blob Azure. En suivant ces étapes, vous serez en mesure de créer un environnement sécurisé et efficace pour vos applications et services accédant aux données stockées dans Azure. Lancez-vous dès maintenant !
Création du compte de stockage Azure
Toute ressource Azure doit appartenir à un groupe de ressources. Nous allons commencer par créer un groupe de ressources auquel appartiendront toutes les ressources de ce tutoriel.
az group create --name forge-tuto --location francecentral
Le groupe de ressource créé, il nous faut enregistrer le fournisseur de ressources “Microsoft.Storage” dans l’abonnement Azure spécifié, ce qui est nécessaire pour pouvoir utiliser les services de stockage Azure dans cet abonnement. Ensuite nous créerons un nouveau compte de stockage nommé “forge” dans le groupe de ressources “forge-tuto”, situé dans la région “francecentral”, avec une redondance de zone standard (ZRS) et le chiffrement des données blob activé.
az provider register -n Microsoft.Storage --subscription <subscription-id>
az storage account create --name forge --resource-group forge-tuto --location francecentral --sku Standard_ZRS --encryption-services blob
La création du compte de stockage en ligne de commande se fait en deux comandes. La première commande affecte le rôle “Storage Blob Data Contributor” à l’utilisateur actuellement connecté pour un compte de stockage spécifique. Puis La deuxième commande crée un conteneur de stockage nommé “forge-tuto” dans le compte de stockage “forgetutostorage” en utilisant les informations d’identification de connexion actuelles.
az ad signed-in-user show --query id -o tsv | az role assignment create --role "Storage Blob Data Contributor" --assignee @- --scope "/subscriptions/2acb23b5-8b81-491a-803e-fc2ef1bf40e8/resourceGroups/forge-tuto/providers/Microsoft.Storage/storageAccounts/forgetutostorage"
az storage container create --account-name forgetutostorage --name forge-tuto --auth-mode login
Vous pouvez uploader des fichiers dans le compte de stockage depuis la ligne de commande avec les instructions suivantes :
STORAGE_ACCOUNT_NAME="forgetutostorage"
CONTAINER_NAME="forge-tuto"
LOCAL_FILE_PATH="forge-tuto.txt"
BLOB_NAME="forge-tuto.txt"
# Rendez vous dans le répertoire contenant le fichier
az storage blob upload \
--account-name $STORAGE_ACCOUNT_NAME \
--container-name $CONTAINER_NAME \
--name $BLOB_NAME \
--file $LOCAL_FILE_PATH
Création de l’identité managée
L’identité managée donnera les autorisations nécessaires au conteneur de l’Azure Container Instance pour récupérer les fichiers dans le compte de stockage Azure. A l’aide du CLI nous commencerons par créer l’identité managée forgeACIId
.
az identity create --resource-group forge-tuto --name forgeACIId
Nous aurons besoin de récupérer l’identifiant de principal de service et l’identifiant de ressource de l’identité dans des variables avec ces commandes :
# Get service principal ID of the user-assigned identity
SP_ID=$(az identity show --resource-group forge-tuto --name forgeACIId --query principalId --output tsv)
# Get resource ID of the user-assigned identity
RESOURCE_ID=$(az identity show --resource-group forge-tuto --name forgeACIId --query id --output tsv)
Ces variables nous permettront de définir une stratégie d’accès sur le compte de stockage. Pour ce faire, la première commande attribue le rôle “Reader” au principal de service, lui permettant de lire toutes les ressources dans le compte de stockage “forgetutostorage”. Ensuite la deuxième lui permet de lire uniquement les données blob dans un conteneur spécifique du compte de stockage.
az role assignment create --assignee $SP_ID --role 'Reader' --scope /subscriptions/2acb23b5-8b81-491a-803e-fc2ef1bf40e8/resourceGroups/forge-tuto/providers/Microsoft.Storage/storageAccounts/forgetutostorage
az role assignment create --assignee $SP_ID \
--role "Storage Blob Data Reader" \
--scope /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Storage/storageAccounts/<storageAccountName>/blobServices/default/containers/<containerName>
Configuration des groupes de conteneurs
L’identité managée que nous venons de créer peut être attachée à un groupe de conteneurs d’Azure Container Instance ou à n’importe quel service Azure qui le supporte. Nous allons commencer par créer un groupe de conteneurs avec une image d’Azure CLI qui servira à interagir avec les services Azure comme Azure Storage Blob.
La commande az container create
crée un groupe de conteneurs avec des paramètres de configuration comme --assign-identity
, qui permet d’affecter aux conteneurs créés une ou plusieurs identités managées. Elle permet de créer notre groupe de conteneurs avec l’identité managée susmentionnée.
az container create --resource-group forge-tuto --name forge-container --image mcr.microsoft.com/azure-cli --assign-identity $RESOURCE_ID --command-line "tail -f /dev/null"
Vous pouvez vérifier le statut de création du groupe de conteneurs dans la console Azure. Une fois le groupe de conteneurs créé, vous verrez l’identité managée associée au groupe de conteneurs.
Récupération des fichiers du conteneur
Afin de vérifier la configuration du groupe de conteneurs avec l’association de l’identité managée, nous allons récupérer un blob dans le compte de stockage depuis le conteneur. Utilisez Cette commande ouvre une session Bash à l’intérieur du conteneur “forge-container” situé dans le groupe de ressources “forge-tuto”. :
az container exec --resource-group forge-tuto --name forge-container --exec-command "/bin/bash"
Depuis le conteneur, nous pouvons accéder de manière sécurisée aux blobs Azure en utilisant des identités gérées et des tokens d’accès temporaires, éliminant ainsi le besoin de gérer manuellement les clés d’accès aux comptes de stockage.
# Récupérer le SP_ID
client_id="xxxxxxxx-5523-45fc-9f49-xxxxxxxxxxxx"
apk add curl
BLOB_URL="https://forgetutostorage.blob.core.windows.net/forge-tuto/forge-tuto.txt"
ACCESS_TOKEN=$(curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2019-08-01&resource=https://storage.azure.com/' -H Metadata:true -s | jq -r '.access_token')
Après avoir obtenu le token d’accès, vous pouvez utiliser curl
pour télécharger le fichier blob. Voici comment faire :fa
curl -H "Authorization: Bearer $ACCESS_TOKEN" -H "x-ms-version: 2020-06-12" $BLOB_URL --output outputfile.txt
cat outputfile.txt
### Résultat :
# Hello from exalt
Conclusion
Ces commandes démontrent comment utiliser les identités managées dans Azure pour sécuriser et gérer les accès aux ressources de stockage. En enregistrant le fournisseur de ressources et en créant un compte de stockage, puis en assignant des rôles spécifiques à un principal de service, nous avons assuré un accès contrôlé aux données. L’utilisation d’un token d’accès temporaire obtenu via Azure Instance Metadata Service pour télécharger un fichier blob montre comment les identités managées simplifient l’authentification et renforcent la sécurité en éliminant la nécessité de gérer des clés d’accès. En somme, ces étapes assurent une gestion efficace et sécurisée des ressources Azure en utilisant des identités managées.
Glossaire
Azure Blob Storage : Service de stockage objet hautement évolutif d’Azure pour le stockage de données non structurées.
Identités managées : Service d’Azure permettant de gérer les identités de manière sécurisée, sans nécessiter de gestion directe des clés d’accès.
Principal de service : Entité dans Azure Active Directory (AAD) qui peut demander un accès aux ressources Azure.
Groupe de ressources : Conteneur logique dans Azure qui regroupe des ressources associées pour une gestion facilitée.
Redondance de zone standard (ZRS) : Configuration de stockage Azure garantissant la résilience des données en les répliquant dans différentes zones d’indisponibilité d’une région Azure.
Chiffrement des données blob : Méthode de sécurisation des données stockées dans Azure Blob Storage en les cryptant au repos.
Azure CLI : Interface de ligne de commande d’Azure permettant la gestion et l’automatisation des ressources Azure via des scripts.
Rôles Azure : Autorisations définies pour accéder et gérer les ressources Azure, attribuées aux principaux de service pour contrôler l’accès.
Tokens d’accès temporaires : Jetons générés dynamiquement par Azure Instance Metadata Service (IMDS) pour sécuriser l’accès aux ressources Azure sans nécessiter de clés permanentes.
Azure Container Instance (ACI) : Service Azure permettant d’exécuter facilement des conteneurs Docker sans avoir à gérer l’infrastructure sous-jacente.