oracle 最小权限,基础知识6——安全和最小权限原则
数据库安全和最小权限原则
用户只拥有执行其任务所需的最小权限,并禁止所有未被允许的权限.
默认下SYS和SYSTEM拥有所有权限.
除了使用口令配置文件外,还需要遵循一些最佳实践,特别熟授予public账户的权限以及一些实例参数.
public角色隐式授予每个用户,为public授予任何权限,相应的权限就授予连接到数据库的每个人.
默认下public有很多权限,尤其有能执行PL/SQL使用程序包的权限
select count(*) from dba_tab_privs
where grantee='PUBLIC'
---------
21521
select table_name from dba_tab_privs
where grantee='PUBLIC' and privilege='EXECUTE' and table_name like 'UTL%';
TABLE_NAME
----------------
UTL_FILE
UTL_RAW
UTL_TCP
UTL_INADDR
UTL_SMTP
UTL_HTTP
UTL_URL
UTL_ENCODE
UTL_GDK
UTL_COMPRESS
UTL_I18N
UTL_LMS
UTL_NLA_ARRAY_DBL
UTL_NLA_ARRAY_FLT
UTL_NLA_ARRAY_INT
UTL_NLA
UTL_REF
UTL_COLL
UTL_MATCH
UTL_DBWS
虽然应用软件可以为public用户授予执行UTL包的权限,但应取消public用户的这个权限:
revoke execute on utl_file from public;
public是授予所有人的角色——但在使用as sysoper语法连接到实例时,看似是连接到public账户. --这句话我不太理解
某些实例参数非常重要,默认值通常是合理的,但某些情况下可能需要修改参数值.以下所列参数都是静态的,需要重启实例才会生效.
utl_file_dir --默认为null,此参数允许PL/SQL通过utl_file包来访问服务器计算机的文件系统,utl_file包具有打开并读写文件的过程,唯一的限制是oracle拥有者必须能够访问所列出的目录.
使用这个实例参数难点在于:因为在实例层次进行设置,所以不允许某些用户访问一些目录而其他用户访问另外一些目录,对utl_file包具有执行权限的所有用户有权访问utl_file_dir参数中列出的所有目录.utl_file_dir参数接受一个用逗号分隔的目录列表,并且是静态的,使用下列语法可设置这个参数(此示例允许对两个目录进行访问,并重启实例)
alter system set utl_file_dir='/oracle/tmp','/oracle/interface' scope=spfile;
可使用通配符,但不要将参数设置为*,这样会允许所有用户访问数据库的所有目录和文件
remote_os_authent --默认false,此参数控制某个用户是否能够在不需要给出口令的情况下从远程计算机连接数据库.
o7_dictionary_accessibility --实例参数控制使用any关键字授予对象权限的效果,默认为false,使用下列语法能为用户harrogath授予查看数据库中所有表的权限
grant select any table to harrogath;
harrogath目前看不到数据字典表与用户表,o7_dictionary_accessibility默认为false,这说明any权限不被授予SYS拥有的对象,从而保护数据字典,此时harrogath能看到所有用户的数据,但无法看SYS拥有的对象,如果o7_dictionary_accessibility修改为true那么所有对象被授予了any权限,此时harrogath就能看数据字典和所有的用户数据了.如果希望o7_dictionary_accessibility不改时让用户访问数据字典,就给这些用户授予select any dictionary的权限,这样用户能看数据字典和动态性能视图,但在没有进行专门的指定时无法看到任何用户数据.
remote_login_passwordfile --此参数控制具有sysdba或sysoper权限的用户能否通过网络连接实例
练习,生成一个脚本,以便从public删除一些危险的权限
system用户连接,编辑SQL*Plus,从其输出中删除无关字符:
set headers off;
set pagesize 0;
set feedback off;
将输出打印到适当目录的文件中
spool $HOME/oracle/scripts/clear_public_privs.sql --unix平台
spool d:\oracle\clear_public_privs.sql --windows平台
通过运行以下语句生成sql命令文件:
select 'revoke execute on '||table_name||' from public;'
from dba_tab_privs where table_name like 'UTL_%';
停止输出打印
spool off
oracle 最小权限,基础知识6——安全和最小权限原则相关推荐
- Oracle PL/SQL基础知识
Oracle PL/SQL基础知识 过程(存储过程) 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out).通过在过程中使用输入参数,可以将数据传递到执行部分 ...
- Oracle:ADG基础知识学习一20230515
作者 | 夜说 个人公众号 | 夜说的数据库笔记 原文链接 | Oracle:ADG基础知识学习一20230515 目录 01前言 02ADG基础知识一 01前言 以下为20230515所学习的adg ...
- oracle不属于dml,Oracle中DML基础知识
DML(insert,update,delete) 1.插入数据 insert into 表名(列,列...)values(值,值...) //当插入的数据与表格一一对应时,列可以省略 insert ...
- Oracle数据库,基础知识
1.Oracle的五大约束条件: 1 主键 primary key 2 外键 foreign key, 3 唯一 unique, 4 检测 check 5 非空 not null 实例运用: ...
- android 安全讲座第三层 linux权限基础知识
android系统是给予linux的内核,所以关于linux内核中最重要的权限提取,这里列举一下基础知识,以备将来真正的利用系统漏洞进行权限提升的时候做储备. 问题: 1 文件权限 4755的含义? ...
- oracle数据库中基础知识,oracle数据库基础知识
oracle数据库基础知识 -- End loop --1 declare pnum number(4):=0; begin while pnum < 10 loop dbms_output.p ...
- oracle数据库sql基础知识,Oracle数据库基础知识为内部培训资料.doc
PAGE 1 课程 IL001100 ORACLE数据库基础知识 ISSUE1.0 开心Java整理 IL001100 ORACLE数据库基础知识 ISSUE1.0 目录 PAGE 1 PAGE 45 ...
- 【Oracle】082基础知识
1.interval使用 Oracle提供了两种日期时间数据类型:DATE和TIMESTAMP用于存储时间点数据.另外,它提供INTERVAL数据类型用于存储一段时间. INTERVAL YEAR T ...
- JAVA面向对象:相关基础知识(带包编译--权限修饰符--内部类)
目录 1.带包编译 2.权限修饰符 3.内部类 1.带包编译 解决使用notepad++ 等文本编辑器编写的java类中如果需要 package 的解决方案: 手动式:手动建包,.java文件放在包外 ...
最新文章
- 本地数据源:使用firebird数据库
- Linux下配置FTP、SSH服务
- WB实验关键点!附详细实验检查清单
- 绝了!Pandas绘图功能
- kdj超卖_一个判断股票超买超卖现象的指标——KDJ,简单明了,准确且省心
- netmiko 记录日志_netmiko连接网络设备
- 【Java】二维码生成,QRcode
- OpenGL(5)——变换
- php yii composer,yii2怎么用composer生成一个应用?
- AJAX最大的特点以及作用是什么?经典面试题
- wshShell.SendKeys模拟键盘操作
- 离线电商数仓3.0项目即席查询复盘笔记
- 如何将视频生成M3U8文件格式?
- 单片机 - RTOS - Linux
- 计算机条件求和函数,在excel中怎样根据多个条件进行求和
- oracle db recover参数,【参数】恢复db_recovery_file_dest_size参数为默认值“0”方法
- Android Studio Electric Eel | 2022.1.1 发布,快来看看有什么大更新吧
- 谭浩强c程序设计试题汇编第三版 第四章解析
- 免费、强大的开源笔记软件Joplin综合评测 —印象笔记的开源替代
- qtscrcpy自定义按键_QtScrcpy电脑控制手机 苹果般丝滑华为多屏协同般体验 免安装使用...