Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 何时在数据库中使用应用程序角色? 中选择数据库角色和应用程序角色时应考虑哪些事项?_Sql Server_Security_Roles - Fatal编程技术网

Sql server 何时在数据库中使用应用程序角色? 中选择数据库角色和应用程序角色时应考虑哪些事项?

Sql server 何时在数据库中使用应用程序角色? 中选择数据库角色和应用程序角色时应考虑哪些事项?,sql-server,security,roles,Sql Server,Security,Roles,我了解每种类型的角色是如何工作的,但我很难理解应用程序角色何时适合在数据库角色上使用 到目前为止,我只是在应用程序中使用了数据库角色。我基本上为每个用户创建了一个帐户,然后使用GRANT语句将他们分配到他们需要访问的任何角色。该应用程序只是一个简单的数据输入/报告应用程序 使用应用程序角色有什么好处吗?如果有,我该如何使用它们?具体来说,我如何确保给定用户不能访问他们不应该访问的对象。我需要多个应用程序角色还是有其他方法?应用程序角色的声明目的是将一组安全性附加到“应用程序”上。其思想是,app

我了解每种类型的角色是如何工作的,但我很难理解应用程序角色何时适合在数据库角色上使用

到目前为止,我只是在应用程序中使用了数据库角色。我基本上为每个用户创建了一个帐户,然后使用
GRANT
语句将他们分配到他们需要访问的任何角色。该应用程序只是一个简单的数据输入/报告应用程序


使用应用程序角色有什么好处吗?如果有,我该如何使用它们?具体来说,我如何确保给定用户不能访问他们不应该访问的对象。我需要多个应用程序角色还是有其他方法?

应用程序角色的声明目的是将一组安全性附加到“应用程序”上。其思想是,approle密码仅为应用程序所知,并且实际上是在其中定义的(以适当的模糊方式)

如果用户具有固定的数据库安全级别,并且在使用特定应用程序时需要不同的安全级别,则可能需要使用应用程序角色。否则就不用麻烦了

例如,Joe使用其数据库凭据登录数据库,但应仅读取(而不是更改)表中的数据

Joe通过financial应用程序使用相同的数据库。应用程序碰巧使用相同的凭据进行连接(Joe)

但是,通过应用程序,还需要允许他插入/更新表

在这种情况下,您将使用应用程序角色通过在应用程序中调用sp_setapprole来覆盖Joe的安全性

(如果乔知道密码是什么,他实际上可以自己调用此sp…但他不应该知道)

应用程序在前端会有一些验证,阻止他对数据做一些愚蠢的事情


这是一个非常特殊的情况。

应用程序角色的声明目的是将一组安全性附加到“应用程序”上。其思想是,approle密码仅为应用程序所知,并且实际上是在其中定义的(以适当的模糊方式)

如果用户具有固定的数据库安全级别,并且在使用特定应用程序时需要不同的安全级别,则可能需要使用应用程序角色。否则就不用麻烦了

例如,Joe使用其数据库凭据登录数据库,但应仅读取(而不是更改)表中的数据

Joe通过financial应用程序使用相同的数据库。应用程序碰巧使用相同的凭据进行连接(Joe)

但是,通过应用程序,还需要允许他插入/更新表

在这种情况下,您将使用应用程序角色通过在应用程序中调用sp_setapprole来覆盖Joe的安全性

(如果乔知道密码是什么,他实际上可以自己调用此sp…但他不应该知道)

应用程序在前端会有一些验证,阻止他对数据做一些愚蠢的事情


这是一个非常特殊的情况。

通常,当我们创建应用程序角色时,它们是为那些喜欢管理自己的安全性并希望独立于SQL Server安全性的应用程序提供的,并且我们希望它们访问数据库中的某些表,这些表可能不是所有的对象。这些用于静态应用程序,其中用户来做一些事情,用户将使用这些应用程序角色在数据库中进行更改

通常在我们创建应用程序角色时,它们适用于那些喜欢管理自身安全性并希望独立于SQL Server安全性的应用程序,我们希望它们能够访问数据库中的某些表,这些表可能不是所有的对象。这些是用于静态应用程序的,用户来做一些事情,用户将使用这些应用程序角色在数据库中进行更改