亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SQL Server中通用數(shù)據(jù)庫角色權(quán)限的處理詳解

2024-08-31 01:05:27
字體:
供稿:網(wǎng)友

前言

安全性是所有數(shù)據(jù)庫管理系統(tǒng)的一個重要特征。理解安全性問題是理解數(shù)據(jù)庫管理系統(tǒng)安全性機制的前提。

最近和同事在做數(shù)據(jù)庫權(quán)限清理的事情,主要是刪除一些賬號;取消一些賬號的較大的權(quán)限等,例如,有一些有db_owner權(quán)限,我們?nèi)∠~號的數(shù)據(jù)庫角色db_owner,授予最低要求的相關(guān)權(quán)限。但是這種工作完全是一個體力活,而且是吃力不討好,而且推進很慢。另外,為了管理方便和細化,我們又在常用的數(shù)據(jù)庫角色外,新增了6個通用的數(shù)據(jù)庫角色。

如下截圖所示。

SQLServer,數(shù)據(jù)庫,角色權(quán)限

另外,為了減少授權(quán)工作量和一些重復(fù)的體力活,我們創(chuàng)建了一個作業(yè),每天定期執(zhí)行一個存儲過程db_common_role_grant_rigths,這個存儲過程的邏輯如下:

    1:遍歷所有用戶數(shù)據(jù)庫(排除了系統(tǒng)數(shù)據(jù)庫以及一些特殊數(shù)據(jù)庫),發(fā)現(xiàn)該數(shù)據(jù)庫不存在這些通用數(shù)據(jù)庫角色,那么就創(chuàng)建相關(guān)數(shù)據(jù)庫角色。

    2:遍歷所有用戶數(shù)據(jù)庫,為相關(guān)數(shù)據(jù)庫角色授權(quán),例如,如果發(fā)現(xiàn)某個新增的存儲過程,沒有授權(quán)給db_procedure_execute數(shù)據(jù)庫角色。那么就執(zhí)行授權(quán)操作。

當(dāng)然目前還在測試、應(yīng)用階段,以后會根據(jù)具體相關(guān)需求,不斷完善相關(guān)功能。

--==================================================================================================================--  ScriptName   :   db_common_role_grant_rigths.sql--  Author    :   瀟湘隱者 --  CreateDate   :   2018-09-13--  Description   :   創(chuàng)建數(shù)據(jù)庫角色db_procedure_execute等,并授予相關(guān)權(quán)限給角色。--  Note     :   /******************************************************************************************************************  Parameters    :         參數(shù)說明********************************************************************************************************************    @RoleName   :   角色名******************************************************************************************************************** Modified Date Modified User  Version     Modified Reason******************************************************************************************************************** 2018-09-12  瀟湘隱者   V01.00.00  新建該腳本。 2018-09-12  瀟湘隱者   V01.00.01  注意@@ROWCOUNT的生效范圍;解決循環(huán)邏輯問題。 2018-09-26  瀟湘隱者   V01.00.02  修正類型為FT(CLR_TABLE_VALUED_FUNCTION)的函數(shù)問題。程序集 (CLR) 表值函數(shù)*******************************************************************************************************************/--===================================================================================================================USE YourSQLDba;GO  IF EXISTS (SELECT 1 FROM sys.procedures WHERE type='P' AND name='db_common_role_grant_rigths')BEGIN DROP PROCEDURE Maint.db_common_role_grant_rigths;ENDGO CREATE PROCEDURE Maint.db_common_role_grant_rigthsASBEGIN 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 #databasesSELECT database_id ,  nameFROM sys.databasesWHERE name NOT IN ( 'master', 'tempdb', 'model', 'msdb',      'distribution', 'ReportServer',      'ReportServerTempDB', 'YourSQLDba' )  AND state = 0; --state_desc=ONLINE   --開始循環(huán)每一個用戶數(shù)據(jù)庫(排除了上面相關(guān)數(shù)據(jù)庫)WHILE 1= 1BEGIN   SELECT TOP 1 @database_name= database_name  FROM #databases ORDER BY database_id;   IF @@ROWCOUNT =0   BREAK;  --PRINT(@database_name);  -- SP_EXECUTESQL 中切換數(shù)據(jù)庫不能當(dāng)參數(shù)傳入。  --創(chuàng)建數(shù)據(jù)庫角色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);    --創(chuàng)建數(shù)據(jù)庫角色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);   --創(chuàng)建數(shù)據(jù)庫角色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);  --創(chuàng)建數(shù)據(jù)庫角色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);  --創(chuàng)建數(shù)據(jù)庫角色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);   --創(chuàng)建數(shù)據(jù)庫角色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授權(quán)  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(標量函數(shù)授權(quán))   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(表值函數(shù)授權(quán))  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;    --查看存儲過程定義授權(quán)  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);   --查看函數(shù)定義的授權(quán)  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;    --查看表定義的授權(quán)  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;    --查看視圖定義的授權(quán)  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 @RowIndex=sql_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_name=@database_name;END    DROP TABLE #databases;  DROP TABLE #sql_text; END

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到MSSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
欧美一区午夜精品| 欧美日本网站| 亚洲欧美综合区自拍另类| 丝袜美腿亚洲一区二区图片| 国产精品久久久久av电视剧| 秋霞蜜臀av久久电影网免费| 天天色天天看| 四虎海外永久免费网址| 国产欧美在线看| 中文字幕在线观看免费| 青檬在线电视剧在线观看| 国产伦精品一区二区三区| 天堂中文av在线资源库| 天干天干啦夜天干天2019| 69久久夜色精品国产69蝌蚪网| 天天av天天爽| 精品国产第一福利网站| 午夜爽爽视频| 调教视频在线观看| 国产精品国产亚洲精品看不卡| 日韩电影免费观看高清完整版在线观看| 18岁以下禁止观看的美女视频| 日韩精品人妻中文字幕有码| 一级毛片精品毛片| 国产91美女视频| 一区二区av| 天天做天天干天天操| 亚洲色图一区二区| 国产精品久久777777| 欧美精品麻豆| 亚洲深夜福利网站| 亚洲欧美国产一区二区三区| 午夜影院久久久| 免费在线不卡视频| 午夜两性免费视频| 91免费看网站| 极品魔鬼身材女神啪啪精品| 国产一级免费观看| 亚洲国产一区二区三区在线播| 日本在线成人一区二区| 亚洲美女久久久| 奇米精品一区二区三区在线观看一| 欧美一区二区在线不卡| 在线观看av每日更新免费| 国产又猛又黄又爽| 中文字幕亚洲国产| 日韩精品一区二区三区电影| 国产亚洲一区二区在线| 毛片毛片毛片毛片毛片毛片| 久久久999精品免费| 日韩av网址大全| 97av免费视频| 国产伦精品一区二区三区在线观看| 一二三区不卡| 亚洲精品美女久久久| 亚洲精品资源美女情侣酒店| 日本理论片午伦夜理片在线观看| 波多野结衣在线一区| 国产白丝网站精品污在线入口| 欧美亚洲国产怡红院影院| 欧美精品日日鲁夜夜添| 啪啪亚洲精品| 亚洲系列另类av| 美女与牲口做爰视频在线观看| 麻豆一区二区三区在线观看| 四虎影音在线| 久久久久久久久久久一区| 日本高清免费观看| 欧美激情在线| 一本色道综合亚洲| 91免费国产网站| 亚洲av成人无码久久精品| 24小时免费看片在线观看| 亚洲精品久久久久久久久久久久久| 精品久久久久久中文字幕人妻最新| 欧美精品一区二区高清在线观看| 久久亚洲资源| 成人性做爰aaa片免费看不忠| av日韩中文| 中文字幕在线久热精品| 日韩在线不卡视频| 一二三在线视频社区| youjizzxxxx18| 久久综合久久色| 日韩电影在线一区| 成年人网站在线观看免费| 久久精品99国产精品日本| 天天干在线影院| 午夜精品久久久久久久久久久久| 日本视频三区| 久久精品一区二区三区中文字幕| 国产一级片网站| 俺去啦最新地址| 影音先锋欧美激情| 中文字幕在线观看网站| 国产一级特黄a大片免费| 中文在线免费| 91免费看片在线观看| 99re热这里只有精品免费视频| 亚洲黄色成人久久久| 日本午夜视频| 国内自拍视频一区二区三区| 国产精品30p| 国产 日韩 欧美 综合 一区| 五月花成人网| 欧美tickling网站挠脚心| 成年人黄色大片在线| 国产又大又黄又粗又爽| 99久久99久久精品国产片果冻| 欧美老**bbbb毛片| 国产成人强伦免费视频网站| 欧美国产日韩一区二区在线观看| 成人自拍视频网| 国产精品日韩在线播放| 成人黄色综合网站| 亚洲欧美一区二区三区极速播放| 亚洲欧美日韩国产手机在线| 欧美精品麻豆| 亚洲人成伊人成综合图片| 国产精品三级电影| 欧美freesex交免费视频| 午夜国产一级| 日本xxx免费| 国产一区二区免费在线| 91免费高清视频| av在线不卡观看| 2020国内自拍视频| 久久不射热爱视频精品| 久久99精品国产.久久久久久| 国产精品无码一区二区三| 国产对白videos麻豆高潮| 日韩美女视频一区二区在线观看| 欧美韩日精品| 久久网福利资源网站| 三级久久三级久久| 日本欧洲国产一区二区| 国产成人精品亚洲男人的天堂| 国产特级黄色片| 91抖音在线观看| 欧美深夜视频| 久久在线视频免费观看| 免费在线视频观看| 亚洲男人第一av网站| shkd中文字幕久久在线观看| 亚洲综合在线小说| 日韩在线a电影| 丰满人妻一区二区三区四区| 亚洲精品日韩综合观看成人91| 日韩高清不卡一区二区三区| 少妇丰满尤物大尺度写真| 无码av免费一区二区三区试看| 在线天堂资源www在线污| 国产精品免费无遮挡无码永久视频| 欧美视频在线视频| 91超碰国产在线| 一级黄色在线观看| 欧美贵妇videos办公室| 在线观看xxxxvideo| 亚洲一二三区视频在线观看| 成人午夜激情视频| www.日本在线视频| ass极品水嫩小美女ass| 久久性生活视频| 国产欧美日韩在线观看视频| 68精品国产免费久久久久久婷婷| 亚洲爆乳无码精品aaa片蜜桃| 性欧美18~19sex高清播放| 中文字幕免费高清网站| 亚洲综合在线视频| 亚洲国产精品视频一区| 亚洲一卡2卡三卡4卡2021四卡| 国产玖玖精品视频| 久久精品理论片| 欧美黑人xxxxx| 国产精品臀控福利在线观看| 国产视频一区二区三区四区| 亚洲天堂网视频| julia京香一区二区三区| 人妻少妇精品一区二区三区| 亚洲美女www午夜| 91欧美在线视频| 一区二区三区人妻| 99亚洲乱人伦aⅴ精品| 蜜桃视频免费网站| 中文字幕成人精品久久不卡| 精品一级少妇久久久久久久| 精品视频一区二区观看| 日韩在线视频一区| 亚洲无线一线二线三线区别av| 国产精品水嫩水嫩| 国产成人精品三级高清久久91| 精品美女在线观看| 国产精品91在线| 亚洲欧美日韩综合一区| 国产大学生校花援交在线播放| 69xxxx欧美| 成人综合社区| 麻豆影视在线播放| 豆国产97在线|亚洲| 亚洲mv在线看| 国产精品v片在线观看不卡| 欧美videos另类齐全| 天堂va蜜桃一区二区三区漫画版| 中文字幕乱码日本亚洲一区二区| 国产精品69一区二区三区| 99久免费精品视频在线观看| 最新日韩在线视频| 亚洲视频狠狠干| 亚洲国产日韩一区二区| 久久久久久久综合日本| 99中文字幕在线观看| 国产农村老头老太视频| 欧美/亚洲一区| 少妇久久久久久被弄到高潮| 波多野结衣家庭教师在线| 日本久久久a级免费| 欧美亚洲黄色| 亚洲国产精品精华液2区45| 成人国产精品一区| 欧美日韩mp4| 国模吧精品人体gogo| 精品视频中文字幕| 38少妇精品导航| 日本一二三区视频在线| 国产日韩欧美一区二区三区综合| 在线看视频不卡| 在线播放国产一区二区三区| 亚洲精品在线影院| 久久在线视频| 青青视频在线免费观看| 国产精品7m凸凹视频分类| 香港成人在线视频| 久久亚洲影音av资源网| 香港欧美日韩三级黄色一级电影网站| 中文字幕一区二区日韩精品绯色| 日本欧美一区二区| 男人天堂手机在线| 国产精品美女久久久久人| 国语精品一区| 天天操天天爱天天爽| 免费网站在线观看人| 五月天婷亚洲天综合网鲁鲁鲁| 91av在线免费视频| 久久久久久久999精品视频| 成人中文在线| 国产情侣一区| 精品呦交小u女在线| 精品在线一区二区| 高潮一区二区| 蜜臀视频一区二区三区| 美女在线视频一区| 99热这里只有精品9| 国产一区在线免费观看| 91精品视频网站| 久久亚洲人体| 丝袜视频国产在线播放| 肉色超薄丝袜脚交一区二区| 国产91富婆露脸刺激对白| 亚洲少妇中文在线| 国产一级片免费| 亚洲一区国产精品| 国产日韩一区二区三区| 草草影院第一页| 中文字幕亚洲成人| 欧美xxxxhdvideosex| jiuse九色最新地址| 久久免费视频观看| 大胆日韩av| 久久伊人一区| 国产亚洲欧美色| 亚洲qvod图片区电影| 国产麻豆成人传媒免费观看| 日本久久一级片| 国产3级在线观看| 在线激情影院一区| av电影在线观看完整版一区二区| 成人小电影网站| 成人性生交大片免费网站| 六月丁香激情网| 国产精品x453.com| 色婷婷一区二区三区在线观看| 亚洲一区二区三区在线视频| 精品视频一区二区| 欧美国产精品| 十大免费污污软件| 久久久久九九精品影院| 亚洲男子天堂网| 久久夜夜久久| www.成人在线观看| 国产 中文 字幕 日韩 在线| 久久综合视频网| 亚洲精品suv精品一区二区| 黄网址在线永久免费观看| 欧美日韩精品久久| 紧身裙女教师波多野结衣| 久久久午夜精品理论片中文字幕| 日韩欧亚中文在线| 北条麻妃久久精品| 国产精品久久久久久久久免费丝袜| jk破处视频在线| 亚洲人成电影在线播放| 成人mm视频在线观看| 在线观看亚洲大片短视频| 日本精品久久中文字幕佐佐木| 男男视频亚洲欧美| 亚洲激情在线| 中文在线资源在线| 成人看片爽爽爽| 国外男同性恋在线看| 国产精品va| 亚洲视频网在线直播| 中文日本高清免费| 成人一区二区三| 一区一区视频| 麻豆精品国产传媒| 欧美日韩视频专区在线播放| 中文字幕无线码| www.日韩在线观看| 精品人妻一区二区三区四区在线| 午夜在线精品| 久久久久99精品| 欧美性猛交xxxx免费看久久久| 日韩电影在线免费| 中文字幕人妻一区二区三区视频| 成人欧美一区二区三区视频网页| 一本一道久久a久久综合蜜桃| 欧美一二三四在线| 亚洲欧洲国产日本综合|