授予用户CREATE/ALTER权限

3

我如何仅向数据库特定用户(开发人员)授予Procedures/FunctionsCREATE/ALTER权限,而不允许他们创建/更改/删除表格或其他功能呢?是否有可能实现这一点?


https://learn.microsoft.com/en-us/sql/t-sql/statements/grant-database-permissions-transact-sql?view=sql-server-2017 - Ivan Starostin
2个回答

0

你可以尝试以下方法:

创建一个角色

    CREATE ROLE [user_dev] AUTHORIZATION db_securityadmin;
    GO



    GRANT CREATE PROCEDURE TO [user_dev];
    GRANT SELECT, INSERT, UPDATE, DELETE, ALTER, EXECUTE, VIEW DEFINITION ON SCHEMA::dbo TO [user_dev]

创建用户并登录以进行测试,并将其添加到user_dev角色中。
    CREATE LOGIN test WITH PASSWORD = 'dfgdfg' 
    CREATE USER test 
    EXEC sp_addrolemember @rolename = 'user_dev', @membername = 'test';
    GO

然后创建一个触发器,限制 user_dev 角色创建表和删除表

    CREATE TRIGGER tr_db_DenyDropAlterTable
    ON DATABASE 
    FOR DROP_TABLE, ALTER_TABLE 
    AS 
    BEGIN 
       IF IS_MEMBER('user_dev') = 1 
       BEGIN 
           PRINT 'Not allowed'; 
           ROLLBACK TRAN; 
       END; 
    END; 
    GO

1
绝对不安全允许非管理员用户在另一个用户拥有的模式中创建对象。例如,对于存储过程,用户可以使用EXECUTE AS OWNER创建存储过程并以模式所有者身份运行代码。 - David Browne - Microsoft

-1

尝试这个解决方案 从MSQL Server Management Studio打开数据库安全性 在此输入图片描述

然后

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接