您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > My SQL安全策略研究
MySQL安全策略研究--保证MySQL安全是保护数据完整性和私密性的关键目录账户权限安全...........................................................................................................................21.1MySQL中的账号.......................................................................................................21.2授权表........................................................................................................................21.3权限............................................................................................................................31.4设置MySQL权限......................................................................................................41.5权限与性能................................................................................................................51.6常见安全隐患............................................................................................................5数据加密安全...........................................................................................................................62.1账号密码加密............................................................................................................62.2数据加密....................................................................................................................62.3数据加密与性能........................................................................................................6数据备份安全...........................................................................................................................73.1备份的重要性............................................................................................................73.2具体备份策略............................................................................................................73.3主从复制....................................................................................................................73.4还原............................................................................................................................8操作系统安全.........................................................................................................................10网络安全.................................................................................................................................11账户权限安全--确保MySQL账号都有足够强度的密码和适当的权限1.1MySQL中的账号MySQL账号跟大多数系统里的不太一样,由用户名以及登陆来源(常常是主机名、IP地址或通配符)构成,例如在授权表USER中,是以User和Host作为该表的联合主键,在其它低级别授权表中还需加入数据库名或表名等信息作为联合主键。由此MySQL账号需要注意几个方面,在用GRANT语句授权时应该给用户名和登陆地址分别加引号中间用@隔开,标准语句为:GRANTALLPRIVILEGESON*.*TO'user'@'%'IDENTIFIEDby'password';同时,可以合理的使用通配符来指定组策略和IP策略:GRANT...ON'database\_%'.*TO'user'@'192.168.1.%'IDENTIFIEDby'password';MySQL认为相同用户名但是不同主机名就是完全不同的用户,这有助于对同一用户从不同的地方来连接时赋予完全不同的权限,但是,这种策略其中潜在的混乱和问题会远远超过它能带来的好处,因此,不要重用用户名。密码强度也是账户一个很重要的方面,有很多检测密码强度的工具,例如微软的密码检查器:授权表MySQL拥有比较健全的权限信息,从系统级一直可以细化到表级、字段级。所有的授权表信息全部以MyISAM存储引擎的格式储存在MySQL数据库中。User:列出可以连接服务器的用户及其口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果你启用了DELETE权限,在这里列出的用户可以从任何表中删除记录,所以在你这样做之前要认真考虑。Db:列出数据库,指出哪些用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。Host:host表与db表结合使用,在一个较好层次上控制特定主机对数据库的访问权限,该表不能够通过GRANT、REVOKE来进行修改,只能手动增加和删除其中条目,但是为防止MySQL出现各种怪异行为,建议不要动这张表。tables_priv:指定表级权限,在这里指定的一个权限适用于一个表的所有列。columns_priv:指定列级权限。这里指定的权限适用于一个表的特定列。Procs_priv:指点存储过程和函数的权限。MySQL在授权表里检查权限的次序就是以上授权表的排列顺序,若在较高层级已经能够匹配功能授权以后则停止检查。1.3权限MySQL的权限主要分为数据库、表权限以及管理权限。数据库、表权限:ALTER允许你使用ALTERTABLE语句,这个权限慎重,以为可以通过这个权限修改表名来获取无法访问的表的信息,例如user对table1有访问权,对table2没有访问权,他可以通过更改table2的表名为table1来变相获取访问权限。CREATE允许你创建数据库和表,但不允许创建索引。DELETE允许你从表中删除现有记录。DROP允许你删除(抛弃)数据库和表,但不允许删除索引。INDEX允许你创建并删除索引。REFERENCES目前不用。SELECT允许你使用SELECT语句从表中检索数据。对不涉及表的SELECT语句就不必要,如SELECTNOW()或SELECT4/2。UPDATE允许你修改表中的已有的记录。管理权限:用于控制服务器或用户授权能力的管理性操作权限。FILE允许你告诉服务器读或写服务器主机上的文件。该权限不应该随便授予,它很危险。服务器确实较谨慎地保持在一定范围内使用该权限。你只能读任何人都能读的文件。你正在写的文件必须不是现存的文件,这防止你迫使服务器重写重要文件。如果你授权FILE权限,确保你不以系统管理员用户身份运行服务器,因为root可在文件系统的任何地方创建新文件。如果你以一个非特权用户运行服务器,服务器只能在给用户能访问的目录中创建文件。GRANT允许你将你自己的权限授予别人,包括GRANT。PROCESS允许你通过使用SHOWPROCESS语句或mysqladminprocess命令查看服务器内正在运行的线程(进程)的信息。这个权限也允许你用KILL语句或mysqladminkill命令杀死线程。你总是能看到或杀死你自己的线程。PROCESS权限赋予你对任何线程做这些事情的能力。RELOAD允许你执行大量的服务器管理操作。你可以发出FLUSH语句,你也能指性mysqladmin的reload、refresh、flush-hosts、flush-logs、flush-privileges和flush-tables等命令。SHUTDOWN允许你用mysqladminshutdown关闭服务器。SUPER允许用户做超级用户的操作(例如更改服务器上的只读数据),MySQL会为有SUPER权限的用户保留一条连接,哪怕是服务器已经达到了max_connections的极限。这可以让你在服务器无法再接受普通的客户端连接时,还能接入并管理服务器。应该尽量避免把SUPER权限授予太多的用户,但是,当有一些其他的普通用途(例如清楚master日志)也需要用到它时,就很难把握了。1.4设置MySQL权限除了自带的系统管理员账号以外还应该创建单独的数据库管理员账号,因为当有超过一个DBA需要访问MySQL时,为他们分别创建一个单独的账号要好过让他们共用一个root账号,这样的设置提供了更强的责任性和可审查性。在设置管理员账号时一个好的小技巧是尽量改变管理员的默认用户名,例如将root更改为newroot等一般人不易想到的名称,这有时也能够起到加到攻击者实施攻击的难度。为每一个使用数据库的人员单独创建账号,但是由于MySQL没有提供用户组或角色这样的功能,可以将它的名称命名在一个特定的功能角色名称后面,例如custserv或者analyst,这样的好处是可以通过通配符批量修改用户权限,但是该方法在管理性上面可能会存在一定问题,具体使用中需要再仔细权衡。对于日志账户仅需要其对日志表有只写权限即可。对备份账户的权限,他一般只需要用到SELECT和LOCKTABLES两项权限,LOCKTABLES权限是数据库级别的,它只会赋予对具体表有SELECT权限的用会LOCKTABLES权限。如果一个用户是使用SELECTINTOOUTFILE来执行的备份,那么他还需要一个FILE权限,不过这个权限是系统级权限,要格外慎重。操作和监控
本文标题:My SQL安全策略研究
链接地址:https://www.777doc.com/doc-4580131 .html