经过几次谷歌搜索并快速浏览这里的问题后,我似乎找不到我认为是 SQL Server 权限的食谱答案。
正如我在小商店中经常看到的那样,这里的大多数开发人员在开发时都使用 SQL Server 的管理员帐户。我想设置可以分配给开发人员的角色和权限,以便我们可以完成我们的工作,而且还需要最少的权限。任何人都可以提供有关分配哪些 SQL Server 权限的建议吗?
成分:
平台:
由于一些旧应用和网络,我们正在运行“混合模式”安全性,但正在转向 Windows 身份验证。我不确定这是否真的影响角色设置。
我计划将开发人员对 Prod 和 Staging/QA DB 的访问权限设置为只读。但是,我仍然希望开发人员保留运行 Profiling 的能力。
我们需要具有更高权限级别的部署帐户。我们目前正试图弄清楚 SSIS 包部署需要哪些权限。
在开发服务器中,开发人员需要广泛的权限。但是,我不确定让他们全部成为管理员是否真的是最好的选择。
很难相信没有人已经发布了一个体面的示例脚本,为开发人员和部署人员设置了一组合适的适当权限的此类角色。
我们可能可以通过锁定事物然后在发现需要时添加权限来解决所有问题,但这对每个人来说都是太大的 PITA。
任何人都可以指出或提供一个很好的例子来说明这些平台上这些角色的权限吗?
最佳答案
这将因公司而异。关键要素是锁定生产,以便开发人员无法创建或更改对象。我们的开发人员只有产品的数据读取权限,没有别的。除非登录到应用程序并使用应用程序的权限,否则他们甚至无法执行存储过程。
我们在 dev 上为许多开发人员提供了几乎完全的权利,但它可能会有所不同,具体取决于他们应该针对哪些数据库进行开发以及他们要访问哪些服务器以获取他们支持的应用程序。因此,对一个开发服务器具有完全访问权限的开发人员甚至可能没有对另一台开发服务器的选择权限。
通过将开发人员排除在生产之外,我们获得了一些关键的东西。首先,没有牛仔数据库开发。他们知道他们必须为其他人创建脚本才能运行,因此他们不会做出随后忘记的随机更改。这也意味着将脚本置于源代码控制中不是问题,因为有权生产的人只会运行处于源代码控制中的脚本。
接下来,没有人对 prod 进行即时紧急、未经测试的更改,这些更改永远不会涉及 dev 和 qa,因此在下次加载新版本时会丢失。结果,在 prod 上不起作用的更改也减少了,因为现在在有人尝试将其放入 prod 之前,一切都经过了测试。
人们也不会对 prod 进行动态数据更改并意外更新整个用户表,因为他们忘记突出显示 where 子句(是的,这发生在我们锁定 prod 之前)。
关于sql - 为开发人员提供适当的 SQL Server 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2893128/