• SQL Serever学习11——数据库的安全管理


    公司管理软件设计完成,但是日常工作繁忙,向领导提出增加几个管理员,帮助管理和维护系统,领导同意了,但是要求一定要管理好这几个管理员用户,保证数据库的安全。

    修改身份验证模式

    数据库验证机制

    sqlserver的三层安全模型:

    1. 需要登录到sqlserver系统,需要登录账户
    2. 需要访问某个数据库,需要成为该数据库的用户
    3. 需要访问数据库的表,需要数据库管理员给自己授权,如增删改查等权限

    2种身份验证模式

    Windows身份验证

    用于Windows平台的用户,不需要提供密码和Windows集成验证,因为windows系统本身就有管理和验证登录用户的能力。

    优点:

    • 用户的管理交给windows系统管理,而数据库管理员专注于数据库库管理
    • 可以利用windows的账户管理的功能,包括安全验证,加密,审核,密码过期,最小密码长度,账户锁定等,不需要在sqlserver中另外建立一个登陆验证机制

    混合验证

    适用于各种平台操作系统,以及Internet用户,使用sqlserver用户名和密码登陆数据库服务器,及时网络上的客户机没有服务器操作系统的账户也可以登陆并使用sqlserver数据库,很方便。

    设置混合验证模式

    在数据库实例上右键,选择属性

    选安全性标签,选择sqlserver和windows身份验证模式,选择仅限失败的登录,确定。

    创建系统登录用户

    这里准备创建一个windows用户和sqlserver用户

    创建windows登录用户

    打开安全性节点,右键登录名,选择新建登录名

    选择常规,登录名必须是一个已经存在的windows账户,不确定这个账户是否存在可以通过右边的搜索来看,选择windows身份验证

    默认数据库为master(默认),然后确定。

    创建sqlserver登录用户

     第一步也是打开新建登录名窗口

    然后登录名可以自定义SQLuser,选择sqlserver身份验证,密码是SQLuser,去掉勾选的“强制实施密码策略”,确定。

     

    对于密码设置需要说明一下子:

    强制实施密码策略:

    对用户输入的密码格式进行要求,实施密码复杂性策略时,新密码需要符合以下原则:

    • 密码不得包含全部或部分用户账户名,部分账户名是3个以上2端使用空格(空格,制表符,回车),逗号(,),句点(.),连接符(-),下划线(_)或数字符号(#)连接的字母数字
    • 密码长度至少为8个字符
    • 密码包含大写字母(A-Z),小写字母(a-z),数字(0-9),符号(!,$,#,%)中的3类
    • 密码最长为128字符,使用的密码应尽可能长,尽可能复杂

    强制密码过期:

    密码过期策略用于管理密码的使用期限,在规定过期的时间节点,必须更换密码,系统将提醒用户进行该操作,并禁用带有过期密码的账户。

    用户在下次登录必须更换密码:

    这个就是和名字描述的一样。现在,取消选中“强制实施密码策略”复选框即可。

    数据库用户的创建和管理

    登录用户只能登录到sqlserver系统,访问数据库,必须成为数据库的用户才可以。

    如果没有设置会提示没有权限

     数据库用户

    数据库拥有自己的用户,一个登陆用户可以印射为多个数据库用户,数据库有2个默认用户:

    • dbo,就是Database Owner数据库拥有者,数据库的创建者,拥有数据库的最高权限,不能被删除
    • guest,可以在除了master和tempdb之外的所有数据库中添加,删除该用户

    默认情况下,新建的数据库没有guest账户

    数据库用户权限

    sqlserver中权限有3种:

    • 默认权限,用户在成为固定服务器,数据库角色同时自动获得的角色
    • 对象权限,在数据库层次的访问和操作权限,比如选择,更新,插入,删除表,列,视图,更改,控制,引用,查看定义,查看跟踪,接管所有权
    • 语句权限,createalterdrop database,table,view,backup database

    权限类型

    有3种:

    • 授予,允许用户具有操作权限
    • 具有授予权限,允许用户将权限授予其他用户
    • 拒绝,拒绝用户操作权限

    windows用户和sqlserver用户的设置方式是一样的。

    创建数据库用户

    打开销售管理数据库的安全性节点,右键用户,选择新建用户

     

    输入用户名和登录名,确定

    此时的用户已经有了数据库的登录权限,但是还没有数据表的操作权限

    设置用户权限

     现在我们授予SQLuser用户选择,插入,更新的权限,并允许他将选择权限授予其他用户,但是拒绝他删除的权限

    设置对象权限

    上面是通过用户来设置对象权限,现在我们通过对象来设置用户权限。

    权限的修改方法和设置方法一样,不再赘述。

    角色管理

     数据库中很多用户的类型和权限基本相同,可以引入角色统一管理这些类似的用户。

    角色设置对于比较复杂的数据库系统很重要,可以方便的管理其中的各类用户,如果数据库用户较少,则角色的作用不那么突出。

    角色

    sqlserver可以通过角色统一管理数据库或服务器用户权限,通过修改角色权限来修改所有加入角色的用户的权限,方便。

    sqlserver有2种角色:

    • 服务器角色
    • 数据库角色

    服务器角色

    用于登录服务器级别的安全权限,有8种,不可添加或删除,只能向角色添加用户成员

    1. bulkadmin
    2. dbcreator
    3. diskadmin
    4. processadmin
    5. securityadmin
    6. serveradmin
    7. setupadmin
    8. sysadmin

     sa(sysadmin)和public的角色成员身份是不允许被修改的

     数据库角色

    其权限设置只针对相应的数据库,就是说同样名称数据库角色,在不同的数据库,权限是不同的。

    用户可以创建数据库角色,并添加用户

    1. db_owner
    2. db_accessadmin
    3. db_datareader
    4. db_datawriter
    5. db_ddladmin
    6. db_securityadmin
    7. db_backoperator
    8. db_denydatareader
    9. db_denydatawriter
    10. public

    设置服务器角色

    将角色设置为sysadmin服务器角色

    设置数据库角色

    将销售管理数据库的用户SQLuser设置为db_datawriter数据库角色

    新建数据库角色

    新建数据库角色Urole,设置角色权限的基本架构为db_datawriter加上db_datareader,并将SQLuser添加到角色中

    设置好之后可以看到Urole

  • 相关阅读:
    C++中的字符串可以这样换行写
    2020年最受欢迎的 10 门编程语言
    10 本最适合初学者和高级程序员的Python书籍
    手把手教你用 Python + Flask 搭建个人博客
    CentOS VS Ubuntu,谁才是更好的 Linux 版本?
    Python丨为什么你学不好设计模式?
    突破C++瓶颈,在此一举!
    从零上手 GDB 调试,看这个教程就够了~
    搞机器学习需要数学基础吗?
    用 Python 读写 Excel 表格,就是这么的简单粗暴且乏味
  • 原文地址:https://www.cnblogs.com/1906859953Lucas/p/9536675.html
Copyright © 2020-2023  润新知