安全播报

防御吧作为15年知名老牌域名服务商,CNNIC和CANN双认证域名注册商,已经
持续为500多万个域名提供服务,包括智能DNS/自由转移/隐私保护等服务!
云安全:数据库权限的分配与回收
2021-08-08 16:04:01 【

数据安全的最重要措施就是数据库账号的权限管理,通常情况下数据库账号会分配给应用程序、开发人员以及数据库管理员(DBA),还有可能分配给其他需要利用数据进行分析的非技术人员。

数据库权限

数据库权限主要是以用户可以允许执行的SQL语句来划分,SQL语言可以分为四类操作:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。

非技术人员通常只能使用DQL语句,这也是权限最低的SQL操作。数据查询语言的基本结构是由SELECT子句、FROM子句WHERE子句构成。

SELECT <字段名表> FROM <表或视图名> WHERE <查询条件>

现在很多数据分析人员,都可以熟练使用SQL语言进行自定义查询,不再需要技术人员开发报表功能。

开发人员的权限管理

对于一般开发人员的权限分配,除了DQL以外,还有DML,也就是要满足增删改查(CRUD)的需求。

以下语句就是分别为普通开发人员 zhangsan 分配 MySQL 数据库的增删改查权限,delete操作要慎重分配。

grantselecton testdb.* to zhangsan@’%’grantinserton testdb.* to zhangsan@’%’grantupdateon testdb.* to zhangsan@’%’grantdeleteon testdb.* to zhangsan@' %’

对于高级开发人员的权限分配,主要需要数据定义语言DDL,利用DDL语句来创建数据库中的各种对象-----表(Table)、视图(View)、索引(Index)等。这种操作通常需要由有经验的开发人员来完成。

以下语句实现了通过 grant 语句来分配创建、修改和删除 MySQL 数据表结构的权限。

grantcreateon testdb.* to lisi@’192.168.0.%’;grantalteron testdb.* to lisi@’192.168.0.%’;grantdropon testdb.* to lisi@’192.168.0.%’;

分配创建 MySQL 外键权限。

grantreferenceson testdb.* to lisi@’192.168.0.%’;

分配创建 MySQL 临时表权限。

grantcreatetemporarytableson testdb.* to lisi@’192.168.0.%’;

分配创建 MySQL 索引权限。

grantindexon testdb.* to lisi@’192.168.0.%’;

分配创建 MySQL 视图、查看视图源代码权限。

grantcreateviewon testdb.* to lisi@’192.168.0.%’;grantshowviewon testdb.* to lisi@’192.168.0.%’;

分配创建 MySQL 存储过程、函数权限。

grantcreate routine on testdb.* to lisi@’192.168.0.%’; — now, can showprocedurestatusgrantalter routine on testdb.* to lisi@’192.168.0.%’; — now, you can drop a proceduregrantexecuteon testdb.* to lisi@’192.168.0.%’;

更高权限的分配

数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等,通常这种特殊权限会分配给DBA使用。如:

  • GRANT:授权。

  • ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。回滚命令使数据库状态回到上次最后提交的状态。

  • COMMIT [WORK]:提交。

以下语句将testdb的所有权限都分配给dba账户

grantallprivilegeson testdb to dba@’localhost’

其中,关键字 “privileges” 可以省略。

以下语句更厉害,将使得高级 DBA 获得管理 MySQL 中所有数据库的权限。

grantallon *.* to dba@’localhost’

权限的撤销

使用revoke语句可以撤销已经赋予给 MySQL 用户权限的权限。revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:

grantallon *.* to dba@localhost;revokeallon *.* from dba@localhost;

在使用grant 或 revoke语句分配或撤销权限后,该用户只有重新连接 MySQL 数据库,新的权限才能生效。

总结

在数据库权限分配和管理中,应当严格区分账户的用途,并按照最小可用原则分配对应的权限。当账户不再使用以后,应当立即收回权限。


】【打印关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇如何使用WFH搜索Windows可执行程.. 下一篇CWE-384: Session Fixation 会话..

立足首都,辐射全球,防御吧专注云防御及云计算服务15年!

联系我们

服务热线:010-56157787 ,010-56159998
企业QQ:4000043998
技术支持:010-56159998
E-Mail:800@fangyuba.com
Copyright ? 2003-2016 fangyuba. 防御吧(完美解决防御与加速) 版权所有 增值许可:京B2-20140042号
售前咨询
公司总机:4000043998 01056155355
24小时电话:010-56159998
投诉电话:18910191973
值班售后/技术支持
售后服务/财务
备案专员
紧急电话:18610088800