sql - 允许安全执行任意sql所需的权限

标签 sql security postgresql sandbox postgis

我想创建一个 SQL 沙箱,允许用户在 PostGIS 数据库中执行任意 SELECT 查询。本质上,我想允许用户访问 psql 来玩。

显然,如果允许写访问,这将是一场安全灾难。我如何创建一个允许查询数据的系统,但用户没有合理的可能性:

  1. 破坏数据库中的数据
  2. 更广泛地访问服务器
  3. 使用像 SELECT * from long_table, long_table, long_table, long_table, long_table, long_table, long_table 这样的查询来削弱系统,这将花费一生的时间来执行

请在您的回答中尽可能具体。

最佳答案

问题 #1 和 #2 是通过显式 GRANT 和 REVOKE 权限处理的,正如其他人所指出的那样。

至于#3,

ALTER ROLE <rolename> SET statement_timeout = '60000'

一直对我很有效。这将终止执行时间超过 1 分钟(60000 毫秒)的任何​​查询。我们在 phpPgAdmin 中有几个用户编写的查询导致问题后发现了这一点......

关于sql - 允许安全执行任意sql所需的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3412248/

相关文章:

PHP 更新用户帐户详细信息未显示错误但帐户详细信息未更新

sql - 我怎样才能交叉标记这个表

java - 保密信息的 secret

arrays - PostgreSQL 难以从 jsonb 列中提取字段

sql - Postgresql:滞后直到找到具有特定值的行,并返回该值

python - 使用 python 将多行导入具有唯一约束的 SQL 表

sql - 查找不连续时间段 YYYYMM00 的最小和最大日期

php - 我需要/什么时候需要验证码?

.net - 使用客户端证书身份验证创建 .NET Web 服务

postgresql - 使用KML生成几何图形