问题描述
背景
我正在尝试在我的 sql 服务器中授权我的 WebApp。 WebApp 和 sql 服务器都托管在 Azure 上。 我使用 Net core 3.1 和 EF core 3.1。我的网络应用程序托管在 linux 机器上。我还必须实现能够从 API 端点迁移数据库的功能。
_dbContext.Database.Migrate();
- 在我的网络应用中,我启用了托管服务标识。可以从 Azure 门户完成,但我已经在我网站的 ARM 模板中完成了:
"identity": {
"type": "SystemAssigned"
},
-
在我的 AAD 中,我创建了名为 MSI-sqlSERVER-ACCESSGROUP 的组(类型为 Security)。我将我的 Web 应用程序作为服务主体添加到该组。我可以这样做,因为我之前启用了 MSI。
CREATE USER MSI-sqlSERVER-ACCESSGROUP FROM EXTERNAL PROVIDER
ALTER ROLE db_datareader ADD MEMBER MSI-sqlSERVER-ACCESSGROUP
ALTER ROLE db_datawriter ADD MEMBER MSI-sqlSERVER-ACCESSGROUP
ALTER ROLE db_ddladmin ADD MEMBER MSI-sqlSERVER-ACCESSGROUP
var conn = (sqlConnection)_dbContext.Database.GetDbConnection();
conn.Accesstoken = (new AzureServicetokenProvider()).GetAccesstokenAsync("https://database.windows.net/").Result;
问题
我可以通过 dbContext 访问数据库数据。不幸的是,我无法迁移我的数据库。我的端点返回 HTTP 500。日志说:
指定的架构名称“{appId}@{AAD 租户 ID}”不存在或您无权使用它。
尝试过
我已将 db_securityadmin
、db_accessadmin
、db_owner
提供给我的用户,但没有帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)