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