【问题标题】:Grant CREATE/ALTER permission to user向用户授予 CREATE/ALTER 权限
【发布时间】:2022-02-23 03:06:50
【问题描述】:

我如何才能仅将Procedures/FunctionsCREATE/ALTER 权限授予数据库的特定用户(开发人员)。我不想让他们使用Create/Alter/Drop 表或任何其他功能。 这可能吗?

【问题讨论】:

标签: sql-server


【解决方案1】:

试试这个解决方案 从 msql server management studio 打开数据库安全

然后

【讨论】:

    【解决方案2】:

    你试试下面的方法

    创建角色

        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
    

    【讨论】:

    • 允许非管理员用户在另一个用户拥有的模式中创建对象是永远安全的。例如,对于存储过程,用户可以使用 EXECUTE AS OWNER 创建一个存储过程,并以模式所有者身份运行代码。
    猜你喜欢
    • 2015-11-27
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多