将用户添加到db\u accessadmin而不添加到db\u owner的权限

bnl4lu3b  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(447)

我有一个客户有一个总公司和多个外地办事处。
我想授予总部的几个人,谁是sqlazure包含的用户,权限将成为一个“管理lite”。具体来说,我希望他们能够创建用户,并使他们处于/活动状态(使用grant或revoke connect)。
我还希望他们能够指派其他人担任同样的“管理员lite”角色-然后他们可以在每个分支机构中指定一个人来创建和管理自己的用户(人员流动率相当高)。
我将总部的第一个“管理人员”分为以下两个角色:
db\u accessadmin-这样他们就可以创建新用户并发出grant或revoke connect语句
db\u securityadmin-这样他们就可以将新用户分配给相应的角色
顺便说一句,它们只需要能够将标准用户分配给自定义角色,而不是内置角色。
然而,我已经能够使这些总部的第一个“管理lites”,因为我是一个成员的db\u业主。如前所述,我希望他们能够为他们的外地办事处同样-但我不想使总部管理的成员db\u业主,因为这也让他们允许任何其他人db\u业主太多。
所以,问题是,我是否可以创建一个自定义角色,该角色具有将用户添加到db\u accessadmin和db\u securityadmin的权限,而不让他们成为db\u所有者?我是否可以创建一个自定义角色,该角色的权限与db\u accessadmin和db\u security admin相同,这样做可能更简单?
谢谢

hk8txs48

hk8txs481#

如果我没有错的话,您希望创建一个角色,该角色模仿db\u accessadmin+db\u securityadmin组合的相同功能,但同时您不希望成员成为db\u owner的成员。
下面是一个名为fieldofficeadmin的角色,它也执行相同的操作。

CREATE ROLE FieldOfficeAdmin 

 /* db_accessadmin permissions */
 GRANT CONNECT to FieldOfficeAdmin ;  
 GRANT ALTER ANY USER to FieldOfficeAdmin ;  

 /* db_securityadmin permissions */
 GRANT CREATE SCHEMA to FieldOfficeAdmin ;  
 GRANT ALTER ANY ROLE to FieldOfficeAdmin ;  
 GRANT CREATE ROLE to FieldOfficeAdmin ;  
 GRANT ALTER ANY APPLICATION ROLE to  FieldOfficeAdmin ;  
 GRANT VIEW DEFINITION to FieldOfficeAdmin ;

将任何用户添加到此角色,他们将能够进一步创建更多用户并将其作为成员添加到同一角色

CREATE USER fieldofficeadmin1 WITH PASSWORD = 'enterStrongPassword@1234';
 GO

 ALTER ROLE FieldOfficeAdmin ADD MEMBER fieldofficeadmin1

以fieldofficeadmin1身份登录时,可以创建更多用户并将其添加到角色中

CREATE USER fieldofficeadmin2 WITH PASSWORD = 'enterStrongPassword@1234';
 GO

 ALTER ROLE FieldOfficeAdmin ADD MEMBER fieldofficeadmin2

但当您以fieldofficeadmin1身份登录并尝试向db\u所有者添加成员时

ALTER ROLE db_owner ADD MEMBER FieldOfficeAdmin2

它应该失败,错误如下

Failed to execute query. Error: Cannot add the principal 'FieldOfficeAdmin2', because it does not exist or you do not have permission.

请让我知道,如果你有任何进一步的问题,或如果我解释你的要求不正确。

相关问题