sql-server - SQL 服务器和 Azure 活动目录 - 创建新包含的 azure 广告来宾用户
问题描述
我正在尝试创建与 azure 活动目录集成的数据库用户。我们所有的用户都是访客用户。我一直在关注多篇关于如何在 SQL 数据库中创建用户的文章,但都没有奏效。
例如这篇文章:https ://www.mssqltips.com/sqlservertip/5242/adding-users-to-azure-sql-databases/
建议像这样创建用户:
CREATE USER [name@domain.com]
FROM EXTERNAL PROVIDER
WITH DEFAULT_SCHEMA = dbo;
这会产生错误:
Principal 'name@domain.comm' could not be found or this principal type is not supported.
谷歌搜索这个错误让我在stackoverflow帖子(https://dba.stackexchange.com/questions/148325/add-active-directory-user-for-azure-sql-db):
这表明:
CREATE USER [name_domain.com#EXT#@<yourAzureSubscriptionPrefix>.onmicrosoft.com] FROM EXTERNAL PROVIDER
并访问:
EXEC sp_addrolemember 'db_datareader', 'name_domain.com#EXT#@<yourAzureSubscriptionPrefix>.onmicrosoft.com'
EXEC sp_addrolemember 'db_datawriter', 'name_domain.com#EXT#@<yourAzureSubscriptionPrefix>.onmicrosoft.com'
这不会给出错误,但它也不提供对数据库的访问。由于我收到错误 NT AUTHORITY/ANONYMOUS LOGIN
我还尝试创建一个 AAD 组并提供该组访问权限,这里也没有错误,但也无法登录。
几点注意事项:
- 防火墙上允许所有 IP 地址
- 所有用户都已添加到 sql db IAM 中(不确定这是否有必要)
- 我已经在 sql server 中启用了 Active Directory Admin,我把订阅管理员放在这里
- 这也是我在 SQL DB 中创建用户的用户
- 我能够毫无问题地创建本机 sql 用户
我仍然只能使用 Active Directory Admin 登录,其他用户无法登录。
关于如何使用 Azure Active Directory 中的 Windows 凭据登录到我的 Azure sql 数据库的任何建议?
解决方案
使用外部用户时,添加时需要使用“损坏的用户主体名称”。就是这个:
CREATE USER [name_domain.com#EXT#@<your-azure-ad-default-domain>.onmicrosoft.com] FROM EXTERNAL PROVIDER
其次,用户将仅在该数据库中创建;他们无法连接到master
. 所以你需要选择要连接的数据库。
您可能还需要在高级连接设置中指定 AAD 租户 ID。您可能需要这样做的原因是,默认情况下,外部用户将登录到他们的主租户。哪个不是连接到您的数据库的那个。因此,您可能需要指定租户以让他们显式登录您的租户。
推荐阅读
- node.js - Koa 在发送 postgresql 查询数据时发送“Not Found”
- ajax - 设置数据端点以接收来自 API 的推送数据
- javascript - 如何在 javascript 中将十六进制(缓冲区)转换为 IPv6
- html - 想在 div 元素中居中一个 href 元素
- xcode11 - iOS 13 中的 ATS 策略是否已更改并且允许任意加载现在不起作用?
- java - JDBC 事务未回滚 - setAutoCommit(false)
- delphi - Delphi 数组构造函数替代
- python - Pyinstaller 缺少引导加载程序
- c# - 如何使用带有 FakeConnectionFactory 类的 AsyncEventingBasicConsumer (rabbitmq - c#) 对消费者应用单元测试?
- javascript - 根据标头值返回 json 对象