我有一个带有两个数据库的Azure SQL Server,我正在尝试使用Azure Active Directory集成身份验证。其中一个数据库很关键,大多数用户只需要被授予此数据库的“读取”访问权限。
要添加具有“读者角色”的新用户,我执行了以下操作:
从Azure门户网站添加了具有“访问控制”(IAM)下的“读者”角色的用户。 在此步骤之后,用户无法连接。
然后我尝试使用以下命令添加用户:
从EXTERNAL PROVIDER创建用户[name@domain.com];
sp_addrolemember db_datareader,[name@domain.com];
用户仍无法使用AAD集成身份验证连接到服务器。在这两种情况下,我都收到匿名登录错误。
Click to see the snip of the error message
我错过了什么吗?如果没有,有没有其他方法可以添加对数据库具有特定权限的用户?
答案 0 :(得分:4)
对不起,M先生
是的,你混淆了两种不同级别的访问控制;您描述的IAM控件(Reader角色分配)允许用户查看(读取)Azure门户中的设置。相反,我怀疑您希望用户(经过AAD身份验证)能够仅读取服务器上的数据。这是通过T-SQL完成的,与门户网站定义的访问控制无关。
现在,您正在尝试在数据库级别创建外部用户(AAD访问),并且您希望他们具有读取权限 - 请确保您已涵盖所有步骤outlined here。
乍一看,以下可能是必要的步骤:
1.确保您已为SQL Server分配了AAD管理员。
2.确保您正在连接到要在非天蓝色SQL Server实例上创建用户的数据库而不是主数据库。使用以下命令通过T-SQL创建用户:
CREATE USER <Azure_AD_principal_name> FROM EXTERNAL PROVIDER;
3.。)授予用户对该数据库的db_datareader权限:
ALTER ROLE db_datareader ADD MEMBER <Azure_AD_principal_name>
GO