【问题标题】:Permission to add user to db_accessadmin without adding to db_owner将用户添加到 db_accessadmin 而不添加到 db_owner 的权限
【发布时间】:2020-07-31 14:47:27
【问题描述】:

我有一个客户,有一个总部和多个外地办事处。

我想授予几个总部人员,他们是包含 SQL Azure 的用户,将权限变为“admin-lite”。具体来说,我希望他们能够创建用户,并使他们处于活动状态(使用 GRANT 或 REVOKE CONNECT)。

我还希望他们能够将其他人分配到相同的“管理员精简版”角色 - 然后他们可以在每个分支机构中提名一个可以创建和管理自己的用户的人(有相当高的流动率工作人员)。

我使总公司的第一个“admin-lites”成为这两个角色的成员:

  • db_accessadmin - 这样他们就可以创建新用户并发出 GRANT 或 REVOKE CONNECT 语句
  • db_securityadmin - 这样他们就可以将新用户分配给适当的角色

顺便说一句,他们只需要能够将标准用户分配给自定义角色,而不是内置角色。

但是,由于我是 db_owners 的成员,所以我能够将这些总部中的第一个“admin-lites”设为“admin-lites”。如前所述,我希望他们能够为他们的外地办事处做同样的事情——但我不想让总部管理员成为 db_owners 的成员,因为这也允许他们让其他任何人也成为 db_owner。

所以,问题是,我是否可以创建一个自定义角色,该角色有权将人员添加到 db_accessadmin 和 db_securityadmin 而他们不是 db_owner?我是否可以创建一个与 db_accessadmin 和 db_security admin 具有相同权限的自定义角色,以简化此操作?

谢谢

【问题讨论】:

    标签: sql permissions azure-sql-database


    【解决方案1】:

    如果我没记错的话,你想创建一个角色,它模仿 db_accessadmin + db_securityadmin 组合的相同功能,但同时你不希望成员成为 db_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_owner 添加成员时

     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.
    

    如果您有任何其他问题或我对您的要求的解释有误,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2010-12-23
      • 2021-06-19
      • 2018-06-03
      相关资源
      最近更新 更多