zoukankan      html  css  js  c++  java
  • Security9:权限(Permission)

    每一个SQL Server安全对象(Securable)都有相应的权限(Permission)被授予到安全主体(Principal)上,在服务器级别上,使用Login和Server Role来管理权限;在数据库级别上,使用User和Database Role来管理权限。

    一,权限命名约定

    一下列表列出权限的一般约定:

    • CONTROL:是最高的权限,在被授予者身上赋予近似所有者的权限,被授予者实际上拥有对安全对象(Securable)的所有权限。已被授予CONTROL权限的主体(Principal)也可以授予对安全对象的权限。 由于SQL Server安全模型是分层的,因此特定范围内的CONTROL隐式包括该范围下所有安全对象的CONTROL。 例如,对数据库的CONTROL意味着对数据库的所有权限,对数据库中所有程序集的所有权限,对数据库中所有Schema的所有权限以及对数据库内所有Schema中的对象的所有权限。
    • IMPERSONATE:模拟指定的Login或User的权限
    • EXECUTE:调用模块(函数,存储过程等)的权限
    • DELETE、INSERT、SELECT和 UPDATE:对数据库对象执行修改和查询的权限
    • VIEW DEFINITION:查看对象元数据的权限
    • ALTER:对安全对象执行alter、create或drop命令的权限,
    • CREATE :创建对象的权限
    • REFERENCES:引用数据库对象的权限,包括外键、密钥、架构绑定的函数等

    二,权限的层次结构和可传递性

    权限具有父子层次结构,并且可以沿着层次结构由上向下传递,这意味着,如果被授予顶层的权限,那么同样被授予对顶层之下所有子对象的权限。

    举个例子,如果User被授予数据库的select权限,那么User可以select数据库中的所有schema;如果User被授予schema的select权限,那么实际上,User能够对该schema下的所有子对象,包括table和view,执行select命令。由于权限是可以沿着层次结构传递,这就意味着,如果User被授予数据库的select权限,他可以查看该数据库的任意table和view。

    三,权限管理

    GRANT 用于授予权限,对授予的权限可以使用REVOKE来回收。

    DENY 用于移除权限

    四,权限列表

    返回服务器的内置权限层次结构的描述,sys.fn_builtin_permissions只能在SQL Server和Azure SQL数据库上调用,并且它将返回所有权限,无论当前平台是否支持它们。 大多数权限适用于所有平台,但有些不适用于所有平台。

    sys.fn_builtin_permissions ( [ DEFAULT | NULL ]  
        | empty_string | '<securable_class>' } ) 

    返回特定安全对象(Securable)上实际被授予权限的安全主体(Principal):

    fn_my_permissions ( securable , 'securable_class' ) 

    参考文档:

    Permissions (Database Engine)

    Getting Started with Database Engine Permissions

  • 相关阅读:
    numpy模块之axis(转)
    使用lxml解析HTML代码
    关于Python中的可变对象与不可变对象的区别(转)
    python线程(转)
    SSTI模板注入
    逆向与反汇编实战(一)--PEiD分析复现
    二进制各种漏洞原理实战分析总结
    认识二进制安全与漏洞攻防技术 (Windows平台)
    CSRF 漏洞
    逻辑漏洞之越权漏洞的三种越权思路|burpsuite逻辑漏洞测试一
  • 原文地址:https://www.cnblogs.com/ljhdo/p/12919963.html
Copyright © 2011-2022 走看看