温馨提示×

centos sqlplus权限管理策略

小樊
37
2025-12-29 06:18:26
栏目: 云计算

CentOS 上 SQL*Plus 权限管理策略

一 权限模型与最小权限原则

  • 权限对象分为:
    • 系统权限(如:CREATE SESSION、CREATE TABLE、CREATE VIEW、CREATE PROCEDURE
    • 对象权限(如表/视图/存储过程上的 SELECT、INSERT、UPDATE、DELETE、EXECUTE
    • 角色(如:CONNECT、RESOURCE、DBA;建议优先用自定义角色做最小授权)
  • 操作范式:
    • 创建专用业务用户(避免使用 SYS/SYSTEM 日常登录)
    • 仅授予完成工作所需的最小权限(最小权限原则)
    • 通过角色封装权限,便于审计与回收
    • 明确对象权限的授予者是否可转授(GRANT OPTION)
    • CDB/PDB 多租户环境中,权限通常在 PDB 内授予,公共用户需谨慎使用且遵循代理认证规范

二 标准操作流程与常用命令

  • 创建用户与配额(示例)
    CREATE USER app_user IDENTIFIED BY Str0ngP@ssw0rd
    DEFAULT TABLESPACE users
    TEMPORARY TABLESPACE temp
    QUOTA 10M ON users;
    
  • 授予系统权限与对象权限(最小集)
    -- 仅允许连接与建表
    GRANT CREATE SESSION, CREATE TABLE TO app_user;
    
    -- 只读某业务表(示例)
    GRANT SELECT ON hr.employees TO app_user;
    
    -- 读写并允许再授权(谨慎)
    GRANT SELECT, INSERT, UPDATE, DELETE ON sales.orders TO app_user WITH GRANT OPTION;
    
  • 创建角色并授予用户(推荐)
    CREATE ROLE app_role;
    GRANT CREATE SESSION, CREATE VIEW, CREATE PROCEDURE TO app_role;
    GRANT SELECT, INSERT, UPDATE ON sales.orders TO app_role;
    GRANT app_role TO app_user;
    
  • 设置默认角色(连接即生效)
    ALTER USER app_user DEFAULT ROLE app_role;
    
  • 回收与拒绝再授权
    -- 回收对象权限
    REVOKE DELETE ON sales.orders FROM app_user;
    
    -- 禁止某权限继续被转授(示例)
    REVOKE GRANT OPTION FOR SELECT ON hr.employees FROM app_user;
    
  • 权限验证
    -- 查看系统权限
    SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'APP_USER';
    
    -- 查看对象权限
    SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'APP_USER';
    
    -- 查看角色授予
    SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'APP_USER';
    
  • 连接测试(SQL*Plus)
    sqlplus app_user/Str0ngP@ssw0rd@//dbhost.example.com:1521/orclpdb
    

三 安全加固与运维要点

  • 账户与口令策略
    • 使用强口令并定期更换;通过 PROFILE 强制复杂度与有效期(示例)
      ALTER PROFILE DEFAULT LIMIT
        PASSWORD_LIFE_TIME 90
        FAILED_LOGIN_ATTEMPTS 5
        PASSWORD_VERIFY_FUNCTION verify_function_11G;
      
  • 网络与监听安全
    • 仅放通必要来源 IP 与端口(默认 1521/TCP
      firewall-cmd --zone=public --add-port=1521/tcp --permanent
      firewall-cmd --reload
      
    • listener.ora / sqlnet.ora 中启用白名单、限制可连接服务与来源网段
  • 审计与合规
    • 启用登录与关键数据访问审计(示例)
      AUDIT CREATE SESSION BY app_user BY ACCESS;
      AUDIT SELECT TABLE, INSERT TABLE, UPDATE TABLE, DELETE TABLE BY app_user BY ACCESS;
      
  • 客户端与配置文件安全
    • 限制 ~/.sqlplusrc、连接串脚本等敏感文件权限(如 chmod 600
    • 避免在命令行历史或脚本中明文存放口令;优先交互式输入或使用安全凭据存储
  • 常见错误与排查
    • ORA-01031: insufficient privileges:核对是否缺少 CREATE SESSION/对象权限/角色;确认角色是否为默认角色或已手动激活(如 SET ROLE
    • 连接失败:检查 防火墙监听状态(lsnrctl status)TNS/服务名解析(tnsping) 与网络连通性

四 多租户与常见场景建议

  • CDB$ROOT 仅授予必要的公共权限;业务权限在 PDB 内授予,避免跨容器越权
  • 应用连接应使用指向 PDB 服务名 的连接串,避免误用 ORACLE_SID 指向 CDB
  • 只读业务建议采用视图封装同义词,只暴露必要列与行(配合策略或 VPD)
  • 运维与备份类账号分离:数据泵导入导出使用专用账号并授予 EXP_FULL_DATABASE / IMP_FULL_DATABASE,通过 DIRECTORY 对象控制可访问路径
  • 定期审计与回收:对离职人员、项目下线、权限变更建立变更单+复核流程,定期清理不必要的 WITH GRANT OPTION 与过宽角色

五 重要纠正

  • FLUSH PRIVILEGESMySQL 的命令,Oracle 不需要也不支持;Oracle 的授权/回收在提交后即时生效(受会话/角色默认设置影响)。请勿在 Oracle 中执行该命令。

0