У меня это работает сейчас, вот как, для всех, кто сталкивается с этим постом позже.
Справочная информация о моей конфигурации: я добавил пользователя Azure AD в качестве администратора и дал этому пользователю доступв azure sql.
azureaduser=$(az ad user list --filter "userPrincipalName eq 'MYUSERNAME'" --query [].objectId --output tsv)
az sql server ad-admin create --resource-group MYRESOURCEGROUP --server-name MYSQLSERVER.database.windows.net --display-name ADMIN --object-id $azureaduser
Я создал группу Azure AD и добавил этого пользователя в группу. Я также добавил в эту группу принцип обслуживания (управляемое удостоверение) для веб-приложения Azure.
groupid=$(az ad group create --display-name sqlAccessGroup --mail-nickname sqlAccessGroup --query objectId --output tsv)
msiobjectid=$(az webapp identity show --resource-group RESOURCEGROUPNAME --name MYWEBAPPNAME --query principalId --output tsv)
az ad group member add --group $groupid --member-id $msiobjectid
Входя в систему под учетной записью этого администратора, я могу подключиться к базе данных через Azure Cloud Shell и запуститьsqlcmd
sqlcmd -S MYSERVER.database.windows.net -d MYDATABASE -U "MYUSER@MYSUBSCRIPTION.onmicrosoft.com" -P "MYPASSWORD" -G -l 30
Примечание. Я уже мог получить доступ к этой базе данных с помощью аутентификации SQL, но вы не можете добавлять группы / пользователей AD в базу данных, если вы не вошли в систему с учетной записью Azure AD (следовательно,создание учетной записи администратора ранее)
CREATE USER [sqlAccessGroup] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [sqlAccessGroup];
ALTER ROLE db_datawriter ADD MEMBER [sqlAccessGroup];
ALTER ROLE db_ddladmin ADD MEMBER [sqlAccessGroup];
GO
У меня также разрешен доступ служб Azure на моем SQL Azure, поэтому мне пришлось добавить исходящий IP-адрес веб-приложения в брандмауэр .... Говоря о брандмауэрах, убедитесь, что IP-адрес вашей локальной машины тоже там.
Реальным решением этой проблемы для меня было выполнение «az login» в терминале кода VS, что, похоже, создает «идентичность». Контекст », который позволяет мне использовать моего« Администратора »сверху для входа в систему и, таким образом, иметь доступ к базе данных. Это не Точно , как запуск из самого веб-приложения, но он достаточно близок и не требует включения второй строки подключения или проверки подлинности SQL.