当前位置: 首页 > news >正文

太湖手机网站建设静态网站开发课程网

太湖手机网站建设,静态网站开发课程网,免费开发平台网站,wordpress分享后查看SQL Server中通用数据库角色权限的处理详解 前言 安全性是所有数据库管理系统的一个重要特征。理解安全性问题是理解数据库管理系统安全性机制的前提。 最近和同事在做数据库权限清理的事情#xff0c;主要是删除一些账号#xff1b;取消一些账号的较大的权限等#xff0c;例…SQL Server中通用数据库角色权限的处理详解 前言 安全性是所有数据库管理系统的一个重要特征。理解安全性问题是理解数据库管理系统安全性机制的前提。 最近和同事在做数据库权限清理的事情主要是删除一些账号取消一些账号的较大的权限等例如有一些有db_owner权限我们取消账号的数据库角色db_owner授予最低要求的相关权限。但是这种工作完全是一个体力活而且是吃力不讨好而且推进很慢。另外为了管理方便和细化我们又在常用的数据库角色外新增了6个通用的数据库角色。 如下截图所示。   另外为了减少授权工作量和一些重复的体力活我们创建了一个作业每天定期执行一个存储过程db_common_role_grant_rigths这个存储过程的逻辑如下     1遍历所有用户数据库排除了系统数据库以及一些特殊数据库发现该数据库不存在这些通用数据库角色那么就创建相关数据库角色。     2遍历所有用户数据库为相关数据库角色授权例如如果发现某个新增的存储过程没有授权给db_procedure_execute数据库角色。那么就执行授权操作。 当然目前还在测试、应用阶段以后会根据具体相关需求不断完善相关功能。   -- --  ScriptName   :   db_common_role_grant_rigths.sql --  Author    :    --  CreateDate   :   2018-09-13 --  Description   :   创建数据库角色db_procedure_execute等并授予相关权限给角色。 --  Note     :   /******************************************************************************************************************   Parameters    :         参数说明 ********************************************************************************************************************     RoleName   :   角色名 ********************************************************************************************************************  Modified Date Modified User  Version     Modified Reason ********************************************************************************************************************  2018-09-12     V01.00.00  新建该脚本。  2018-09-12     V01.00.01  注意ROWCOUNT的生效范围;解决循环逻辑问题。  2018-09-26     V01.00.02  修正类型为FT(CLR_TABLE_VALUED_FUNCTION)的函数问题。程序集 (CLR) 表值函数 *******************************************************************************************************************/ -- USE YourSQLDba; GO       IF EXISTS (SELECT 1 FROM sys.procedures WHERE typeP AND namedb_common_role_grant_rigths) BEGIN  DROP PROCEDURE Maint.db_common_role_grant_rigths; END GO    CREATE PROCEDURE Maint.db_common_role_grant_rigths AS BEGIN    DECLARE database_id INT; DECLARE database_name sysname; DECLARE cmdText  NVARCHAR(MAX); DECLARE prc_text  NVARCHAR(MAX); DECLARE RowIndex  INT;    IF OBJECT_ID(TempDB.dbo.#databases) IS NOT NULL  DROP TABLE dbo.#databases;    CREATE TABLE #databases (  database_id  INT,  database_name sysname )    IF OBJECT_ID(TempDB.dbo.#sql_text) IS NOT NULL  DROP TABLE dbo.#sql_text;       CREATE TABLE #sql_text (  sql_id  INT IDENTITY(1,1),  sql_cmd  NVARCHAR(MAX) )    INSERT INTO #databases SELECT database_id ,   name FROM sys.databases WHERE name NOT IN ( master, tempdb, model, msdb,       distribution, ReportServer,       ReportServerTempDB, YourSQLDba )   AND state 0; --state_descONLINE       --开始循环每一个用户数据库排除了上面相关数据库 WHILE 1 1 BEGIN        SELECT TOP 1 database_name database_name  FROM #databases  ORDER BY database_id;        IF ROWCOUNT 0   BREAK;     --PRINT(database_name);     -- SP_EXECUTESQL 中切换数据库不能当参数传入。     --创建数据库角色db_procedure_execute  SET cmdText USE database_name ; CHAR(10)     SELECT cmdText IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name db_procedure_execute)       BEGIN        CREATE ROLE [db_procedure_execute] AUTHORIZATION [dbo];       END CHAR(10);           --创建数据库角色db_function_execute  SELECT cmdText IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name db_function_execute)       BEGIN        CREATE ROLE [db_function_execute] AUTHORIZATION [dbo];       END CHAR(10);        --创建数据库角色db_view_table_definition  SELECT cmdText IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name db_view_table_definition)       BEGIN        CREATE ROLE [db_view_table_definition] AUTHORIZATION [dbo];       END CHAR(10);     --创建数据库角色db_view_view_definition  SELECT cmdText IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name db_view_view_definition)        BEGIN        CREATE ROLE [db_view_view_definition] AUTHORIZATION [dbo];        END CHAR(10);     --创建数据库角色db_view_procedure_definition  SELECT cmdText IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name db_view_procedure_definition)       BEGIN        CREATE ROLE [db_view_procedure_definition] AUTHORIZATION [dbo];       END CHAR(10);      --创建数据库角色db_view_function_definition  SELECT cmdText IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name db_view_function_definition)       BEGIN        CREATE ROLE [db_view_function_definition] AUTHORIZATION [dbo];       END CHAR(10);     --PRINT cmdText;  -- EXECUTE SP_EXECUTESQL cmdText;  EXECUTE (cmdText);           --给角色db_procedure_execute授权     SET cmdText USE QUOTENAME(database_name) ;     SET cmdText INSERT INTO #sql_text(sql_cmd)      SELECT GRANT EXECUTE ON SCHEMA_NAME(schema_id) .        QUOTENAME(name) TO db_procedure_execute;       FROM sys.procedures s       WHERE  NOT EXISTS ( SELECT 1             FROM sys.database_permissions p             WHERE p.major_id s.object_id              AND p.grantee_principal_id USER_ID(db_procedure_execute));   EXECUTE SP_EXECUTESQL cmdText;               --给角色db_function_execute(标量函数授权)      SET cmdText USE QUOTENAME(database_name) ;      SET cmdText INSERT INTO #sql_text(sql_cmd)       SELECT GRANT EXEC ON SCHEMA_NAME(schema_id) . QUOTENAME(name) TO db_function_execute;       FROM sys.all_objects s       WHERE SCHEMA_NAME(schema_id) NOT IN (sys, INFORMATION_SCHEMA)       AND NOT EXISTS ( SELECT 1             FROM sys.database_permissions p             WHERE p.major_id s.object_id             AND p.grantee_principal_id USER_ID(db_function_execute) )             AND ( s.[type] FN               OR s.[type] AF               OR s.[type] FS               --OR s.[type] FT              ) ;   EXECUTE SP_EXECUTESQL cmdText;            --给角色db_function_execute(表值函数授权)   SET cmdText USE database_name ;      SET cmdText INSERT INTO #sql_text(sql_cmd)       SELECT GRANT SELECT ON SCHEMA_NAME(schema_id) . QUOTENAME(name) TO db_function_execute;       FROM sys.all_objects s       WHERE SCHEMA_NAME(schema_id) NOT IN (sys, INFORMATION_SCHEMA)        AND NOT EXISTS ( SELECT 1             FROM sys.database_permissions p             WHERE p.major_id s.object_id              AND p.grantee_principal_id USER_ID(db_function_execute))          AND ( s.[type] TF           OR s.[type] IF        ) ;      EXECUTE SP_EXECUTESQL cmdText;         --查看存储过程定义授权   SET cmdText USE database_name ;      SET cmdText INSERT INTO #sql_text(sql_cmd)       SELECT GRANT VIEW DEFINITION ON SCHEMA_NAME(schema_id) .        QUOTENAME(name) TO db_view_procedure_definition;       FROM sys.procedures s       WHERE  NOT EXISTS ( SELECT 1             FROM sys.database_permissions p             WHERE p.major_id s.object_id              AND p.grantee_principal_id USER_ID(db_view_procedure_definition))      EXECUTE(cmdText);      --查看函数定义的授权   SET cmdText USE database_name ;      SELECT cmdText INSERT INTO #sql_text(sql_cmd)        SELECT GRANT VIEW DEFINITION ON SCHEMA_NAME(schema_id) .         QUOTENAME(name) TO db_view_function_definition;        FROM sys.objects s        WHERE type_desc IN (SQL_SCALAR_FUNCTION, SQL_TABLE_VALUED_FUNCTION,          AGGREGATE_FUNCTION )          AND NOT EXISTS ( SELECT 1             FROM sys.database_permissions p             WHERE p.major_id s.object_id              AND p.grantee_principal_id USER_ID(db_view_function_definition));      EXECUTE SP_EXECUTESQL cmdText;         --查看表定义的授权   SET cmdText USE database_name ;      SET cmdText INSERT INTO #sql_text(sql_cmd)       SELECT GRANT VIEW DEFINITION ON SCHEMA_NAME(schema_id) .        QUOTENAME(name) TO db_view_table_definition ;       FROM sys.tables s       WHERE NOT EXISTS ( SELECT 1             FROM sys.database_permissions p             WHERE p.major_id s.object_id              AND p.grantee_principal_id USER_ID(db_view_table_definition));      EXECUTE SP_EXECUTESQL cmdText;         --查看视图定义的授权   SET cmdText USE database_name ;      SET cmdText INSERT INTO #sql_text(sql_cmd)       SELECT GRANT VIEW DEFINITION ON SCHEMA_NAME(schema_id) .          QUOTENAME(name) TO db_view_view_definition;       FROM sys.views s       WHERE NOT EXISTS ( SELECT 1             FROM sys.database_permissions p             WHERE p.major_id s.object_id              AND p.grantee_principal_id USER_ID(db_view_view_definition));      EXECUTE SP_EXECUTESQL cmdText;            WHILE 1 1   BEGIN              SELECT TOP 1 RowIndexsql_id, cmdText USE database_name ; sql_cmd FROM #sql_text ORDER BY sql_id;       IF ROWCOUNT 0     BREAK;           PRINT(cmdText);    EXECUTE(cmdText);       DELETE FROM #sql_text WHERE sql_id RowIndex         END            DELETE FROM #databases WHERE database_namedatabase_name; END       DROP TABLE #databases;   DROP TABLE #sql_text;    END  转载于:https://www.cnblogs.com/scwbky/p/10026938.html
http://www.zqtcl.cn/news/206630/

相关文章:

  • 开发网站的意义百度推广计划
  • 网站设计师网站网站建设从入门到精通pdf
  • 游戏网站建设方案百度文库wordpress调用搜索框
  • 京东物流网站建设特点网站开发与维护岗位说明书
  • 制作一个网站的基本步骤星巴克网站建设ppt
  • 搭建企业网站宽带多大php微信公众号开发教程
  • 国家建设公债拍卖网站新手如何自己建网站
  • 网站建设颊算网站注册界面代码
  • 微信h5网站模板下载百姓网征婚
  • 模板网站和插件有哪些河南第一火电建设公司网站
  • 怎么测网站流量吗网络运维工程师教程
  • 有谁帮做网站网站建设seo合同书
  • 自己做视频网站只能用地址连接专业网站建设效果
  • 重庆网站建设价格费用酒店协会网站集静态模板
  • 会议专题网站建设报价单网站代码在哪里修改
  • 怎么用net123做网站怎么给企业制作网站
  • 网站建设合同模板网页设计团队
  • 做排行的网站淘宝流量平台
  • 用dw怎么做网站后台做一个网站需要怎么做
  • 沧州地区阿里巴巴做网站修改wordpress标题图片
  • 怎么判断网站开发语言互联网推广模式
  • 做电影网站被找版权问题怎么处理网站做的简单是什么意思
  • 九江网站建设网站制作深圳seo优化服务商
  • 上海网站推广珈维做映射后 内网无法通过域名访问网站
  • 太原网站关键词优化常州企业网站建设公司
  • 网站开发流程详细步骤不用淘宝客api如何做网站
  • xuzhou网站制作wordpress漫画小说
  • 公司建设网站的通知书百度经验官网入口
  • 如何做产品网站的推广静态网页制作总结
  • 网站建设有哪些知识点wordpress 静态