开发数据库凭证最佳实践?

时间:2014-02-12 07:48:26

标签: mysql database development-environment credentials

处理内部开发数据库凭据的最佳做法是什么?应用程序和开发人员都可以吗?

目前,我们为每个开发数据库创建单独的用户/密码,并在代码库中提交这些凭据。但我们希望不再在我们的存储库中存储凭据。问题是我们的开发人员和应用程序都需要访问数据库。

  • 为开发人员提供他们自己的个人帐户是否可以访问所有开​​发人员数据库是一种好习惯?甚至可能是所有开发和生产数据库?
  • 开发人员是否应该在开发环境中使用自己的个人帐户?或者他们应该使用不同的一个吗?
  • 如果他们应该使用其他帐户,每个开发人员数据库是否都有一组单独的凭据?或者我们应该创建一个可以访问开发人员可以在其所有应用程序中使用的所有开发人员数据库的帐户吗?
  • 如果我们应该为每个开发人员数据库使用单独的帐户,开发人员在为自己设置新的开发环境时应该如何获得这些凭据?我们发现尝试手动跟踪这些(例如维基)非常容易出错并且很快就会过时。

如果重要,我们使用MySQL(确切地说是Percona)。

1 个答案:

答案 0 :(得分:2)

首先确保开发,登台和生产环境100%独立。因此,MySQL帐户也应该是分开的。它有助于平滑地进行版本升级,并且更安全。在Percona,我做了十几个恢复案例,开发人员只是因为生产和开发数据库共享了他的帐户而放弃了生产数据库。

说过开发人员应该在开发数据库上有一个读写帐户,在登台数据库上有只读帐户,在生产时只有只读。

为每个开发人员创建帐户,因此他们负责将它们存储在安全的地方。因此,您无需担心如何以安全的方式存储/共享帐户。

显然,密码不应存储在存储库中。将配置模板保留在源代码树中:

    # cat config.php
    <?php

    $mysql_user="@@MYSQL_USER@";
    $mysql_password="@@MYSQL_PASSWORD@";
    $mysql_host="@@MYSQL_HOST@";
    $mysql_db="@@MYSQL_DB@";

    ?> 

要确保在升级过程中没有覆盖它,请在.spec文件中说明

    %files www
    %config(noreplace) %attr(640, root, apache)  %{_sysconfdir}/%{project_name}/config.php