我正在管理两台遵循开发和生产机器模型的服务器。
生产机器是剥离的准系统软件,在限制性规则集和有限访问权限下运行。然而,开发机器更加开放——开发人员几乎可以要求安装任何东西(除了一些例外),他们可以获得无限数量的 MySQL 数据库进行测试。
然而,在两台服务器上,开发人员都必须要求新的用户名/密码/数据库组合,这通常在开发机器上被接受,并且只有在 Web 应用程序完成、完善、安全并准备起飞时才在生产机器上接受.
有没有办法在开发机器上为每个开发人员创建一个具有创建(只是创建,而不是读取/修改/删除)具有固定权限集的模板用户的权限的用户?这样他们就可以创建自己的新的安全用户名/密码/数据库集,而无需等待我接受他们的查询。
我们的开发服务器暴露在外面(因此开发人员可以 ssh 并在家工作)所以我不想给一个用户很多权限,因为服务器上托管的应用程序的实验性质。(如果数据库受到威胁,它可以做的最好的事情是删除应用程序数据库,而不是用户有权访问的所有数据库)。
MySQL 没有“模板化权限”的概念。提供了一些有用的听起来权限类型,但这些权限类型不够细,无法构建等效的内容。
您的数据库创建用户必须执行三个步骤:
如您所见,除了用户创建部分之外,它几乎都可以正常工作。一种可能的折衷方案是创建每个开发人员的用户,这些用户可以创建和使用多个测试数据库:
这将创建一个用户“dev1”,该用户只能创建和使用以“dev1_”开头的数据库。
由于 MySQL 不能单独提供解决方案,我建议只编写一个程序来执行数据库和用户名创建步骤。开发人员可以像这样调用问题:
由于您的程序正在控制数据库/用户的创建,因此您可以:
这样的程序必须使用和保护您的 MySQL 根密码。如何实现这一点取决于平台。
祝你好运!
嗯,为什么不让开发人员在他们的开发虚拟机中管理他们自己的服务器,并使用与生产相同的安全锁定(尽管密码不同等)?
我在这里错过了什么吗?开发不应该与生产相同,每个开发人员不应该有自己的环境,他们可以随心所欲地玩吗?