Skip to content

Commit 0a82356

Browse files
Use converted secured string access token in invoke sqlcmd
1 parent f7adb02 commit 0a82356

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

infra/scripts/add_user_scripts/create-sql-user-and-role.ps1

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,12 @@ EXEC sp_addrolemember '$($DatabaseRole)', @username;
7373
Write-Output "`nSQL:`n$($sql)`n`n"
7474

7575
Connect-AzAccount -Identity -AccountId $ManagedIdentityClientId
76-
$token = (Get-AzAccessToken -ResourceUrl https://database.windows.net/).Token
77-
Invoke-SqlCmd -ServerInstance "$SqlServerName" -Database $SqlDatabaseName -AccessToken $token -Query $sql -ErrorAction 'Stop'
76+
$token = (Get-AzAccessToken -AsSecureString -ResourceUrl https://database.windows.net/).Token
77+
$ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($token)
78+
try {
79+
$plaintext = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr)
80+
Invoke-Sqlcmd -ServerInstance $SqlServerName -Database $SqlDatabaseName -AccessToken $plaintext -Query $sql -ErrorAction 'Stop'
81+
} finally {
82+
# The following line ensures that sensitive data is not left in memory.
83+
$plainText = [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
84+
}

0 commit comments

Comments
 (0)