如何在与 Azure Active Directory 关联的 Azure SQL 数据库级别创建不同的资源组

Posted

技术标签:

【中文标题】如何在与 Azure Active Directory 关联的 Azure SQL 数据库级别创建不同的资源组【英文标题】:How to create different resource groups in azure SQL Database level which is associated with azure active directory 【发布时间】:2021-04-06 00:45:10 【问题描述】:

我的要求我有 20 个用户都配置在 azure Active Directory 资源组中。 我有一个 Azure SQL Server,我有 3 个 Azure SQL 数据库,例如 Dev、QA 和 UAT 在 Active Directory 中配置了 20 个用户,我在每个数据库级别需要不同的访问权限,有些人只需要读取权限,有些人需要读写权限,等等。 请帮助我做到这一点。 是否可以在每个数据库级别为 Azure Active Directory 用户创建具有不同角色的用户组? 用户可以使用 azure Active Directory 凭据登录 SSMS,但每个用户在每个数据库中具有不同的访问权限

【问题讨论】:

【参考方案1】:

您可以在 AAD 中创建组并分别为组/用户提供对数据库的访问权限。

在各个数据库中执行以下查询: 1) CREATE USER [GroupName] FROM EXTERNAL PROVIDER 或 从外部提供商创建用户 [xyz@abc.com]

2) exec sp_addrolemember 'db_datareader', '' 或 根据您要分配的角色执行 sp_addrolemember 'dbowner'、'' 等。

注意: 由于用户不是在服务器级别直接在数据库级别创建的,因此在尝试通过 SSMS 连接时,

明确输入数据库名称。

【讨论】:

【参考方案2】:

根据我的经验,您需要在每个数据库中手动配置具有不同权限或数据库角色的 AAD 用户。

另外,您需要使用 Azure AD admin 帐号连接 Azure SQL,只有 admin 帐号才能对每个数据库进行操作。

例如,AAD 用户之一'aa@abc.com' 只需要在数据库 Dev 中具有读取权限,但在数据库 QA 和 UAT 中需要读取/写入权限。用户“bb@abc.com”需要数据库“Dev”中的读/写权限以及“QA”和“UAT”中的读权限。在每个数据库中,不同的用户被派生到两个角色。那么我们就不能在每个数据库中为这些AAD用户配置组级权限了。

这样做之后,您的 AAD 组中的所有用户将在不同的数据库中拥有不同的权限。使用 SSMS 连接数据库时,当前用户可以看到他有权访问的所有数据库。您也可以像@Nandan 所说的那样在 SSMS 连接属性中选择特定的数据库。

HTH。

【讨论】:

以上是关于如何在与 Azure Active Directory 关联的 Azure SQL 数据库级别创建不同的资源组的主要内容,如果未能解决你的问题,请参考以下文章

尝试从 Azure AD 获取访问令牌时获取响应代码 400

在与 Windows Azure 服务的对话中识别特定声音

如何从 Azure Active Directory 检索用户信息

Azure Active Directory 如何支持将 Okta 作为 IDP 进行联合?

如何将 VSTS 帐户连接到 Azure Active Directory

如何使用 Azure Active Directory 设置 Ocelot Api 网关