- 首页 >
- 问答 >
-
云计算 >
- SQLPlus在Linux中的权限管理
SQLPlus在Linux中的权限管理
小樊
39
2025-12-16 18:02:35
SQL*Plus 在 Linux 的权限管理
一 权限模型与最小权限原则
- 权限分为两层:
- 操作系统层:谁能执行 sqlplus 二进制、谁能读取/写入相关目录与配置文件;
- 数据库层:数据库账户能否登录、能否执行 DDL/DML、能否执行管理操作(如 SYSDBA)。
- 建议遵循最小权限原则:日常业务使用普通用户+必要角色;SYSDBA仅限极少数受控场景与受控账户使用。
- 常见误区:把 SYS 或 SYSDBA 用于日常业务;共享操作系统账号;把 sqlplus 放在全局可写目录。
二 操作系统层权限配置
- 专用操作系统账号与组:创建 oracle 用户与 oinstall/dba 组,仅允许该账号访问 $ORACLE_HOME、$ORACLE_BASE 与数据文件目录。
- 文件与目录权限示例(按最小权限设置):
- 关键目录:
- $ORACLE_HOME/bin:仅 oracle:oinstall 0750
- $ORACLE_HOME/lib、rdbms、sqlplus 等子目录:oracle:oinstall 0750
- $ORACLE_BASE/oradata、diag、fast_recovery_area:oracle:oinstall 0750(数据文件/归档/诊断信息)
- 客户端/脚本目录:业务脚本与钱包目录仅对 oracle 与必要组 0750/0700,严禁全局可写。
- 安全基线:
- 禁止以 root 直接运行 sqlplus;
- 使用 sudo 精细授权(仅允许特定命令与参数);
- 审计关键目录与 sqlplus 执行(auditd/firewalld/SELinux/AppArmor 配合使用)。
三 数据库层权限与角色
- 登录与基础权限:新用户默认无任何权限,需显式授予。常用最小集:
- 登录:GRANT CREATE SESSION TO ;
- 对象创建:GRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE TO ;
- 表空间:ALTER USER DEFAULT TABLESPACE ;(必要时设置配额)
- 角色使用:
- 传统角色:CONNECT(连接与会话)、RESOURCE(在任意表空间建表等)、DBA(谨慎授予);
- 生产建议:优先授予具体权限或自定义角色,避免直接授予 DBA。
- 管理权限:
- SYSDBA 为最高管理权限,使用操作系统认证(如 sqlplus / as sysdba)时依赖 OS 身份与 Oracle 的 OSDBA 组映射;
- 建议仅限应急与受控维护窗口使用,并留存审计记录。
- 回收与清理:不再使用的账户及时 REVOKE,必要时 DROP USER … CASCADE。
四 常见连接方式与权限差异
- 本地操作系统认证:sqlplus / as sysdba(走 OSDBA 组,无需口令,权限最高,慎用于日常)。
- 口令认证本地/远程:sqlplus sys/password as sysdba;sqlplus username/password@orcl。
- 先入后连:sqlplus /nolog 后 CONNECT …(避免在命令行暴露口令)。
- 连接串形式:sqlplus sys/password@//host:port/service_name;或 sqlplus username/password@net_service_name。
- 监听与实例状态:若提示 connected to an idle instance,需先启动实例(startup)或检查监听(lsnrctl status/start)。
五 安全加固清单与快速示例
- 加固清单:
- 操作系统:专用 oracle 账号、0750 目录权限、禁用 root 直连、sudo 精细化、审计与加固(auditd/SELinux/防火墙);
- 数据库:最小权限与自定义角色、禁用默认 PUBLIC 可执行过程(如 UTL_FILE/UTL_TCP 等按需收回)、启用统一审计、强口令与口令轮换、限制 SYSDBA 使用范围与审批;
- 网络:仅开放必要端口(如 1521/TCP)、ACL/白名单、必要时启用 TCPS。
- 快速示例(最小权限创建业务用户):
- 创建用户与默认表空间:
- CREATE TABLESPACE app_ts DATAFILE ‘/u01/app/oracle/oradata/ORCL/app01.dbf’ SIZE 500M AUTOEXTEND ON;
- 创建用户并授权:
- CREATE USER app_user IDENTIFIED BY <strong_password>;
- ALTER USER app_user DEFAULT TABLESPACE app_ts QUOTA UNLIMITED ON app_ts;
- GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE TO app_user;
- 管理员维护(仅在需要时):
- sqlplus / as sysdba(OS 认证,最高权限,务必受控与留痕)。