数据库学习——数据库的安全与权限
一.数据库安全概述什么是数据库的安全性指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。数据库的不安全因素非授权用户对数据库的恶意存取和破坏数据库中重要或敏感的数据被泄露安全环境的脆弱性安全标准简介数据库安全性控制1. 用户身份鉴别 —— 最外层安全保护措施每个用户在系统中都有一个用户标识。每个用户标识由**用户名(user name)和用户标识号(UID)**两部分组成。UID在系统的整个生命周期内是唯一的。常用方法① 静态口令鉴别一般由用户自己设定鉴别时只要按要求输入正确的口令系统将允许用户使用数据库管理系统。② 动态口令鉴别这种方式的口令是动态变化的每次鉴别时均需使用动态产生的新口令登录数据库管理系统即采用一次一密的方法。③ 生物特征鉴别④ 智能卡鉴别2. 存取控制确保只授权给有资格的用户访问数据库的权限同时令所有未被授权的人员无法接近数据。数据库管理系统的存取控制子系定义用户权限机制权限即用户对某一数据对象的操作权力。定义的权限经过编译后存储在数据字典中被称为安全规则或授权规则。用户的权限数据库对象操作类型。定义一个用户的存取权限就是要定义这个用户可以在哪些数据库对象上进行哪些类型的操作。在关系数据库系统中存取控制的对象不仅有数据本身(基本表中的数据、属性列上的数据)还有数据库模式(包括模式、基本表、视图和索引的创建等)。合法权限检查机制自主存取控制用户对于不同的数据库对象有不同的存取权限不同的用户对同一对象也有不同的权限而且用户还可将其拥有的存取权限转授给其他用户。用户可以“自主”地决定将数据的存取权限授予何人、决定是否也将“授权”的权限授予别人。授权授予与收回在数据库系统中_定义存取权限_称为授权。① GRANT将指定的操作对象的指定操作权限授予指定的用户。GRANT 权限1, 权限2, ... ON 对象类型1 对象名1, 对象类型2 对象名2, ... TO 用户1, 用户2, ...发出者数据库管理员 / 数据库对象创建者(即属主owner) / 已经拥有该权限的用户接受权限者可以是一个或多个具体用户也可以是PUBLIC全体用户如果指定了WITH GRANT OPTION子句即获得某种权限的用户还可以把这种权限再授予其他的用户。否则获得某种权限的用户只能使用该权限不能传播该权限。虽然允许把相应权限或其自己传递授予其他用户但是不允许循环授权即被授权者不能把权限再授回给授权者或其祖先。②REVOKEREVOKE 权限1, 权限2, ... ON 对象类型1 对象名1, .... FROM 用户1, ...创建数据库模式的权限——创建用户时实现GRANT和REVOKE语句向用户授予或收回对数据的操作权限。对创建数据库模式一类的数据库对象的权限则由数据库管理员在创建用户时实现。CREATE USER 用户名 [WITH][DBA|RESOURCE|CONNECT];只有系统的超级用户才有权创建一个新的数据库用户。新创建的数据库用户有三种权限CONNECT【默认】有此权限的用户不能创建新用户不能创建模式也不能创建基本表只能登录数据库。由数据库管理员或其他用户授予他应有的权限根据获得的权限情况他可以对数据库对象进行权限范围内的操作。RESOURCE有此权限的用户能创建基本表和视图成为所创建对象的属主(数据库对象的属主可以使用GRANT语句把该对象上的存取权限授予其他用户)但不能创建模式不能创建新的用户。DBA拥有此权限的用户是系统中的超级用户可以创建新的用户创建模式创建基本表和视图等。DBA拥有对所有数据库对象的存取权限还可以把这些权限授予一般用户。数据库角色数据库角色是被命名的一组与数据库操作相关的权限角色是权限的集合。好处为一组具有相同权限的用户创建一个角色使用角色来管理数据库权限可以简化授权的过程。角色的创建CREATE ROLE 角色名给角色授权GRANT 权限1, 权限2... ON 对象类型1 对象名1, 对象类型2 对象名2 ... TO 角色1, 角色2 ...将一个角色授予其他的角色或用户GRANT 角色1, 角色2, ... 角色n TO 角色m / 用户名1, 用户名2, ... [WITH ADMIN OPTION]角色权限的收回REBOKE 权限1, 权限2, ... On 对象类型 对象名 FROM 角色1, 角色2 ...强制存取控制每一数据库对象被标以一定的密级每一个用户也被授予某一级别的许可证。对于任意一个对象只有具有合法许可证的用户才可以存取。一. SQL Server的安全机制这些层数由高到低所有的层级之间相互联系用户只有通过了高一层级的安全验证才能继续访问数据库中低一层级的内容。1. 客户机安全机制数据库管理系统需要运行在某一特定的操作系统平台下。在用户使用客户机通过网络访问数据库服务器时用户首先要获得客户机操作系统的使用权限。2. 网络传输的安全机制SQL Server对关键数据进行了加密即使攻击者通过了防火墙和服务器上的操作系统到达了数据库还要对数据进行破解。3. 实例级别安全机制_【用户安全性验证之】身份验证SQL Server服务器中预先设定了许多固定服务器的角色用来为具有服务器管理员资格的用户分配使用权限固定服务器角色的成员可以用于服务器级的管理权限。SQL Server有两种身份验证方式Windows 身份验证模式和SQL Server身份验证(混合身份验证模式).。① Windows身份验证模式Windows身份验证模式是指用户通过Windows用户账户连接到SQL Server即用户身份由Windows系统来验证。SQLServer**使用Windows操作系统中的信息验证账户名和密码。这是默认的身份验证模式比混合验证模式安全得多。一般情况下客户机都支持混合信任连接建议使用Windows身份验证方式。使用Windows身份验证有如下特点。1Windows验证模式下由Windows管理登录账户数据库管理员主要是使用该账户。2Windows有功能很强的工具与技术去管理用户的登录账户。3可以在SQL Server中增加用户组可以使用用户组。② 混合身份验证模式/SQL Server身份验证模式混合身份验证模式允许用户使用Windows身份和SQLServer身份进行连接。通过Windows登录账户连接的用户可以使用Windows验证的受信任连接。当用户使用指定的登录名称和密码进行非信任连接时SQL Server检测输入的登录名和密码是否与系统表syslogins中记录的情况相同据此进行身份验证。如果不存在该用户的登录账户则身份验证失败。用户只有提供正确的登录名和密码才能通过SQL Server的验证。 提供SQL Server身份验证是为了考虑非Windows客户兼容及向后兼容。早期SQL Server的应用程序可能要求使用SQL Server登录和密码。当SQL Server实例在Windows98/Windows2000professional上运行时由于Windows98/Windows2000professional不支持Windows身份验证模式必须使用混合模式。非Windows客户端也必须使用SQL Server身份验证。混合身份验证模式有如下特点1混合模式允许非Windows客户、Internet客户和混合的客户组连接到SQL Server中。2增加了完全性方面的选择。 如果必须选择“混合身份验证模式”并要求使用SQL登录以适应旧式应用程序则必须为所有SQL账户设置强密码。这对于属于sysadmin角色的账户特别是sa账户尤其重要。4. 数据库级别安全机制在建立用户的登陆账号信息时SQL Server提示用户选择默认的数据库并分配给用户权限以后每次用户登录服务器后都会自动转到默认数据库上。对任何用户来说如果在设置登录账号时没有指定默认数据库则用户的权限将限制在master数据库以内。5. 对象级别安全机制创建数据库对象时SQL Server将自动把该数据库对象的用户权限赋予该对象的所有者对象的拥有者可以实现该对象的安全控制。数据库对象访问权限定义了用户对数据库中数据对象的引用、数据操作语句的许可权限这通过定义对象和语句的许可权限来实现。SQL Server基本由两种对数据加密的方式数据加密备份加密二.数据库安全术语数据库所有者DBO/dbo数据库的创建者每个数据库只有一个数据库所有者。DBO有数据库中的所有特权可以提供给其他用户访问权限。系统管理员sa负责SQL Server全面性能和综合应用的管理员简称sa。主体是可以请求对SQL Server资源访问权限的实体包括用户、组或进程。特征每个主体可有自己的安全标识号(SID)每个主体有一个作用域作用域是基于定义主体的级别一. 数据库权限用来干嘛假若你是数据库服务器的管理员服务器中包含7个用户数据库它们为学校的多个部门应用程序提供数据每个部门的用户维护自己的数据库你需要配置服务器和数据库许可权限让每个维护自己数据库的用户有足够的权限来管理数据库。你该怎么做呢你需要为每个用户创建一个账户把每个账户映射到它们的数据库中添加所有的用户账户到自己的数据库中的db_owner角色中去。二. 用户安全性验证两个阶段在SQL Server中工作时用户要经过两个安全性阶段身份验证和权限验证授权。每个用户必须通过登录账户建立自己的连接能力身份验证以获得对SQLServer 实例的访问权限。然后该登录必须映射到用于控制在数据库中所执行的活动权限验证的SQLServer用户账户。如果数据库中没有用户账户则即使用户能够连接到SQL Server实例也无法访问数据库。1. 身份验证SQL Server 提供了两种安全验证模式即Windows身份验证模式和混合身份验证模式也称SQL Server身份验证模式数据库设计者和数据库管理员可以根据实际情况进行选择。2. 设置验证模式安装SQL Server2019默认的是Windows身份验证模式。系统管理员在management studio中有两种设置方法均需要重新启动SQL Server后才能生效。方法之一1打开Management Studio。2在“已注册的服务器”子窗口中要设置验证模式的服务器上单击鼠标右键然后在弹出的快捷菜单上选择“属性”项系统弹出“编辑服务器注册属性”窗口。3在“常规”选项卡中“服务器名称”栏按“服务器名[实例名]”格式选择要注册的服务器实例“身份验证”栏在连接到 SQL Server实例时可以使用两种身份验证模式Windows身份验证和SQL Server身份验证或称混合身份验证。如图3-1。4设置完成后单击“测试”按钮以确定设置是否正确。可能会出现这种情况测试成功会跳出窗口5单击“保存”按钮单击对话窗口完成验证模式的设置或改变。重新登陆后验证如图方法之二1 在Management Studio对象资源管理器中右键单击服务器再单击“属性”项。2在“安全性”页上的“服务器身份验证”下选择新的服务器身份验证模式再单击“确定”按钮。如图。三. 登录管理1. 系统管理员登录账户SQL Server有两个默认的系统管理员登录账户sa和administrators。这两个登录账户具有SQL Server系统和所有数据库的全部权限。在安装SQL Server之后自动创建的登录标识符只有系统管理员sa账户和administrators账户administrators是Windows系统的系统管理员组。sa是一个特殊的登录名它代表SQL Server身份验证机制下SQL Server的系统管理员sa始终关联dbo(dbo是默认的用户账号就是指数据库的创建者)数据库用户并且没有为sa指定口令。这意味着如果SQL Server身份验证模式任何得知这个SQL Server存在的人都可以登录到SQL Server上并且可以做任意操作。为安全起见在安装SQL Server后应尽快地给系统管理员账户指定口令。为SQL Server系统管理员指定口令的步骤如下。1在“对象资源管理器”窗口中某数据库引擎下。2分别展开“安全性”、“登录名”节点查看所有当前存在的登录标示符系统管理员账户sa应包含在其中。3右击sa然后选择“属性”项系统弹出“登录属性”窗口。4在“密码”一栏中输入新的口令并在“确认密码”一栏再次输入相同“密码”。5在“默认数据库”一栏输入sa默认使用的数据库。6单击“确定”按钮系统关闭对话框这样完成了为系统管理员设置新口令操作。重启SQL Server选择输入即可登录。2. 创建登录账户在management studio中能方便地创建、查看、修改、删除登录账户。有如下两种方式创建SQL Server登录账户1和2。1映射Windows登录账户为SQL Server登录账户在management studio中可以将一个Windows账户或一个组映射成一个SQL Server登录名。**每个SQL Server登录名都可以在指定的数据库中创建数据库用户名。**这个特性可以让Windows组中的用户直接访问服务器上的数据库。至于这些指定的数据库用户的权限可以另行指定的。提示Windows账户应是已经存在的。具体步骤参看实验指导。在用户映射选项卡中选定某数据库后用户名默认与登录名一样也可设定为不一样的。① 启动Management Studio分别展开“服务器”、“安全性”、“登录名”。② 右击“登录名”选择“新建登录名”项进入“登录名-新建”对话框。③ 选择Windows验证模式登录名通过按“搜索”按钮来自动产生单击“搜索”按钮后“选择用户或组”对话框在对象名称框内直接输入名称或单击“高级”按钮后查找用户或组的名称来完成输入。④ 单击“服务器角色”选项卡可以查看或更改登录名在固定服务器角色中的成员身份。⑤ 单击“用户映射”选项卡以查看或修改SQL登录名到数据库用户的映射并可选择其在该数据库中允许担任的数据库角色。单击“确定”按钮一个Windows组或用户即可增加到SQL Server登录账户中去了。2在management studio中创建SQL Server登录账户 提示首先需将验证模式设置为SQL Server验证模式。具体步骤参看实验指导。在用户映射选项卡中选定某数据库后用户名默认与登录名一样也可设定为不一样的。注意在创建登录名时在点击“新建登录名”后进入“登录名-新建”对话框时选择的默认数据库要与用户映射选项卡中选择的数据库一致再去掉“强制实施密码策略”的对勾即可创建成功。在通过新创建的登录名连接SQLServer后会发现只能访问和打开所选的数据库而其他数据库无法访问和打开。3在Management Studio中查看、修改或删除登录账户 具体步骤参看实验指导坐在工位上我脑海里不断浮现老张泪流满面的背影和自己倒计时的声音。是的时代像一台冰冷的机器无情地筛掉我们这些“沙子”。但那一刻一道念头劈开了我的迷茫程序员的终点从来不是因为年龄而被淘汰而是因为我们没看清方向、忽略了核心竞争力的提升。真正的终点不在年龄本身而在于不断打磨能扛起重担的本领在程序员这个行业放眼望去网络安全恰恰就是那个“越老越吃香”的行业。它不惧岁月反倒因经验积累而价值倍增资深工程师的洞悉力能应对复杂的黑客攻击行业缺口巨大国家预计2027年缺口将达327万机会遍地。转行也好继续深耕也罢只要肯学肯钻三四十岁的“高龄”反而成了金字招牌轻松拿下一份不菲的收入。如果你是也准备转行学习网络安全黑客或者正在学习这些我购买的资源可以分享给你们互勉①网络安全学习路线②20份渗透测试电子书③安全攻防357页笔记④50份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100个漏洞实战案例⑧安全大厂内部视频资源⑨历年CTF夺旗赛题解析一、网络安全黑客学习路线网络安全黑客学习路线形成网络安全领域所有的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。二、网络安全教程视频我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。三、网络安全CTF实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这里带来的是CTFSRC资料HW资料毕竟实战是检验真理的唯一标准嘛~四、网络安全面试题最后我们所有的作为都是为就业服务的所以关键的临门一脚就是咱们的面试题内容所以面试题板块是咱们不可或缺的部分这里我给大家准备的就是我在面试期间准备的资料。网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】