[英]Cannot create database scoped credential with a login that is part of an AD group
我正在尝试查找允许通过 Azure SQL 服务器中的 AD 组分配权限的用户通过以下语法创建数据库范围凭据的最低必需权限或角色。
CREATE DATABASE SCOPED CREDENTIAL [SomeCredential]
WITH IDENTITY = N'someSqlUser', SECRET='someSqlPassword';
根据文档,需要以下权限。
GRANT CONTROL ON DATABASE::[MyDatabase] TO [SqlAdminGroup]
该组中的某人尝试创建数据库范围凭据时的错误如下:
The specified schema name "personInSqlAdminGroup@mytentant.com" either does not exist or you do not have permission to use it.
所以有趣的是,当我使用单独的 SQL 登录尝试此操作时,我特别授予了登录 CONTROL 权限,它可以工作。 当我通过授予 AD 组尝试此操作时,我收到指定的架构名称错误。 我添加了默认架构为 DBO 的组。
我相信 SQL 中的 AD 组存在一个没有默认架构的问题,因此任何对象创建都需要使用 [dbo].[object] 来完全限定对象。 但是,数据库范围的凭据似乎不需要架构,因为指定它会导致解析错误。
CREATE DATABASE SCOPED CREDENTIAL [dbo].[SomeCredential]
WITH IDENTITY = N'someSqlUser', SECRET='someSqlPassword';
因此,如果它不需要架构,为什么它会抱怨用户的指定架构名称不存在?
这是此处使用 Azure Active Directory 身份验证记录的问题。 引用“Azure AD 功能和限制”中的相关项目符号:-
属于具有 db_owner 服务器角色的组的 Azure AD 用户不能对 Azure SQL 数据库和 Azure Synapse 使用 CREATE DATABASE SCOPED CREDENTIAL 语法。 您将看到以下错误:
SQL 错误 [2760] [S0001]:指定的架构名称“user@mydomain.com”不存在或您无权使用它。
将 db_owner 角色直接授予单个 Azure AD 用户以缓解 CREATE DATABASE SCOPED CREDENTIAL 问题。
db_owner 角色成员资格与您对数据库方案的 CONTROL 不完全匹配,但它看起来可能是相同的潜在问题。 作为架构错误,我没有对此进行解释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.