使用 SSMS 使用用户分配的托管标识连接到 Azure SQL Server 失败

问题描述 投票:0回答:1

我无法使用用户分配的托管标识连接到 Azure SQL 数据库。可以使用专用终结点从运行 SQL Server 2017 的 SQL VM 访问 SQL,并且能够使用服务主体和具有 MFA 的 Entra ID 帐户进行连接。

  • Entra ID 仅身份验证按钮已选中,并且托管标识是 Azure 中 SQL 管理员组的一部分。
  • 身份具有服务器的贡献者和 SQL DB 贡献者:

Azure1 Azure2

以及图形 API 角色:

User.Read.All
GroupMember.Read.All
Application.Read.ALL

我还使用以下查询在数据库中创建了角色:

CREATE USER "sql-managed-identity" FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER "sql-managed-identity";
ALTER ROLE db_datawriter ADD MEMBER "sql-managed-identity";
GO

SQL Management Studio 和 Powershell 不断给我以下错误:

Cannot connect to different-vnet-sql.database.windows.net.
-

ADDITIONAL INFORMATION:
ManagedIdentityCredential authentication is unavailable. The requested identity has not been assigned to this resource.
Status: 400 (Bad Request)
Content:
{"error":"invalid_request","error_description":"Identity not found"}
Headers:
Content-Length: 68
Content-Type: application/json; charset=utf-8
Date: Tue, 16 Jan 2024 14:56:05 GMT
Server: IMDS/150.870.65.1103
(Azure.Identity)

SSMS Auth window image

我已经尝试了 SSMS 中的所有不同身份验证方法并尝试使用登录

  • 用户分配的托管标识名称(如在 Azure 门户中)

  • 用户分配的托管身份客户端 ID

  • 用户分配的托管身份对象(主体)ID

都给出相同的错误。

azure azure-sql-database ssms azure-managed-identity
1个回答
0
投票

想通了。用户分配的托管标识应该在 SQL VM 而不是 SQL Server 上设置。使用 MI 的客户端 ID(而不是 MI 名称)从 SSMS 登录。

Successful connection

© www.soinside.com 2019 - 2024. All rights reserved.