Sql-Server-2016
對數據庫的 ALTER 權限允許創建安全主體
似乎
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 權限包括從模式中創建、更改和刪除對象的能力。
需要對數據庫具有 ALTER ANY USER 權限。
CREATE ROLE狀態的文件
需要數據庫的 CREATE ROLE 權限或 db_securityadmin 固定數據庫角色的成員身份。
所以沒有任何文件似乎概述了我在上面看到的行為。這是一個錯誤,還是我錯過了什麼?
ALTER 還賦予更改、創建或刪除該範圍內包含的任何安全對象的能力。
USER 是數據庫範圍的安全對象(請參閱文件中的表),因此
CREATE USER
權限是由包含的安全對象授予的GRANT ALTER
。