第3章_3存取控制(数据库安全)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 建立新的登录用户 • 修改登录密码 • 删除登录用户
• 数据库用户的管理
– 数据库管理员的工作
• 授权其他登录用户为数据库的用户 • 取消某个登录用户为数据库的用户
建立新的登录用户
CREATE LOGIN login_name {WITH PASSWORD=‘PASSWORD’[must_CHANGE]
例:数据库管理员授予用户名为
tang的用户create table 的权限
• grant create table to tang
收回语句授权
REVOKE { ALL | statement_list } FROM name_list
例:revoke create table from tang
授予语句权限
GRANT { ALL | statement_list } TO name_list statement_list给出授权的语句列表,可以是: – BACKUP DATABASE – BACKUP LOG – CREATE DATABASE – CREATE DEFAULT – CREATE FUNCTION – CREATE PROCEDURE – CREATE RULE – CREATE TABLE – CREATE VIEW
SQL Server 有3类定义的角色
• Public角色 • 系统预定义角色 • 数据库定义角色
public角色
• public角色是一个特殊的数据库角色,每个数据库用户都 是该角色的成员。public角色具有如下特点: – public角色自动获得数据库中用户的所有默认权限; – 不需要、也无法将用户指派给public角色,因为默认情 况下所有用户都属于该角色; – 每个数据库(包括所有系统数据库和所有用户数据库) 都有public角色;
alter login zhang with password='bibt' old_password='bistu'
删除登录用户
DROP LOGIN login_name
数据库用户管理
• 数据库管理员的工作 – 授权其他登录用户为数据库的用户 – 取消某个登录用户为数据库的用户
授权登录用户为当前数据库用户
SQL Server的身份验证模式
• SQL Server提供了二种身份验证模式或安全 管理模式,即Windows身份验证模式和混合 身份验证模式。
Windows身份验证模式
• Windows身份验证模式也称集成身分验证模式, 用户通过windows操作系统的身份验证后则自动 进行SQL Server身份验证。
• grant select,insert,update,delete on 仓库 to role_op with grant option
2.1 用户的分类
• 系统管理员用户
• 数据库管理员用户 • 数据库对象用户 • 数据库访问用户
2.2 登录用户和数据库用户
登录用户(login user) 数据库用户(database user)
图3-1 SQL Server安全体系
2. 3 用户管理
• 登录用户的管理
– 系统管理员的工作
绍兴文理学院元培学院
数据库系统及应用
(讲解:许志英)
LOGO
第3章
• •
Higher Education Press Database system and Application
第3章 存取控制(安全性)
•安全性概述 •用户管理和角色管理 •权限管理 •其他安全问题
1. 安全性概述
安全性措施的层次
CREATE USER user_name[LOGIN login_name] [WITH DEFAULT_SCHEMA=schema_name]
例:指定登录用户chang 为“仓储订货” 数据库用户。
• use 仓储订货 • create user chang
修改数据库用户的属性
• ATLER USER user_name WITH{NAME=new_user_name|DEFAULT_SCH EMA=schema_mane}[,...n]
• 物理层:重要的计算机系统必须在物理上受到保护,以防止入侵者 强行进入或暗中潜入。 • 人员层:对用户的授权要严格掌握,以减少授权用户渎职、受贿, 从而为入侵者提供访问的机会。 • 操作系统层:要进入数据库系统,首先要经过操作系统,所以如果 操作系统的安全性能差,也会对数据库造成威胁。 • 网络层:由于几乎所有网络上的数据库系统都允许通过终端或网络 进行远程访问,所以网络的安全和操作系统的安全一样重要,网络 安全了,无疑会对数据库的安全提供一个保障。 • 数据库系统层:数据库系统应该有完善的访问控制机制,允许查询 和允许修改有严格的界限,尽量保证不出现越权的操作。
数据库管理系统的安全功能
• 安全性控制是数据库管理员(或系统管 理员)的一个重要任务,保证数据库和 数据库中数据的安全。
– 访问控制
– 数据加密
自主存取控制
• 自主存取控制就是由用户(如数据库管理 员)自主控制对数据库对象的操作权限, 哪些用户可以对哪些对象、进行哪些操作, 完全取决于用户之间的授权。
SQL Server的安全体系
图3-1 SQL Server安全体系
混合身份验证模式
• 混合模式使用户得以使用 Windows身份验
证或SQL Server身份验证与SQL Server实例连 接。
混合身份验证模式的登录决策过程
2.用户管理和角色管理
• • • • • 用户的分类 登录用户和数据库用户 用户管理 角色管理 SQL Server的预定义角色
例:将数据库用户chang的名称 改为zy_zhang。
alter user chang with name=zy_zhang
删除数据库用户
DROP USER user_name 例:drop user zy_zhang
2.4 角色管理
• 定义角色
• 为用户指定角色
• 取消用户的角色
• 删除角色
[,DEFAULT_DATABASE=database]
[,CHECK)EXPIRATION={ON|OFF}]}
例:建立一个用户名为zhang,口令为 mis的登录用户
• CREATE LOGIN zhang WITH PASSWORD='mis'
修改登录密码
ALTER LOGIN login_name{{ENABLE|DISABLE}
数据库预定义角色
• db_owner:在数据库中有全部权限,即具有数据库管理员全部权限的角色。
• db_accessadmin:负责数据库用户的管理。
• db_securityadmin:负责数据库的安全管理,如负责权限管理、角色和角色 成员资格管理等。
• db_ddladmin:主要负责数据库的完整性和一致性检查及管理。
|WITH PASSWORD='password'
[,OLD_PASSWORD='oldpassword']
[DEFAULT_DATABASE=database]
[,NAME=login_name]}
例:假设用户zhang外出度假,暂时 禁止该用户登录
• alter login zhang disable
禁止语句权限
• DENY { ALL | statement_list } TO name_list
禁止用户tang使用create table 授予权限。 语句,除非给他显式
deny create table to tang
授予对象权限
• 处理数据或执行存储过程时需要有相应对象的操作或执行权限, 这些权限可以划分为: – SELECT、INSERT、UPDATE和DELETE语句权限,它们可以应 用到整个表或视图上。 – SELECT和UPDATE 语句权限,它们可以有选择性地应用到表 或视图中的单个列上。 – INSERT和DELETE 语句权限,它们会影响整行,因此只可以 应用到表或视图中,而不能应用到单个列上。 – EXECUTE语句权限,即执行存储过程和函数的权限。
授予对象权限
GRANT { ALL [ PRIVILEGES ] | permission_list } {[ ( column_list ) ] ON { table | view } | ON { table | view } [ ( column_list ) ] | ON stored_procedure | ON user_defined_function } TO name_list [ WITH GRANT OPTION ] [ AS role ]
• dbcreator:负责创建和改变数据库。 • bulkadmin:可以执行BULK INSERT语句(数据库数据的装 载)。
例:假设有用户chang,指定该用户为 securityadmin角色
sp_addsrvrolemember @loginame='chang',@rolename='securityadmin‘ 或 sp_addsrvrolemember 'chang','securityadmin'
– 不可以删除public角色。
系统预定义角色
• sysadmin:具有系统管理员全部权限的角色。
• serveradmin:负责配置数据库服务器的设置。
• setupadmin:负责添加和删除链接的服务器。 • securityadmin:负责管理服务器的登录。
• processadmin:负责管理在SQL Server实例中运行的进程。
强制存取控制
• 为每一个数据库对象标以一定的密级 (Classification level),对每一个用户都确定一个 许可级别(Clearance level)。如密级可以分为绝 密、机密、保密、秘密、公开等若干级别;而用 户可以划分为一级用户(可以操作所有数据)、 二级用户(可以操作除绝密以外的所有数据)、 三级用户等。
例:在仓储订货数据库中建立角色 role_op,并将用户qiao指定为该角色的成 员
use 仓储订货 create role rope_op sp_addrolemember 'role_op','qiao'
例:将仓库表的查询、插入、修改和删 除的权限授予角色role_op。并允许该角 色的成员转授这些权限
alter role manager with name=orders_manager
3.删除角色
DROP ROLE role_name
• 不能删除仍然带有用户的角色 • 不能删除SQL Server预定义的角色
3.权限管理
• 授予权限
– 授予语句权限 – 授予对象权限 – 查询授权
• 收回权限 • 禁止权限 • 角色与存取控制
• db_backupoperator:主要负责数据库的备份。 • db_datareader:可以查询数据库中任何用户表中的所有数据。
• db_datawriter:可以更改数据库中任何用户表中的所有数据。
• db_denydatareader:不能查询数据库中任何用户表中的任何数据。 • db_denydatawriter:不能更改数据库中任何用户表中的任何数据。
例:假设用户huang 是“仓储订货” 数据库的数据库管理员,由其建立 角色manager。
• 使用用户名huang进行登录 create role manager
2.修改角色名称
• ALTER ROLE role_name WITH NAME=new_name
例:将角色manger 的名称修改为orders_manager。
例:假设用户zhang度假归来,重新 允许该用户登录。
• alter login zhang enable
ຫໍສະໝຸດ Baidu:由系统员将用户zhang的口令修 改为bistu
• alter login zhang with password='bistu'
例:用户zhang在登录后自己将口令修 改为biti (此时需要提供旧的口令)
例:假设当前数据为“仓储订货”有用户 huang,指定该用户为db_securityadmin角 色。
sp_addrolemember 'db_securityadmin','huang'
角色管理
1.定义角色
CREATE ROLE role_name [AUTHORIZATION owner_name]
• 数据库用户的管理
– 数据库管理员的工作
• 授权其他登录用户为数据库的用户 • 取消某个登录用户为数据库的用户
建立新的登录用户
CREATE LOGIN login_name {WITH PASSWORD=‘PASSWORD’[must_CHANGE]
例:数据库管理员授予用户名为
tang的用户create table 的权限
• grant create table to tang
收回语句授权
REVOKE { ALL | statement_list } FROM name_list
例:revoke create table from tang
授予语句权限
GRANT { ALL | statement_list } TO name_list statement_list给出授权的语句列表,可以是: – BACKUP DATABASE – BACKUP LOG – CREATE DATABASE – CREATE DEFAULT – CREATE FUNCTION – CREATE PROCEDURE – CREATE RULE – CREATE TABLE – CREATE VIEW
SQL Server 有3类定义的角色
• Public角色 • 系统预定义角色 • 数据库定义角色
public角色
• public角色是一个特殊的数据库角色,每个数据库用户都 是该角色的成员。public角色具有如下特点: – public角色自动获得数据库中用户的所有默认权限; – 不需要、也无法将用户指派给public角色,因为默认情 况下所有用户都属于该角色; – 每个数据库(包括所有系统数据库和所有用户数据库) 都有public角色;
alter login zhang with password='bibt' old_password='bistu'
删除登录用户
DROP LOGIN login_name
数据库用户管理
• 数据库管理员的工作 – 授权其他登录用户为数据库的用户 – 取消某个登录用户为数据库的用户
授权登录用户为当前数据库用户
SQL Server的身份验证模式
• SQL Server提供了二种身份验证模式或安全 管理模式,即Windows身份验证模式和混合 身份验证模式。
Windows身份验证模式
• Windows身份验证模式也称集成身分验证模式, 用户通过windows操作系统的身份验证后则自动 进行SQL Server身份验证。
• grant select,insert,update,delete on 仓库 to role_op with grant option
2.1 用户的分类
• 系统管理员用户
• 数据库管理员用户 • 数据库对象用户 • 数据库访问用户
2.2 登录用户和数据库用户
登录用户(login user) 数据库用户(database user)
图3-1 SQL Server安全体系
2. 3 用户管理
• 登录用户的管理
– 系统管理员的工作
绍兴文理学院元培学院
数据库系统及应用
(讲解:许志英)
LOGO
第3章
• •
Higher Education Press Database system and Application
第3章 存取控制(安全性)
•安全性概述 •用户管理和角色管理 •权限管理 •其他安全问题
1. 安全性概述
安全性措施的层次
CREATE USER user_name[LOGIN login_name] [WITH DEFAULT_SCHEMA=schema_name]
例:指定登录用户chang 为“仓储订货” 数据库用户。
• use 仓储订货 • create user chang
修改数据库用户的属性
• ATLER USER user_name WITH{NAME=new_user_name|DEFAULT_SCH EMA=schema_mane}[,...n]
• 物理层:重要的计算机系统必须在物理上受到保护,以防止入侵者 强行进入或暗中潜入。 • 人员层:对用户的授权要严格掌握,以减少授权用户渎职、受贿, 从而为入侵者提供访问的机会。 • 操作系统层:要进入数据库系统,首先要经过操作系统,所以如果 操作系统的安全性能差,也会对数据库造成威胁。 • 网络层:由于几乎所有网络上的数据库系统都允许通过终端或网络 进行远程访问,所以网络的安全和操作系统的安全一样重要,网络 安全了,无疑会对数据库的安全提供一个保障。 • 数据库系统层:数据库系统应该有完善的访问控制机制,允许查询 和允许修改有严格的界限,尽量保证不出现越权的操作。
数据库管理系统的安全功能
• 安全性控制是数据库管理员(或系统管 理员)的一个重要任务,保证数据库和 数据库中数据的安全。
– 访问控制
– 数据加密
自主存取控制
• 自主存取控制就是由用户(如数据库管理 员)自主控制对数据库对象的操作权限, 哪些用户可以对哪些对象、进行哪些操作, 完全取决于用户之间的授权。
SQL Server的安全体系
图3-1 SQL Server安全体系
混合身份验证模式
• 混合模式使用户得以使用 Windows身份验
证或SQL Server身份验证与SQL Server实例连 接。
混合身份验证模式的登录决策过程
2.用户管理和角色管理
• • • • • 用户的分类 登录用户和数据库用户 用户管理 角色管理 SQL Server的预定义角色
例:将数据库用户chang的名称 改为zy_zhang。
alter user chang with name=zy_zhang
删除数据库用户
DROP USER user_name 例:drop user zy_zhang
2.4 角色管理
• 定义角色
• 为用户指定角色
• 取消用户的角色
• 删除角色
[,DEFAULT_DATABASE=database]
[,CHECK)EXPIRATION={ON|OFF}]}
例:建立一个用户名为zhang,口令为 mis的登录用户
• CREATE LOGIN zhang WITH PASSWORD='mis'
修改登录密码
ALTER LOGIN login_name{{ENABLE|DISABLE}
数据库预定义角色
• db_owner:在数据库中有全部权限,即具有数据库管理员全部权限的角色。
• db_accessadmin:负责数据库用户的管理。
• db_securityadmin:负责数据库的安全管理,如负责权限管理、角色和角色 成员资格管理等。
• db_ddladmin:主要负责数据库的完整性和一致性检查及管理。
|WITH PASSWORD='password'
[,OLD_PASSWORD='oldpassword']
[DEFAULT_DATABASE=database]
[,NAME=login_name]}
例:假设用户zhang外出度假,暂时 禁止该用户登录
• alter login zhang disable
禁止语句权限
• DENY { ALL | statement_list } TO name_list
禁止用户tang使用create table 授予权限。 语句,除非给他显式
deny create table to tang
授予对象权限
• 处理数据或执行存储过程时需要有相应对象的操作或执行权限, 这些权限可以划分为: – SELECT、INSERT、UPDATE和DELETE语句权限,它们可以应 用到整个表或视图上。 – SELECT和UPDATE 语句权限,它们可以有选择性地应用到表 或视图中的单个列上。 – INSERT和DELETE 语句权限,它们会影响整行,因此只可以 应用到表或视图中,而不能应用到单个列上。 – EXECUTE语句权限,即执行存储过程和函数的权限。
授予对象权限
GRANT { ALL [ PRIVILEGES ] | permission_list } {[ ( column_list ) ] ON { table | view } | ON { table | view } [ ( column_list ) ] | ON stored_procedure | ON user_defined_function } TO name_list [ WITH GRANT OPTION ] [ AS role ]
• dbcreator:负责创建和改变数据库。 • bulkadmin:可以执行BULK INSERT语句(数据库数据的装 载)。
例:假设有用户chang,指定该用户为 securityadmin角色
sp_addsrvrolemember @loginame='chang',@rolename='securityadmin‘ 或 sp_addsrvrolemember 'chang','securityadmin'
– 不可以删除public角色。
系统预定义角色
• sysadmin:具有系统管理员全部权限的角色。
• serveradmin:负责配置数据库服务器的设置。
• setupadmin:负责添加和删除链接的服务器。 • securityadmin:负责管理服务器的登录。
• processadmin:负责管理在SQL Server实例中运行的进程。
强制存取控制
• 为每一个数据库对象标以一定的密级 (Classification level),对每一个用户都确定一个 许可级别(Clearance level)。如密级可以分为绝 密、机密、保密、秘密、公开等若干级别;而用 户可以划分为一级用户(可以操作所有数据)、 二级用户(可以操作除绝密以外的所有数据)、 三级用户等。
例:在仓储订货数据库中建立角色 role_op,并将用户qiao指定为该角色的成 员
use 仓储订货 create role rope_op sp_addrolemember 'role_op','qiao'
例:将仓库表的查询、插入、修改和删 除的权限授予角色role_op。并允许该角 色的成员转授这些权限
alter role manager with name=orders_manager
3.删除角色
DROP ROLE role_name
• 不能删除仍然带有用户的角色 • 不能删除SQL Server预定义的角色
3.权限管理
• 授予权限
– 授予语句权限 – 授予对象权限 – 查询授权
• 收回权限 • 禁止权限 • 角色与存取控制
• db_backupoperator:主要负责数据库的备份。 • db_datareader:可以查询数据库中任何用户表中的所有数据。
• db_datawriter:可以更改数据库中任何用户表中的所有数据。
• db_denydatareader:不能查询数据库中任何用户表中的任何数据。 • db_denydatawriter:不能更改数据库中任何用户表中的任何数据。
例:假设用户huang 是“仓储订货” 数据库的数据库管理员,由其建立 角色manager。
• 使用用户名huang进行登录 create role manager
2.修改角色名称
• ALTER ROLE role_name WITH NAME=new_name
例:将角色manger 的名称修改为orders_manager。
例:假设用户zhang度假归来,重新 允许该用户登录。
• alter login zhang enable
ຫໍສະໝຸດ Baidu:由系统员将用户zhang的口令修 改为bistu
• alter login zhang with password='bistu'
例:用户zhang在登录后自己将口令修 改为biti (此时需要提供旧的口令)
例:假设当前数据为“仓储订货”有用户 huang,指定该用户为db_securityadmin角 色。
sp_addrolemember 'db_securityadmin','huang'
角色管理
1.定义角色
CREATE ROLE role_name [AUTHORIZATION owner_name]