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

  • 相关阅读:
    持续集成环境搭建(一)
    The POSIX API/nss/nscd
    [postfix]转发邮件设置
    [python]python安装包错误
    栈及栈帧讲解
    kernel-init-bash
    nginx no input file specified
    Lumen/Laravel调试API接口利器laravel-debugbar
    homestead实现外部局域网络其他主机的访问
    PHP rabbitmq扩展安装
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4818815.html
Copyright © 2011-2022 走看看