在数据库级别上授予的ALTER权限似乎允许授予它的主体在数据库中创建安全主体。
考虑下面的例子:
/* setup database */
CREATE DATABASE MyNewDB
GO
USE MyNewDB
GO
/* create a login and user and then grant ALTER permissions */
CREATE LOGIN MyLogin WITH PASSWORD = 'My57r0ngp455w0rd'
CREATE USER MyUser FOR LOGIN MyLogin
GRANT ALTER TO MyUser
GO
/* running as our new user which only has ALTER permissions, create a user and a role */
EXECUTE AS LOGIN = 'MyLogin'
CREATE USER UserCreatedByMyLogin FOR LOGIN SomeOtherLogin
CREATE ROLE RoleCreatedByMyLogin
ALTER ROLE RoleCreatedByMyLogin ADD MEMBER UserCreatedByMyLogin
REVERT
/* verify success */
SELECT USER_NAME(role_principal_id),
USER_NAME(member_principal_id)
FROM sys.database_role_members
WHERE role_principal_id = USER_ID('RoleCreatedByMyLogin') AND
member_principal_id = USER_ID('UserCreatedByMyLogin') 用户MyUser能够创建一个用户,一个角色,然后将该用户添加到该角色中,仅使用ALTER权限。
改变文件态
ALTER赋予了更改特定安全的属性(所有权除外)的能力。当授予作用域时,alter还赋予更改、创建或删除包含在该作用域中的任何安全性的能力。例如,对架构的alter权限包括从架构创建、更改和删除对象的能力。
要求更改数据库上的任何用户权限。
需要对数据库或db_securityadmin固定数据库角色的成员资格创建角色权限。
因此,这些文档似乎都没有勾勒出我在上面看到的行为。这是个窃听器还是我漏掉了什么?
发布于 2021-11-18 21:54:48
alter还赋予更改、创建或删除包含在该范围内的任何安全的能力。
用户是数据库作用域安全的(请参阅文件中的表格),因此GRANT ALTER将CREATE USER权限授予包含数据库的安全。
https://dba.stackexchange.com/questions/302855
复制相似问题