Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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 带数据库的Web服务器:每个用户一个连接_Sql_Database_Webserver_Database Connection - Fatal编程技术网

Sql 带数据库的Web服务器:每个用户一个连接

Sql 带数据库的Web服务器:每个用户一个连接,sql,database,webserver,database-connection,Sql,Database,Webserver,Database Connection,我们的目标是采用纵深防御的方法来实施最低特权原则。在这种特殊情况下,这意味着由非特权用户发送的查询在数据库端不应有管理员权限。诸如PostgreSQL之类的RDBMS提供了非常强大、表现力强且经过良好测试的访问控制机制:RBAC、行级安全性、参数化视图等。实际上,在使用范例“1应用程序==1用户”的web应用程序中,这些控制通常被完全忽略,因此该用户具有管理员角色。但是重客户端通常在数据库端使用多个不同的用户(每个最终用户一个或每个特定角色一个),因此受益于数据库的访问控制 DB的访问控制是we

我们的目标是采用纵深防御的方法来实施最低特权原则。在这种特殊情况下,这意味着由非特权用户发送的查询在数据库端不应有管理员权限。诸如PostgreSQL之类的RDBMS提供了非常强大、表现力强且经过良好测试的访问控制机制:RBAC、行级安全性、参数化视图等。实际上,在使用范例“1应用程序==1用户”的web应用程序中,这些控制通常被完全忽略,因此该用户具有管理员角色。但是重客户端通常在数据库端使用多个不同的用户(每个最终用户一个或每个特定角色一个),因此受益于数据库的访问控制

DB的访问控制是web应用程序中访问控制的一个补充。网络应用程序中的AC将更加精确,但可能会出现一些错误;DB中的AC将更加宽松,但执行得更好,在出现应用程序错误时限制损害

因此,在我们的例子中,我们希望为每个应用程序用户创建一个DB用户。然后,到数据库的连接属于该特定用户,因此数据库可以强制简单用户不能执行管理操作。中间的一种可能是在执行查询之前删除一些特权,但我们首选的方法是作为当前登录的用户连接到数据库。登录密码由用户在进行身份验证时发送,我们只需将其传递给DBMS。可伸缩性对于我们的应用程序来说还不是一个问题,我们可以牺牲一些可伸缩性来实现这种类型的安全性


您有什么提示可以帮助我们实现这一点吗?

此流程的问题是,如果您有2000个用户登录,则意味着有2000个打开的连接。通常在像asp.net这样的框架中,它们会打开一些连接,这些连接会根据需要循环使用。你想保护什么?删除特权?@alexnode,请告诉我您在这件事上的工作进展。我希望使用4-5个不同类型的用户(已注册、未注册、管理员、员工等)来实现安全目的。短暂性脑缺血发作