如何在与 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
如何从 Azure Active Directory 检索用户信息
Azure Active Directory 如何支持将 Okta 作为 IDP 进行联合?