温馨提示×

怎样定制Ubuntu Oracle用户权限

小樊
39
2025-12-28 12:30:07
栏目: 云计算

Ubuntu上定制Oracle用户权限的完整步骤

一 操作系统层准备

  • 创建专用用户与组:至少需要oinstall(软件安装/属主)与dba(DBA管理)两个组,并创建oracle用户加入对应组;必要时可创建nobody用于运行相关服务。示例:sudo addgroup oinstall;sudo addgroup dba;sudo addgroup nobody;sudo useradd -m -s /bin/bash oracle;sudo gpasswd -a oracle oinstall;sudo gpasswd -a oracle dba;sudo usermod -g nobody nobody;sudo passwd oracle;完成后用 id oracle 检查组成员是否包含 oinstall 与 dba。
  • 创建目录与权限:建议将数据与软件分离,如**/opt/oracle**(软件)、/opt/oradata(数据)。示例:sudo mkdir -p /opt/oracle /opt/oradata;sudo chown -R oracle:oinstall /opt/ora*;sudo chmod -R 775 /opt/ora*。
  • 内核参数与资源限制:编辑**/etc/sysctl.conf**,加入示例值(按内存与业务调整):kernel.shmall=2097152;kernel.shmmax=2147483648;kernel.shmmni=4096;kernel.sem=250 32000 100 128;fs.file-max=65536;net.ipv4.ip_local_port_range=1024 65000;执行 sysctl -p 生效。编辑**/etc/security/limits.conf**,为 oracle 设置:oracle soft nofile 65536;oracle hard nofile 65536;oracle soft nproc 16384;oracle hard nproc 16384
  • 兼容性软链接与系统标识(旧版本如 Oracle 10g 在 Ubuntu 上常见):sudo ln -s /usr/bin/awk /bin/awk;sudo ln -s /usr/bin/rpm /bin/rpm;sudo ln -s /usr/bin/basename /bin/basename;为安装器创建标识文件:echo “Red Hat Linux release 4.1” | sudo tee /etc/redhat-release。
  • 环境变量:以 oracle 用户编辑 ~/.bash_profile 或 /etc/bash.bashrc,设置 ORACLE_BASE、ORACLE_HOME、ORACLE_SID、PATH,例如:export ORACLE_BASE=/opt/oracle;export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1(路径按实际);export ORAC.ORACLE_SID=ORCL;export PATH=$ORACLE_HOME/bin:$PATH;完成后执行 source 使生效。

二 数据库层用户与权限设计

  • 登录数据库:以 DBA 身份连接 sqlplus / as sysdba。
  • 创建用户与默认表空间:CREATE USER app1 IDENTIFIED BY DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp_ts QUOTA 500M ON users PROFILE app_profile; 临时表空间用于排序/哈希,避免占用 SYSTEM。
  • 授予对象权限与系统权限:按需授予,例如 GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO app1; 如需跨用户访问对象,授予对象权限:GRANT SELECT, INSERT, UPDATE, DELETE ON hr.employees TO app1; 撤销权限用 REVOKE。
  • 角色与默认角色:创建自定义角色并授予最小必要权限,再授予用户;设置默认角色,使登录自动启用:CREATE ROLE app_role; GRANT CREATE SESSION, CREATE TABLE TO app_role; GRANT app_role TO app1; ALTER USER app1 DEFAULT ROLE app_role; 默认角色在 CREATE USER 时为 ALL,后续可用 ALTER USER 调整。
  • 安全应用角色:对敏感角色,可用安全应用角色(由 PL/SQL 包控制启用条件,如 IP、时间窗)限制谁能启用该角色,提升应用层安全。

三 常用配置示例

  • 应用开发账号:CREATE USER app_dev IDENTIFIED BY DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp_ts QUOTA 1G ON users; GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE TO app_dev;
  • 只读报表账号:CREATE USER rpt_ro IDENTIFIED BY DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp_ts; GRANT CREATE SESSION TO rpt_ro; GRANT SELECT ON hr.employees TO rpt_ro; GRANT SELECT ON oe.orders TO rpt_ro;(按需为更多表授予 SELECT)
  • 应用专用账号(禁止直接登录):CREATE USER app_svc IDENTIFIED BY DEFAULT TABLESPACE app_ts TEMPORARY TABLESPACE temp_ts; GRANT CREATE SESSION TO app_svc;(仅授予应用所需对象权限,不授予 CREATE TABLE 等 DDL,避免人为误操作)

四 验证与运维要点

  • 验证登录与权限:sqlplus app1/;执行 SHOW USER; 测试对象访问(SELECT/INSERT 等)。
  • 验证默认角色:SELECT * FROM session_roles; 确认登录后自动启用的角色集合。
  • 审计与回收:定期审计高权限使用,撤销不再需要的系统/对象权限,调整默认角色;对关键操作启用细粒度审计(可选)。
  • 系统账号安全:SYS、SYSTEM、SYSMAN、DBSNMP为高权限管理账号,仅限授权人员使用,严禁共享与滥用;不要删除这些内置账号。

五 安全加固与最佳实践

  • 最小权限原则:只授予完成工作所需的最低权限,避免过度授权(如开发人员无需 DBA 权限)。
  • 定期审查权限:每月检查一次用户权限,删除不再使用的角色或权限。
  • 使用审计功能:启用 Oracle 数据库审计功能,监控用户操作,及时发现异常行为。
  • 数据加密:对敏感数据进行加密,以防止数据泄露。
  • 使用 Oracle Label Security:Oracle Label Security 提供细粒度的访问控制,根据数据标签控制用户权限。
  • 使用 AppArmor 进行高级权限管理(可选):安装并启用 AppArmor,为 Oracle 进程创建配置文件,限制其对系统资源的访问(如禁止访问/tmp目录)。
  • 配置 sudo 权限:允许 oracle 用户无需密码执行 Oracle 相关命令(如 lsnrctl、rman),简化日常操作(谨慎最小化命令白名单)。

0