温馨提示×

centos中sqlplus权限管理

小樊
39
2026-01-02 03:52:30
栏目: 云计算

CentOS 上 Oracle SQL*Plus 权限管理

一 管理边界与前置检查

  • 区分两层权限:
    • 操作系统层(CentOS):控制谁能登录系统、谁能执行 sqlplus 命令(如通过 sudo、组成员、登录 Shell 限制等)。
    • 数据库层(Oracle):控制谁能连库、能执行哪些 系统权限对象权限(如 CREATE SESSION、SELECT ANY TABLE、角色等)。
  • 快速检查清单:
    • 查看系统可登录账户与组:/etc/passwd、/etc/group;锁定/禁用状态可查 /etc/shadow(如字段前缀 !!! 表示锁定;命令 passwd -S <user>chage -l <user> 查看密码与账号过期信息)。
    • 确认 Oracle 环境就绪:环境变量 ORACLE_HOME、ORACLE_SID 正确,实例已启动,监听正常(如 lsnrctl status)。
    • 以管理员身份进入 SQL*Plus:sqlplus / as sysdba(本地操作系统认证)。

二 数据库层权限管理常用操作

  • 创建用户与基础配额
    • 示例:
      CREATE USER app_user IDENTIFIED BY S3cureP@ss
      DEFAULT TABLESPACE users
      TEMPORARY TABLESPACE temp
      QUOTA 100M ON users
      ACCOUNT UNLOCK;
      
  • 授予登录与资源
    • 最小登录:GRANT CREATE SESSION TO app_user;
    • 常用角色:GRANT CONNECT, RESOURCE TO app_user;(按需细化,避免过度授权)
  • 对象权限与授权传播
    • 授予某表权限:GRANT SELECT, INSERT, UPDATE ON hr.employees TO app_user;
    • 允许再授权:GRANT SELECT ON hr.employees TO app_user WITH GRANT OPTION;
  • 系统权限与传播
    • 授予系统权限:GRANT CREATE TABLE TO app_user;
    • 允许再授权:GRANT CREATE TABLE TO app_user WITH ADMIN OPTION;
  • 回收与撤销
    • 回收对象权限:REVOKE SELECT, INSERT, UPDATE ON hr.employees FROM app_user;
    • 回收系统权限:REVOKE CREATE TABLE FROM app_user;
    • 注意:被 WITH GRANT OPTION 授予的权限,回收上级权限后,下级通过传播获得的权限会级联失效;WITH ADMIN OPTION 同理。
  • 角色管理
    • 创建角色:CREATE ROLE app_role;
    • 授予角色:GRANT CREATE SESSION, CREATE TABLE TO app_role;
    • 用户授予角色:GRANT app_role TO app_user;
  • 常用查询
    • 当前用户:SHOW USER;
    • 用户权限/角色:SELECT * FROM USER_SYS_PRIVS;SELECT * FROM USER_TAB_PRIVS;SELECT * FROM USER_ROLE_PRIVS;
  • 最小权限示例(只读应用用户)
    CREATE USER r_only IDENTIFIED BY R0nly#2026;
    ALTER USER r_only DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 50M ON users ACCOUNT UNLOCK;
    GRANT CREATE SESSION TO r_only;
    GRANT SELECT ON hr.employees TO r_only;
    -- 如需批量授权可结合数据字典动态生成 GRANT 语句
    

以上命令均为 SQL*Plus 内执行的标准 DDL/DCL 用法,适用于 Oracle 11g/12c/19c 等常见版本。

三 操作系统层访问控制

  • 限制谁能执行 sqlplus
    • 仅允许特定用户或组使用 sqlplus:通过 sudo 精细化授权(如仅允许 dba 组执行 sqlplus / as sysdba),或在运维脚本中限定执行账户。
    • 示例(/etc/sudoers,使用 visudo):%dba ALL=(ALL) NOPASSWD: /usr/bin/sqlplus
  • 登录与 Shell 限制
    • 禁止交互登录:在 /etc/passwd 将用户 Shell 设为 /sbin/nologin/bin/false(注意这会影响 sqlplus 本地登录,通常仅用于系统服务账户)。
    • 锁定账户:passwd -l <user>(对应 shadow 中 ! 前缀),解锁:passwd -u <user>
  • 合规核查要点
    • 核查 /etc/passwd、/etc/shadow、/etc/group 的账户、组与登录 Shell;使用 passwd -Schage -l 检查密码与账号过期策略,避免共享账号与弱口令。

四 审计与合规建议

  • 数据库审计
    • 开启标准审计或细粒度审计(FGA),记录关键对象的 SELECT/INSERT/UPDATE/DELETE 与 DDL 操作;定期导出审计报告并复核异常行为。
  • 系统审计
    • 启用 auditd,记录 sudo 使用、su 切换、关键目录访问等安全事件;对 sqlplus 二进制与参数文件设置合适的访问权限与完整性校验。
  • 最小权限原则
    • 应用与运维账号遵循“最小够用”,避免使用 SYS/SYSTEM 日常运维;角色与系统权限按需授予,定期回收不必要授权。
  • 变更留痕
    • 权限变更纳入变更管理,保留 DDL 脚本与回退方案;对生产库执行变更前在测试环境验证并评估影响面。

0