Comment un script peut-il accéder aux connexions de service ? (Azure DevOps Pipelines)
Je me suis aussi posé cette question. La solution que j’ai adoptée est d’utiliser la tâche « Azure CLI » plutôt que la tâche basique « Script » (ou « Bash »). C’est censé être pour exécuter des commandes Az CLI, mais rien ne vous empêche d’exécuter uniquement des scripts Bash standards (ou PSCore si c’est votre préférence).
Si vous examinez les variables d’environnement présentes lorsque vous exécutez cette tâche, vous verrez un ensemble d’informations sur la connexion de service dans des variables préfixées par « ENDPOINT_DATA_ ». Cela correspond à ce que Josh E disait. Cela inclut l’ID d’abonnement Azure, le nom, l’ID d’objet du principal de service, etc.
Vous pouvez optionnellement activer l’ajout des détails du principal de service à l’environnement également. Cela inclura alors la clé SPN, le TenantID, etc. en tant que variables d’environnement secrètes.
Voici à quoi ressemblent les tâches :
- task: AzureCLI@2
displayName: 'Azure CLI'
inputs:
scriptType: bash
scriptLocation: inlineScript
azureSubscription: '<Service Connection Name>'
inlineScript: |
env | sort
- task: AzureCLI@2
displayName: 'Azure CLI, with SPN info'
inputs:
scriptType: bash
scriptLocation: inlineScript
azureSubscription: '<Service Connection Name>'
addSpnToEnvironment: true
inlineScript: |
env | sort
Bien entendu, tout cela n’est applicable qu’aux connexions de service Azure Cloud. Il pourrait y avoir des techniques similaires pour d’autres connexions de service, mais je ne les ai pas explorées.