Fédération d'identité pour Azure Pipelines

Fédération d'identité pour Azure Pipelines

Disponible en Public Preview depuis le 11 septembre, je vous propose cet article pour prendre en main cette nouvelle fonctionnalité tant attendue.

Pourquoi utiliser la fédération d'identité ?

L'utilisation d'une fédération d'identité sur Azure DevOps pour interconnecter Azure et Azure DevOps peut offrir plusieurs avantages importants en termes de sécurité, de gestion des utilisateurs et d'expérience utilisateur. Voici quelques raisons pour lesquelles vous pourriez envisager d'utiliser une fédération d'identité dans ce contexte :

  1. Gestion centralisée des identités : Une fédération d'identité permet de centraliser la gestion des identités des utilisateurs. Vous pouvez gérer les utilisateurs, les groupes et les autorisations dans un seul emplacement, généralement dans Azure Active Directory (Azure AD). Cela simplifie la gestion des accès et des autorisations pour Azure et Azure DevOps.

  2. Single Sign-On (SSO) : L'un des avantages les plus importants de la fédération d'identité est la possibilité d'implémenter le Single Sign-On (SSO). Avec SSO, les utilisateurs peuvent se connecter à Azure DevOps en utilisant leurs informations d'identification Azure AD, sans avoir à entrer des identifiants supplémentaires. Cela améliore considérablement l'expérience utilisateur tout en renforçant la sécurité, car les utilisateurs ont moins de mots de passe à gérer.

  3. Contrôle d'accès basé sur les rôles (RBAC) : Azure DevOps utilise Azure AD pour gérer les autorisations. En utilisant une fédération d'identité, vous pouvez mettre en œuvre des stratégies de Contrôle d'Accès Basé sur les Rôles (RBAC) pour définir avec précision quelles ressources Azure DevOps chaque utilisateur ou groupe peut accéder. Cela permet de maintenir un contrôle granulaire sur les autorisations.

  4. Sécurité renforcée : La fédération d'identité renforce la sécurité car elle réduit le besoin d'utiliser des mots de passe locaux pour Azure DevOps. Les utilisateurs se connectent à Azure AD, qui peut être protégé par des mesures de sécurité avancées telles que la vérification en deux étapes, l'authentification multi-facteurs (MFA) et d'autres mécanismes de sécurité.

  5. Audits et rapports centralisés : En utilisant Azure AD pour la gestion des identités, vous bénéficiez également de la capacité de générer des rapports et de réaliser des audits centralisés sur les activités des utilisateurs, ce qui est essentiel pour la conformité et la surveillance.

  6. Intégration avec d'autres services Azure : Si vous utilisez d'autres services Azure en plus d'Azure DevOps, la fédération d'identité permet une intégration plus transparente et cohérente avec l'ensemble de l'écosystème Azure. Les utilisateurs peuvent accéder à divers services Azure avec les mêmes informations d'identification.

Comment la mettre en place ?

Demander l'accès à la preview

💡
Cette fonctionnalité est en préversion publique et n’est peut-être pas disponible dans votre organisation. Pour demander un accès anticipé, accédez à aka.ms/azdo-rm-workload-identity-preview.

Il vous suffit donc avant d'aller plus loin de faire la demande pour obtenir la possibilité de tester cette nouvelle fonctionnalité:

Et d'être un peu patient 😎

Convertir une connexion existante

Cette action est la plus simple à réaliser car il suffit de cliquer sur l'encart présent au dessus du détail du service connexion:

Si besoin, vous pouvez aussi faire un rollback après avoir fait cette action:

Créer une nouvelle connexion entre Azure DevOps et Azure

Depuis votre menu habituel pour créer des "services connexions", une fois la feature activée pour votre organisation, vous allez pouvoir créer ce nouveau type de connexion en suivant ces étapes et au utilisant le mode automatique :

💡
Pour ceux qui veulent passer par une configuration manuelle avec par exemple une "User Assigned Identity", vous pouvez suivre le guide de Microsoft qui explique le sujet étape par étape : Workflow identity with managed identity

Utilisation au travers d'un pipeline Azure DevOps

Pour l'instant, toutes les extentions du marketplace ne proposent pas encore cette option mais Microsoft l'a déjà ajouté dans ces tâches natives Azure Pipelines.

Voici la liste compléte pour identifier facilement vos possibilités: AzureAppServiceManage, AzureAppServiceSettings, AzureCLI, AzureCloudPowerShellDeployment, AzureContainerApps, AzureFunctionAppContainer, AzureFunctionApp, AzureKeyVault, AzureMonitor, AzureMysqlDeployment, AzurePolicy, AzurePowerShell, AzureResourceGroupDeployment, AzureResourceManagerTemplateDeployment, AzureRmWebAppDeployment, AzureSpringCloud, AzureVmssDeployment, AzureWebAppContainer, AzureWebApp, DockerCompose, Docker, HelmDeploy, InvokeRestApi, JavaToolInstaller, JenkinsDownloadArtifacts, Kubernetes.

Les extensions Terraform DevLabs et Azure Pipelines Terraform Tasks ont été mises à jour pour prendre en charge la fédération d'identité de charge de travail.

Prenons un exemple simple, avec Azure CLI, pour l'exécution de scripts Terraform :

 - task: AzureCLI@2
    inputs:
      addSpnToEnvironment: true
      azureSubscription: 'identity-federation'
      scriptType: bash
      scriptLocation: inlineScript
      inlineScript: |
        # Inherit Azure CLI service connection
        export ARM_CLIENT_ID=$servicePrincipalId
        export ARM_OIDC_TOKEN=$idToken
        export ARM_TENANT_ID=$tenantId
        export ARM_SUBSCRIPTION_ID=$(az account show --query id -o tsv)
        export ARM_USE_OIDC=true

        terraform init
        terraform apply -auto-approve
💡
Le token généré à une durée de vie de 10 minutes.

Ici la propriété "addSpnToEnvironment" va nous permettre de récupérer les informations nous permettant la connexion à Azure et va générer 3 variables d'environnement que nous allons pouvoir exploiter:

  • tenantId

  • servicePrincipalId

  • idToken

Dans notre usage avec Terraform; nous allons configurer les variables nécessaires pour l'ajout du contexte d'exécution pour nos scripts.

Pour plus de détails sur ce point, n'hésitez pas à relire la documentation officielle:

Azure Provider: Authenticating using a Service Principal with Open ID Connect

Conclusion

En résumé, l'utilisation d'une fédération d'identité sur Azure DevOps pour interconnecter Azure et Azure DevOps offre une manière plus sécurisée, plus efficace et plus facile à gérer pour gérer les identités des utilisateurs, les autorisations et l'authentification. Elle améliore également l'expérience globale des utilisateurs tout en renforçant la sécurité de vos environnements Azure et Azure DevOps.

💡
Merci Microsoft pour cette nouvelle fonctionnalité qui arrive bientôt pour tous sur Azure DevOps 😍

Did you find this article valuable?

Support Antoine LOIZEAU's Blog by becoming a sponsor. Any amount is appreciated!