今年在都柏林举行的Percona实时开源数据库会议上,我将讨论MySQL 8.0中引入的新功能:角色。 这是一项新的安全性和管理功能,可让数据库管理员简化用户管理并提高多用户环境的安全性。
在数据库管理中,根据业务需要,授予用户访问模式,表或列的权限。 当许多不同的用户需要对不同的特权集进行授权时,管理员必须多次重复授予特权的过程。 这既乏味又容易出错。 使用角色,管理员可以为用户类别定义特权集,然后用户授权将成为单个语句操作。
角色在MySQL社区中早已存在。 我记得有几种第三方解决方案,它们试图在现有特权授予系统之上以黑客的身份实现角色。 多年前,当我不得不管理大量具有不同访问级别的用户时,我创建了自己的解决方案。 从那时起,每当一个新项目承诺缓解角色问题时,我都会尝试一下。 直到现在,他们还没有一家真正提供安全的解决方案。
当我看到MySQL 8中的角色功能时,我进行了广泛的测试,向MySQL团队提供了反馈,并要求更好的可用性。 我很高兴看到团队在最新版本(8.0.2)中解决了我的一些担忧,使角色既易于使用又功能更强大-尽管同时他们引入了一个新的扩展(强制性角色),造成更多问题。 总而言之,我对MySQL团队的态度感到高兴:他们愿意听取我的反馈和我的改进建议。
从实际的角度来看,角色应该在每个人的视野中。 在一个受到良好监管且具有安全意识的组织中,管理员应仅将角色用于特权管理。 该策略不仅简化了用户管理,而且还提供了有关特权使用的有意义的数据。 另外,开发人员应该开始熟悉角色,因为他们很快就会成为主流。 角色与触发器有一个共同点:即开发人员不能忽略的那种功能,这是不了解数据库可以做的事情的惩罚。
尽管角色使日常工作变得更加轻松,但它们也带来了其他挑战。 在MySQL实施中,角色是具有一些细微差异的用户。 尽管这种相似性使管理员可以懒惰并将先前存在的用户分配为其他用户的角色,但从长远来看,这种做法会使管理更加困难。 为了真正受益于此新功能,DBA必须组织起来,并花一些时间计划一下他们如何协调角色以实现最大效率,然后再尝试使用。
许多用户在听说角色时,认为这是现有特权系统的直接扩展。 实际上,角色使用是一个雷区。 许多命令执行看似相同的操作,但通常会导致意外的结果。
我的课程应使基本操作清晰明了,并教与会人员如何避免最常见的陷阱。
要查看我的演讲,请注册2017年Percona Live欧洲开源数据库大会。使用代码SeeMeSpeakPLE17可获得10%的注册优惠。