centos sqlplus权限管理策略
导读:CentOS 上 SQL*Plus 权限管理策略 一 权限模型与最小权限原则 权限对象分为: 系统权限(如:CREATE SESSION、CREATE TABLE、CREATE VIEW、CREATE PROCEDURE) 对象权限(如...
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;
- 使用强口令并定期更换;通过 PROFILE 强制复杂度与有效期(示例)
- 网络与监听安全
- 仅放通必要来源 IP 与端口(默认 1521/TCP)
firewall-cmd --zone=public --add-port=1521/tcp --permanent firewall-cmd --reload - 在 listener.ora / sqlnet.ora 中启用白名单、限制可连接服务与来源网段
- 仅放通必要来源 IP 与端口(默认 1521/TCP)
- 审计与合规
- 启用登录与关键数据访问审计(示例)
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 PRIVILEGES 是 MySQL 的命令,Oracle 不需要也不支持;Oracle 的授权/回收在提交后即时生效(受会话/角色默认设置影响)。请勿在 Oracle 中执行该命令。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos sqlplus权限管理策略
本文地址: https://pptw.com/jishu/782708.html
