gpt4 book ai didi

azure - 应用服务无法使用托管标识连接到数据库

转载 作者:行者123 更新时间:2023-12-03 02:13:32 25 4
gpt4 key购买 nike

我有一个 Azure 应用服务,需要授予对 SQL 数据库的访问权限(也在我的帐户下的 Azure 门户中)。我想通过托管身份授予其访问权限,因此我打开了系统分配的托管身份。

System assigned managed identity turned on.

在 SQL 服务器的访问控制 (IAM) 下,我已将应用服务添加为贡献者。

App Service has been added as contributer

Server=tcp:virtualscorecard.database.windows.net,1433;Initial Catalog=GolfScore; Persist Security Info=False; MultipleActiveResultSets=False; Encrypt=True; TrustServerCertificate=False; Connection Timeout=30; Authentication=Active Directory Managed Identity;

但是当我尝试连接时,我在日志流中收到以下错误:

[Error] Microsoft.EntityFrameworkCore.Query: An exception occurredwhile iterating over the results of a query for context type'GolfScoreAPI.DbContexts.UserProfileContext'.Microsoft.Data.SqlClient.SqlException(0x80131904): Login failed for user ''.The server is not currently configured to accept this token.

我在连接字符串中尝试了很多变体。我唯一需要做的就是在连接字符串中添加用户名和密码。但托管身份应该使这变得不必要。

我做错了什么?

更新1

我已意识到我需要将我的应用服务作为用户添加到数据库中。为此,我必须首先分配一个 Azure Active Directory 管理员。但当我尝试这样做时,我无法选择任何有意义的东西。无法选择与我相关的唯一条目,因为“不允许使用 Microsoft 帐户成员。”

Microsoft Account members are not allowed.

更新2:

我通过在 Azure Active Directory 中创建一个组并使自己成为其中的成员来使其正常工作。然后将该组设置为数据库上的 Azure Active Directory 管理员,使我自己能够将我的应用服务 (GolfScoreAPI) 添加为数据库上的 dbreader

我唯一不明白的是为什么我需要为特定 IP 地址添加防火墙规则。这似乎不是最理想的,因为 IP 地址可能会发生变化(据我所知),例如,如果应用服务计划发生更改。

最佳答案

是的,重要的部分丢失了。您已经从应用程序服务启用了身份,那么 SQL 服务器呢:)。您需要在 sql server 中添加Azure Active Directory 管理员。引用:-https://learn.microsoft.com/en-us/azure/search/search-howto-managed-identities-sql

您已经完成了以下步骤。

enter image description here

进入 SQL Server 的下一步。

  1. 添加域/个人管理员帐户(使用 AAD 注册)作为 SQL Server AAD 管理员。然后按照以下步骤操作
  2. 使用身份验证类型登录到 SQL Server 实例:- AAD -Universal with MFA
  3. 输入域/个人管理员帐户详细信息,在弹出登录框时输入密码。在 sql server 数据库中运行以下命令。从外部提供商创建用户 [< >];更改角色 db_ddladmin/db_datareader/db_datawriter 添加成员 [< >];
  4. 进入应用服务并收集IP地址并添加到sql server的防火墙中以避免防火墙问题。
  5. 在应用服务中进行必要的代码更改以使用默认凭据,如图所示 enter image description here
  6. 所有步骤汇总在一个地方 enter image description here

注意:-如果您使用 Visual Studio 进行开发,那么在运行本地实例以连接到 Azure SQL 时,请确保将您的 Visual Studio 订阅电子邮件 ID 添加为用户。

如果您使用的是 Visual Studio,请确保

关于azure - 应用服务无法使用托管标识连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72359415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com