Invoke-Sqlcmd с аутентификацией AAD - PullRequest
0 голосов
/ 11 апреля 2019

В «конвейере выпуска» Azure DevOps я предоставляю ресурсы Azure, включая базы данных SQLServer, и пытаюсь настроить доступ к базам данных, используя управляемые удостоверения.

После того, как участник службы DevOps входит в группу AAD, определенную как администратор AAD для сервера базы данных, мне нужно запустить SQL, чтобы добавить пользователей с управляемыми удостоверениями и изменить роли. Это делается в задаче Azure Powershell с помощью командлета Invoke-Sqlcmd.

Invoke-Sqlcmd имеет два вкуса, и мне не очевидно, какой из них я буду использовать, и если это имеет значение. Пока что все, что я пробовал, не удалось пройти аутентификацию с помощью AAD.

Как сообщить о своем намерении использовать AAD-аутентификацию Invoke-Sqlcmd?

Нужно ли сначала Connect-AzureAD?

Если мне нужно передать объект System.Management.Automation.PSCredential, что я должен использовать в качестве пользователя и пароля, если мы имеем дело с субъектом службы (пользователем службы Azure DevOps)?

1 Ответ

0 голосов
/ 12 апреля 2019

Масло - Понятно.

Попробуйте что-то вроде этого примера, просто настройте для своих нужд ...

$Creds = Get-Credential -Credential 'username@domainname.onmicrosoft.com'
$Username = $($Creds.GetNetworkCredential().UserName)
$Password = $($Creds.GetNetworkCredential().Password)
$Database = "testg"
$Server = 'test.database.windows.net'
$Port = 1433
$cxnString = "Server=tcp:$Server,$Port;Database=$Database;Authentication=Active Directory Password;UID=$UserName;PWD=$Password;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
$query = "select count(*) from dbo.Authors"
$cxn = New-Object System.Data.SqlClient.SqlConnection($cxnString)
$cxn.Open()
$cmd = New-Object System.Data.SqlClient.SqlCommand($query, $cxn)
$cmd.CommandTimeout = 120
$cmd.ExecuteNonQuery()
$cxn.Close()

Обновление для OP

Это был просто вариант.Если вам не нужны всплывающие окна, вы можете создать защищенный файл и извлечь из него кредиты или сохранить кредиты в хранилище учетных данных Windows и извлечь их оттуда.Тем не менее, вы все равно должны сначала создать их.

...