Grrrr DevOps Pipeline... first major crash đŸ˜€

De wikili
Version datĂ©e du 5 juin 2025 Ă  14:53 par Lli (discussion | contributions) (Page créée avec « We work in a fullstack DevOps team, with scripts that call SQL procedures in thousands of Azure SQL databases, whether for maintenance, exports, cleanup
 you know, the usual stuff. »)
Aller Ă  la navigation Aller Ă  la recherche

I knew Microsoft had given a warning
 but as usual, no one really took it seriously 😅

We work in a fullstack DevOps team, with scripts that call SQL procedures in thousands of Azure SQL databases, whether for maintenance, exports, cleanup
 you know, the usual stuff.

Et pour ça, on utilise le token obtenu avec la fonction Get-AzAccessToken.

Le hic ? Microsoft met Ă  jour en continu leur backend. Donc le pool d’Azure Pipeline qui exĂ©cute nos scripts PowerShell est mis Ă  jour automatiquement, sans intervention de notre part.

Et ce dimanche
 patatras đŸ’„ : ils ont mis Ă  jour le module Az.Accounts de la version 4 vers la 5, avec un breaking change majeur :

Le token n’est plus retournĂ© en String, mais en SecureString !

RĂ©sultat ? Toutes les fonctions plus anciennes qui manipulent ces tokens n’arrivent plus Ă  les lire, et ça casse tout. En prod. đŸ˜©

Le pire ? Comme tout tourne dans un backend, on ne remonte pas les warnings, donc personne ne l’a vu venir. C’est seulement une fois que les exports sont tombĂ©s en erreur qu’on a compris.

🎓 Leçon apprise : ne jamais ignorer les warnings
 mĂȘme s’ils sont planquĂ©s dans les logs.

🔧 Fix : il faut ajouter le paramĂštre -AsPlainText dans certains cas ou revoir complĂštement la gestion du token selon le module utilisĂ©.

Voici le warning qu’on aurait dĂ» prendre au sĂ©rieux :

get-azaccesstoken
WARNING: Upcoming breaking changes in the cmdlet 'Get-AzAccessToken' :
The Token property of the output type will be changed from String to SecureString. Add the [-AsSecureString] switch to avoid the impact of this upcoming breaking change.
- The change is expected to take effect in Az version : '14.0.0'
- The change is expected to take effect in Az.Accounts version : '5.0.0'
Note : https://aka.ms/azps-changewarnings
</div>

<div lang="fr" dir="ltr" class="mw-content-ltr">
WorkArround
$azAccountsVersion = (Get-Module -ListAvailable -Name Az.Accounts | Sort-Object Version -Descending | Select-Object -First 1).Version
$dexResourceUrl   = 'https://database.windows.net/'
if ($azAccountsVersion -ge [Version]'5.0.0') {
    write-host  "Az.Accounts 5.0.0 and above"
    $AccessTokenSecure = (Get-AzAccessToken -ResourceUrl $dexResourceUrl).Token
    $token  = ConvertFrom-SecureString -SecureString $AccessTokenSecure -AsPlainText
} else {
    write-host  "Az.Accounts below 5.0.0"
    $token = (Get-AzAccessToken -ResourceUrl $dexResourceUrl).Token
}