Microsoft, via Azure Active Directory, propose une plateforme d’identité robuste. Azure Active Directory (aka Azure AD) assure la gestion des identités de votre tenant Azure. Outre les identités de type utilisateurs, Azure AD centralise également les identités applicatives. Dans mon expérience, ces identités applicatives sont surtout utiles pour sécuriser les échanges d’informations entre applications ou microservices. Cependant, entre les notions de “Managed Identity”, d’“App Registration”, d’“Enterprise Application” ou encore de “Service Principal”, le paysage est nébuleux pour bon nombre de développeurs. Dans cet article, je propose un petit tour d’horizon de ces différentes notions.
Comme énoncé dans l’introduction, les identités applicatives sont utiles pour sécuriser les communications entre applications ou services. La notion de sécurité distingue l’authentification des permissions. Azure AD, au travers de ses identités applicatives, est capable de couvrir ces 2 aspects.
La toute première chose à retenir d’une App Registration, c’est qu’elle est globalement unique. Une App Registration est une représentation unique de l’identité d’une application à l’échelle de la planète. De plus, elle offre différentes fonctionnalités :
L’App Registration est indispensable dès lors que vous souhaitez sécuriser les échanges avec l’extérieur. Par exemple, si vous exposez des API pour des partenaires, il vous faudra à minima 2 App Registrations :
Avec les App Registration, vous pouvez répondre à différents flow OAuth (par exemple Client Credentials ou Authorization Code). Notez cependant que vous devez gérer l’expiration des secrets par vos propres moyens. Cela peut vite devenir fastidieux si vous souhaitez généraliser OAuth pour les échanges entre vos composants.
Contrairement à l’App Registration et sa notion d’identité globale, l’Enterprise Application est une identité locale. Elle n’est définie que de votre tenant. Il n’y a pas de différence technique entre un Service Principal et une Enterprise Application, seulement une connotation :
Ainsi, par usage, une Enterprise Application désigne la représentation (ou instanciation) locale d’une application dans votre tenant. Par exemple, pour chaque App Registration que vous avez instanciée, une Enterprise Application existe dans votre tenant. Ou encore, lorsque vous ajoutez une application externe (Facebook, Netflix…) à votre tenant, en fait, vous réalisez une instanciation locale de l’identité dans votre tenant.
Une Identité Managée est une identité gérée par Azure. C’est une identité de type Enterprise Application avec la particularité d’être associée à un service Azure (Logic Apps, Data Factory, Azure Function…). L’identité managée répond à 2 problématiques principales :
Notez qu’il existe 2 types d’identités managées : System Assigned ou User Assigned. La première est générée par la plateforme Azure et assignée à un service. La seconde est générée par un utilisateur puis associée à un ou plusieurs services Azure.