Connecter un abonnement Azure
Le service principal à créer, le rôle Reader et les droits supplémentaires par analyse, Entra ID et ce que Ctadel lit.
Cette page décrit le service principal à créer pour qu'un abonnement Azure soit inventorié, les rôles à lui accorder selon ce que vous voulez analyser, et ce que le collecteur lit.
Ce qu'il vous faut
Un service principal (inscription d'application dans Entra ID) et quatre valeurs : le « Tenant ID », le « Client ID (App ID) », un « Client Secret » créé sous « Certificates & secrets », et le « Subscription ID » de l'abonnement à analyser. Un compte Ctadel correspond à un abonnement ; un même service principal peut servir à plusieurs comptes.
Les identifiants ne sont pas vérifiés à l'enregistrement du compte. Le bouton « Découvrir les abonnements » du dialogue les teste : Ctadel demande un jeton au locataire et liste les abonnements visibles ; une clé refusée renvoie l'erreur d'Azure.
Rôles à accorder
Inventaire
Au niveau de l'abonnement :
| Rôle | Ce qu'il donne |
|---|---|
Reader | L'inventaire par Azure Resource Manager : calcul, réseau, stockage, bases, AKS, Key Vault, affectations de rôles, journal d'activité. Aucune écriture. |
Log Analytics Reader | Les paramètres de diagnostic et les requêtes de journaux. |
Analyses de contenu
Chaque analyse demande un droit distinct ; sans lui, elle est absente et le reste fonctionne.
| Analyse | Droit à accorder | Ce que fait Ctadel |
|---|---|---|
| Contenu des blobs (secrets, données sensibles) | Storage Blob Data Reader sur les comptes de stockage. | Ctadel demande un jeton Entra ID pour https://storage.azure.com/ et lit les objets. Il n'appelle pas listKeys : cette opération délivrerait une clé de compte en lecture-écriture, et elle est refusée sur les comptes où les clés partagées sont désactivées. |
| Disques des machines virtuelles | Des droits d'écriture au-delà de Reader : instantanés de disques managés, création d'un groupe de ressources, d'un réseau virtuel et d'une machine virtuelle. | Ctadel crée un groupe de ressources ctadel-scan-<région> avec son réseau, prend un instantané du disque, le monte sur une machine de scan temporaire dans votre abonnement, puis supprime le tout. |
| Code et paramètres des Function Apps | Un rôle personnalisé avec Microsoft.Web/sites/config/list/action et Microsoft.Web/sites/publish/action ; AcrPull sur le registre pour les fonctions conteneurisées. | Lecture du code depuis le site SCM et du niveau d'authentification. Sans ces actions, la fonction est rapportée non lue, jamais « propre ». |
| Objets des clusters AKS | L'action Microsoft.ContainerService/managedClusters/listClusterAdminCredential/action sur les clusters. | Ctadel récupère le kubeconfig administrateur du cluster par l'API ARM et lit les objets Kubernetes avec. La posture AKS lue par ARM n'en dépend pas. |
Entra ID
Les utilisateurs, les principaux de service et les réglages du locataire sont lus par Microsoft Graph, avec des permissions d'application et un consentement administrateur :
| Permission Graph | Ce qu'elle apporte |
|---|---|
Application.Read.All | Principaux de service, secrets et certificats des inscriptions d'application. |
User.Read.All | Utilisateurs Entra ID. |
Directory.Read.All | Rôles d'annuaire privilégiés et leurs membres ; sans elle, la propriété « administrateur » d'un utilisateur reste inconnue au lieu de « faux ». Aussi les groupes Entra et leurs membres, et les applications d'entreprise attribuées à chaque utilisateur. |
Policy.Read.All | Politique d'autorisation (droits des invités, inscription d'applications) et accès conditionnel. |
AuditLog.Read.All | Dernière connexion des utilisateurs ; demande aussi une licence P1 ou P2. |
Reports.Read.All | État d'enregistrement MFA des utilisateurs. |
AccessReview.Read.All | Revues d'accès des invités ; demande une licence P2. |
Une permission absente laisse la propriété correspondante non renseignée, jamais fausse.
Déclarer l'abonnement dans Ctadel
- Ouvrez « Paramètres », onglet « Intégrations », sous-onglet « Fournisseurs cloud », puis « Ajouter un compte » sur la ligne Microsoft Azure.
- Saisissez un « Libellé », puis « Tenant ID », « Client ID (App ID) », « Client Secret » et « Subscription ID ».
- Cliquez sur « Découvrir les abonnements » : Ctadel obtient un jeton et liste les abonnements visibles par le service principal, en signalant ceux qui ne sont pas actifs.
- Cliquez sur « Créer », ou sur « Ajouter les N comptes » pour créer un compte par abonnement découvert.
Ce que le collecteur lit
| Famille | Ressources lues |
|---|---|
| Abonnement et locataire | Posture de l'abonnement, réglages Entra ID du locataire, affectations de rôles, plans Defender for Cloud et contact de sécurité, paramètres de diagnostic, alertes du journal d'activité. |
| Identités | Utilisateurs Entra ID (synchronisation locale, dernière connexion, âge du mot de passe, MFA, rôles privilégiés), principaux de service et leurs secrets. |
| Calcul | Machines virtuelles, disques et instantanés, clusters AKS et leurs pools de nœuds, Function Apps, App Service, Logic Apps, registres de conteneurs. |
| Réseau | Réseaux virtuels, groupes de sécurité réseau, adresses IP publiques, répartiteurs de charge, passerelles, interfaces réseau, points de terminaison privés, Application Gateway, Azure Firewall, Front Door, zones DNS, API Management. |
| Données | Comptes de stockage et leur posture, serveurs et bases SQL, PostgreSQL flexible, Cosmos DB, Redis, Synapse, Data Factory, HDInsight, Event Hubs, Service Bus, App Configuration, coffres Recovery Services. |
| Secrets et clés | Key Vault et Managed HSM. |
| IA | Services cognitifs, dont Azure OpenAI. |
Les abonnements à l'état « Warned » ou « PastDue » sont lus comme les abonnements actifs ; ceux à l'état « Disabled » ou « Deleted » ne le sont pas.
Lorsqu'un type de ressource n'a pas pu être lu complètement, les ressources déjà connues de ce type restent dans l'inventaire et ne sont pas considérées comme supprimées.
Limites
- Le contenu des bases Azure SQL n'est pas analysé : seule leur posture (accès public, chiffrement, audit) est lue. Une analyse de contenu qui ne touche jamais le serveur de production est à l'étude.
- Le niveau d'authentification d'une Function App reste inconnu sans
Microsoft.Web/sites/config/list/action. Les paramètres d'application ne sont pas téléchargés. - La liste des clés et secrets d'un coffre Key Vault demande un accès au plan de données du coffre ; sans lui, la propriété correspondante reste inconnue.
- Les propriétés Entra ID (dernière connexion, MFA, revues d'accès) dépendent des permissions Graph et des licences listées plus haut.
- L'accès aux objets AKS passe par le kubeconfig administrateur du cluster, pas par une identité en lecture seule.
- La détection sur le journal d'activité Azure est en validation interne, non disponible pour les clients.
- Les identifiants ne sont vérifiés que si vous cliquez sur « Découvrir les abonnements » ; sinon, une erreur (secret erroné ou expiré, rôle retiré) apparaît dans l'état du compte au premier scan.