Как добавить пользователя Managed Identity в базу данных Azure SQL с помощью Powershell? - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь создать сценарий развертывания в PowerShell для создания и настройки среды для веб-приложения. Веб-приложение использует назначенную пользователем управляемую идентификацию для доступа к серверу SQL.

Мне нужно запустить следующую команду на сервере SQL:
CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;

Но эта команда выдает ошибку, когда я использую sql логин администратора: «Только соединения установлены с Учетные записи Active Directory могут создавать других пользователей Active Directory. "

Я добавляю администратора AD с Set-AzSqlServerActiveDirectoryAdministrator

Но как использовать этот логин AD из PowerShell для выполнения команды SQL?

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Очевидно, логин Azure AD работает только с параметром -ConnectionString. Итак, решение:

# Create User Managed Identity
  $mi = New-AzUserAssignedIdentity -ResourceGroupName $resourceGroupName -Name $managedIdentityName
# Enable AD login for SQL server
  Set-AzSqlServerActiveDirectoryAdministrator -ServerName $sqlServerName -ResourceGroupName $resourceGroupName -DisplayName $AdAdminUser -ObjectId $AdAdminObjectId
# Add Managed identity login to SQL server
  $connectString = "Server=tcp:$sqlServerName.database.windows.net,1433;Initial Catalog=$sqlDBName;Authentication=Active Directory Password;user=$AdAdminUser;pwd=$AdAdminPw"
  $query = "CREATE USER [$managedIdentityName] FROM EXTERNAL PROVIDER;"
  Invoke-Sqlcmd -ConnectionString $connectString -Query $query -OutputSqlErrors $true
1 голос
/ 16 июня 2020

Кажется, что Invoke-Sqlcmd (или, по крайней мере, его версия, которая у меня есть) не поддерживает Azure аутентификацию AD.

Я использовал сценарий PowerShell, подобный этому, для создания пользователей ( вам может потребоваться обновить sqlcmd ):

$query = "CREATE USER [$identityName] FROM EXTERNAL PROVIDER;"
sqlcmd -S $serverHostName -d $databaseName -G -N -U $username -t 120 -b -Q $query

Флаг -G указывает ему использовать Azure AD-аутентификацию, в этом случае он будет использовать интерактивную аутентификацию и потребует от вас чтобы залогиниться. Насколько я помню, вы можете использовать флаги -U и -P, чтобы определить имя пользователя и пароль, а также для пользователя Azure AD, но это будет работать только в том случае, если у пользователя не включена MFA, и это не так. t федеративный пользователь.

...