select class_desc, permission_name, covering_permission_name, parent_class_desc, parent_covering_permission_name from sys.fn_builtin_permissions('object')
授权命令
1 2 3 4
grant 权限 on 对象名 to {用户[,用户]...|public} [withgrant option]
with grant option:获得权限的用户可以把权限再授予其它用户
表级权限
select, update, insert, delete, index, alter, drop, resource
等以及它们的总和 all
为什么需要 references 权限
是否允许其他用户定义外码来参照这个表?
可能出现泄密的可能
回收权限
1 2 3
revoke 权限 on 对象 from {用户[,用户]...|public}
授权路径的起点一定是 DBA
收回权限时,若该用户已将权限转授给其它用户,则也一并收回
1 2 3 4 5 6 7 8 9 10
/* 授予权限 */ grantselect, insert on S to Liming withgrant option
/* 回收权限 */ revokeinsert on S from Liming
当前用户
1 2 3
declare@usrchar(30) set@usr=user select'The current user is: '+@usr
实现精细存取控制
普通员工只能查看自己的记录
部门经理可以查看他所管理的员工
人力资源代表可以查看所有员工
不同的用户执行相同的命令,可能返回的结果是不一样的
1 2 3
select* from S where SNAME =user
审计
审计就是对指定用户在数据库中的操作情况进行监控和记录,用以审查用户的相关活动
数据被非授权用户删除,用户越权管理,权限管理不正确,用户获得不应有的系统权限等
审计就是监视和收集关于指定数据库获得的数据
哪些表经常被修改,用户共执行了多少次 I/O 操作等,为优化提供依据
SQL Server
服务器审核
1
create server audit MyServerAuditto file ...
服务器审核规范
1 2 3 4
create server audit specification MyServerAuditSpe for server audit MyServerAudit alter server audit specification MyServerAuditSpe add (SERVER_PRINCIPAL_CHANGE_GROUP)
数据库审核规范
1 2 3 4
create database audit specification MyDBAudit for server audit MyServerAudit alter database audit specification MyDBAudit add (SELECTONS)
查看审核历史
1 2
select event_time, succeeded, statement from sys.fn_get_audit_file(…)