Jak*_*ake 2 sql-server security roles
在 SQL Server 中选择数据库角色和应用程序角色时应该考虑哪些事项?
我了解每种角色的工作方式,但我很难理解应用程序角色何时适合用于数据库角色。
到目前为止,我只是在我的应用程序中使用了数据库角色。我基本上为每个用户创建了一个帐户,然后将他们分配给他们需要访问 usingGRANT语句的任何角色。有问题的应用程序只是一个简单的数据输入/报告应用程序。
使用应用程序角色是否有任何好处,如果有,我该如何使用它们?具体来说,我如何确保给定用户无法访问他们不应该访问的对象。我需要多个应用程序角色还是有其他方法?
应用程序角色的声明目的是将一组安全性附加到“应用程序”。这个想法是 approle 密码只有应用程序知道,并且实际上是在其中定义的(以适当的混淆方式)
如果您的用户具有固定的数据库安全级别,而在使用特定应用程序时需要不同的安全级别,那么您可能需要使用应用程序角色。否则不要打扰
例如,Joe 使用他的数据库凭据登录到数据库,但应该只读取(而不是更改)表中的数据
Joe 通过财务应用程序使用相同的数据库。应用程序碰巧使用相同的凭据进行连接 (Joe)
然而,通过应用程序,他还需要被允许插入/更新表。
在这种情况下,您将使用应用程序角色通过在应用程序中调用 sp_setapprole 来覆盖 Joe 的安全性
(如果 Joe 知道密码是什么,他实际上可以自己调用这个 sp……但他不应该知道)
应用程序将在前端进行一些验证,阻止他对数据做愚蠢的事情。
这是一个非常具体的案例。