zoukankan      html  css  js  c++  java
  • Chapter 3 Protecting the Data(3):创建和使用数据库角色

    原版的:http://blog.csdn.net/dba_huangzj/article/details/39639365。专题文件夹:http://blog.csdn.net/dba_huangzj/article/details/37906349

    未经作者同意,不论什么人不得以“原创”形式公布,也不得已用于商业用途。本人不负责不论什么法律责任。

            前一篇:http://blog.csdn.net/dba_huangzj/article/details/39577861

    前言:

    数据库层级的角色同意把数据库权限像server级别角色一样组合管理。你能够配置固定server角色,创建用户自己定义角色等。

    实现:

    1. 在SSMS中,进入某个数据库的节点。点击【安全性】。然后点击【数据库角色】节点:

    image

    固定角色 描写叙述
    db_accessadmin db_accessadmin 固定数据库角色的成员能够为 Windows 登录名、Windows 组和 SQL Server 登录名加入或删除数据库訪问权限。

    db_backupoperator db_backupoperator 固定数据库角色的成员能够备份数据库。
    db_datareader db_datareader 固定数据库角色的成员能够从全部用户表中读取全部数据。

    db_datawriter db_datawriter 固定数据库角色的成员能够在全部用户表中加入、删除或更改数据。
    db_denydatareader db_denydatareader 固定数据库角色的成员不能读取数据库内用户表中的不论什么数据。

    db_denydatawriter db_denydatawriter 固定数据库角色的成员不能加入、改动或删除数据库内用户表中的不论什么数据。

    db_owner db_owner 固定数据库角色的成员能够运行数据库的全部配置和维护活动,还能够删除数据库。

    db_securityadmin db_securityadmin 固定数据库角色的成员能够改动角色成员身份和管理权限。

    db_ddladmin db_ddladmin 固定数据库角色的成员能够在数据库中运行不论什么数据定义语言 (DDL) 命令。

    2. 假设加入成员到某个角色,能够双击这个角色,在【属性】页的【此角色的成员】中加入:

    image

    image

    3. 也能够使用T-SQL实现:

    ALTER ROLE db_accessadmin ADD MEMBER test;


    4. 假设须要创建自己定义角色。能够右键【数据库角色】节点然后选择【新建数据库角色】,输入角色名和拥有者,用于控制这个角色的全部权限。建议使用dbo或者留空。

    image

    5. 不要让GUI界面混淆了你,在【常规】页,有两个listboxes,第一个是【此角色拥有的架构】,列出了这个数据库的架构,在后面介绍。

    6. 如今忘记第一个listbox,并到第二个listbox,【此角色的成员】。能够加入角色成员。

    7. 然后到【安全对象】页,在这里能够选择安全对象,也能够用T-SQL实现:

    USE marketing; 
    CREATE ROLE ProspectManager; 
    ALTER ROLE  ProspectManager ADD MEMBER Fred; 
    GRANT INSERT, UPDATE, DELETE, SELECT ON dbo.Prospect TO ProspectManager; 
    GRANT INSERT, SELECT ON dbo.Contact TO ProspectManager;


    原理:

    固定角色同意授权全局权限到数据库的全部对象中,大部分时间里面,不须要使用db_datareader/db_datawriter。由于权限限制太少,而db_denydatareader/db_denydatawriter却非常实用,能够限制用户不同意訪问表、视图。

    全部用户都属于public数据库角色的成员,不能被移除,而db_owner角色的成员在数据库中以dbo用户的形式出现。

    能够使用以下语句查看某个登录名是否属于某个数据库角色的成员:

    SELECT IS_ROLEMEMBER ( 'ProspectManager', 'fred' );


    返回1的话代表Fred是ProspectManager角色的成员。

    很多其它:

    假设使用了WITH GRANT OPTION授权到Windows组中,那么这个角色的成员选哟在授权时使用ASkeyword。

    USE marketing; 
    CREATE USER fred WITHOUT LOGIN; 
    CREATE USER mary WITHOUT LOGIN; 
    GO 
    CREATE ROLE contactReaders; 
    ALTER ROLE contactReaders ADD MEMBER fred; 
    GO 
    GRANT SELECT ON dbo.contact TO contactReaders WITH GRANT OPTION; 
    GO 
    EXECUTE AS USER = 'fred'; 
    -- this does not work 
    GRANT SELECT ON dbo.contact TO mary; 
    -- this works 
    GRANT SELECT ON dbo.contact TO mary AS contactReaders; 
    REVERT;


    当Fred使用GRANT命令。必须使用AS contactReaders。

    MSDB角色:

    MSDB由于其重要性,角色的数量和功能都和常规的库不一样:

    角色 描写叙述
    db_ssisadmin 能够作为管理员管理server上的SSIS。

    db_ssisoperator 能够查看全部SSIS包。可是不能导入或改动。
    db_ssisltduser 能够查看和运行属于它自己的SSIS包。

    dc_admin 能够管理data collector collection集和属性,又有全部dc_operator的权限。

    dc_operator 能够读和更新DC collection set和属性。
    dc_proxy 能够读取DC collection sets和相应属性。
    PolicyAdministratorRole 能够运行基于策略的管理上全部配置和维护操作。
    ServerGroupAdministratorRole 能够注冊和使用中央管理server组。
    ServerGroupReaderRole 能够连接中央管理server组。
    dbm_monitor 同意监控数据库镜像。

    关于SSIS角色和Data Collector 安全性,能够查看以下文章:

    下一个:http://blog.csdn.net/dba_huangzj/article/details/39927713

  • 相关阅读:
    POJ 3630 Phone List/POJ 1056 【字典树】
    HDU 1074 Doing Homework【状态压缩DP】
    POJ 1077 Eight【八数码问题】
    状态压缩 POJ 1185 炮兵阵地【状态压缩DP】
    POJ 1806 Manhattan 2025
    POJ 3667 Hotel【经典的线段树】
    状态压缩 POJ 3254 Corn Fields【dp 状态压缩】
    ZOJ 3468 Dice War【PD求概率】
    POJ 2479 Maximum sum【求两个不重叠的连续子串的最大和】
    POJ 3735 Training little cats【矩阵的快速求幂】
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4818813.html
Copyright © 2011-2022 走看看