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 :
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.
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.
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.
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é.
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.
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
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 :
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
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.