首页 > 解决方案 > SQL Azure 管理员用户可以创建其他管理员吗?

问题描述

我有一个使用 SQL Azure 数据库的客户端。

他们希望能够管理用户的创建和删除。

我是服务器管理员,并设置了初始 Azure 订阅。

我为他们创建了一个“管理员”用户,如下所示:

--On master
CREATE LOGIN TestAdmin
WITH PASSWORD = 'ThePassword'

CREATE USER TestAdmin 
FOR LOGIN TestAdmin

ALTER ROLE loginmanager
ADD MEMBER TestAdmin

--On UserDB
CREATE USER TestAdmin
FOR LOGIN TestAdmin

--Add to db_AccessAdmin
--so the admin can add or remove access to the database 

ALTER ROLE db_accessadmin   
ADD MEMBER TestAdmin

--For the admin, use the built-in roles
ALTER ROLE db_datareader
ADD MEMBER TestAdmin

ALTER ROLE db_datawriter
ADD MEMBER TestAdmin

GRANT EXECUTE
TO TestAdmin

--And allow the admin to make structural changes if required:
ALTER ROLE db_ddladmin
ADD MEMBER TestAdmin

--Allow Admin to manage role membership
ALTER ROLE db_securityadmin
ADD MEMBER TestAdmin

我创建了新管理员可以通过应用程序执行的代码,以允许该管理员创建一个新的“标准”用户,如下所示:

--ON User Database:
--To create new (non-admin) user 
CREATE USER TestUser WITH PASSWORD='P@ssw0rd!'
ALTER ROLE DBUser ADD MEMBER TestUser

注意:名为 DBUser 的角色是我创建的类似于 db_datareader 和 db_datawriter 组合的角色,因此我们不会使用这些内置角色,而不是管理员,并且可以根据需要授予更精确的权限.

这很好用,新用户可以做他们需要做的所有事情。

但是,他们希望新管理员能够创建新管理员....或不可能。

新管理员本质上需要运行与我在上面运行的代码相同的代码来创建 TestAdmin。

他们可以登录到 Master,然后运行:

CREATE LOGIN TestAdminsAdmin
WITH PASSWORD = 'ThePassword'

但是在 Master 上执行的下一行将是这样的:

CREATE USER TestAdminsAdmin 
FOR LOGIN TestAdminsAdmin

这失败了,因为“用户无权执行此操作。”。

我是否可以授予新管理员允许他们在 Master 上执行此操作的权限,或者这是“设计使然”的安全限制?

标签: sqlazure

解决方案


In Azure SQL database, the master database just has two roles dbmanager and loginmanager. One role has permissions to create and delete databases. The other role has permissions to create and delete logins in the master database. So if we want to creat user in the master database, we must use the admin account. For more details, please refer to here and here. enter image description here


推荐阅读