You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在APEX中配置用户仅拥有工作空间的只读查询权限?

解决APEX用户只读查询权限的方案

要实现让USER只能执行SELECT查询、无法修改数据或创建对象,得从数据库层面权限控制APEX工作空间权限配置两方面入手,光靠启用/禁用SQL Workshop肯定不够,具体步骤如下:

一、先从数据库层面锁死核心权限

APEX的所有操作最终都依赖数据库用户的权限,这是最基础的控制环节:

  1. 用你的ADMIN账号登录SQL Workshop(或者SQL*Plus等数据库客户端)。
  2. 给USER授予目标模式下的只读权限:
    -- 给整个模式下的所有表授权SELECT,替换YOUR_SCHEMA为你的实际模式名
    GRANT SELECT ON YOUR_SCHEMA.* TO USER;
    
    -- 如果只需要特定表,改成具体表名,比如:
    -- GRANT SELECT ON YOUR_SCHEMA.EMPLOYEES, YOUR_SCHEMA.DEPARTMENTS TO USER;
    
  3. 收回USER所有可能的修改和对象创建权限(如果之前误授予过的话):
    -- 收回插入、更新、删除等DML权限
    REVOKE INSERT, UPDATE, DELETE, MERGE ON YOUR_SCHEMA.* FROM USER;
    
    -- 收回创建表、包、存储过程等DDL权限
    REVOKE CREATE TABLE, CREATE VIEW, CREATE PACKAGE, CREATE PROCEDURE, CREATE FUNCTION FROM USER;
    
  4. 确保USER只保留最基础的登录权限:
    -- 先收回可能的多余角色(比如RESOURCE)
    REVOKE RESOURCE FROM USER;
    -- 只授予登录权限
    GRANT CREATE SESSION TO USER;
    

二、在APEX工作空间里限制操作范围

数据库权限锁死之后,还要在APEX里细化工作空间用户的操作权限,防止在SQL Workshop里执行非法操作:

  1. 以ADMIN身份登录APEX,进入工作空间管理用户和组用户,找到USER并点击编辑。
  2. 在「角色分配」区域,只给USER分配SQL Developer角色(别给Workspace Administrator或Developer,这俩权限太宽泛)。
  3. 接下来细化SQL Developer角色的权限:
    • 进入工作空间管理安全权限集
    • 找到「SQL Developer」权限集,点击编辑。
    • 在「SQL Workshop权限」部分,取消勾选这些选项:
      • 创建表
      • 创建视图
      • 创建程序单元(包、存储过程等)
      • 编辑数据(插入、更新、删除)
      • 运行DDL语句
    • 只保留「执行SELECT查询」「查看对象信息」这类只读相关的权限。
  4. 保存修改后的权限集。

三、验证效果

用USER账号登录APEX,进入SQL Workshop:

  • 尝试执行SELECT * FROM YOUR_SCHEMA.TABLE_NAME;,应该能正常返回数据。
  • 尝试执行INSERT INTO YOUR_SCHEMA.TABLE_NAME VALUES(...);或者CREATE TABLE TEST(ID NUMBER);,应该会直接提示权限不足,无法执行。

这样就能完全满足你的需求:USER可以编写并执行SELECT查询,但碰不了数据修改和对象创建的操作。

内容的提问来源于stack exchange,提问作者Ravi Shankar

火山引擎 最新活动