我们有一个运行 Web 应用程序和 SQL Server 的 Web 服务器。
我们的开发人员可以以管理员权限访问该服务器,并定期升级应用程序和添加新的存储过程。
但是,其中的数据库包含敏感信息,我们不希望他们看到,甚至下载。
问题:什么是防止开发人员访问敏感数据的最佳安排?
答案1
您可以执行以下操作:
- 在指定的数据库上创建数据库角色,并明确拒绝对数据库中的指定表/对象的所有必要权限。我们将新角色命名为 dev_denied
- 如果开发人员尚未使用自己的登录名,请在服务器上为其创建一个新帐户。除了服务器角色下的公共角色外,不要授予他们任何其他角色。这将确保他们无法通过其服务器权限更新自己的数据库权限。
- 将开发者账号添加到数据库的db_owner和dev_denied角色中。
这将为您的开发人员提供数据库的管理员权限,但限制他通过新角色明确拒绝的指定对象的访问。
您需要在您的环境中彻底测试这一点。您可以通过为开发人员创建特定的数据库角色并从那里授予他必要的权限来微调您想要授予的访问权限,而无需授予 db_owner 角色,这要安全得多。上述步骤是实现目标的最快方法。
答案2
撤销开发人员对生产系统的访问权限。
当需要升级/更新时,开发人员提供一个包和/或脚本,然后授权的技术人员将执行所需的操作。
此解决方案发挥作用的强制性要求是有意义的测试环境(阅读:测试环境必须与生产同步,但数据)