【动手实践】:Lockdown Profile 的多租户权限控制

在Oracle Database 12.2 中引入了lockdown profile的新特性,可以用于限制PDB中的某些操作,增强某些操作的安全性。

PDB Lockdown Profiles to Restrict Operations on PDBs Starting with this release, in a multitenant environment, you can use PDB lockdown profiles to restrict functionality available to users in a given PDB. PDB lockdown profiles enable you to restrict the access the user has to a set of features individually or in a group. This feature is designed to enhance security for situations in which identities are shared among PDBs.

以下通过一个简单的测试来看看这个特性的基本功能。 首先在CDB下创建一个profile,这个Profile将对全局可用:

SQL> connect / as sysdba
Connected.
SQL> CREATE LOCKDOWN PROFILE enmotech;
Lockdown Profile created.

SQL> ALTER LOCKDOWN PROFILE enmotech DISABLE STATEMENT  = ('ALTER SYSTEM');
Lockdown Profile altered.

连接到PDB YHEM,在PDB级别启用lockdown profile :

SQL> connect sys/oracle@yhem as sysdba
Connected.
SQL> ALTER SYSTEM SET PDB_LOCKDOWN = enmotech;
System altered.

测试一下,可以看到所有的ALTER SYSTEM的操作都被禁用了:

SQL> alter system checkpoint;
alter system checkpoint
*
ERROR at line 1:
ORA-01031: insufficient privileges

SQL> alter system set optimizer_mode = first_rows_1;
alter system set optimizer_mode = first_rows_1
*
ERROR at line 1:
ORA-01031: insufficient privileges

LOCKDOWN PROFILE可以限制到非常细粒度的权限,比如以下限制仅仅限制用户执行ARCHIVE LOG和CHECKPOINT操作。

SQL> connect / as sysdba
Connected.

SQL> alter lockdown profile enmotech enable statement = ('ALTER SYSTEM')
  2  clause all except = ('ARCHIVE LOG', 'CHECKPOINT');

Lockdown Profile altered.

现在测试一下,可以看到在PDB上,限制精确的生效,CHECKPOINT操作不允许被执行:

SQL> connect system/oracle@yhem
Connected.
SQL> alter system set optimizer_mode = first_rows_1;
System altered.

SQL> alter system checkpoint;
alter system checkpoint
*
ERROR at line 1:
ORA-01031: insufficient privileges

除了特定的权限,还可以对某些数据库功能特点进行限制,比如调用和执行UTL_HTTP 和 UTL_TCP 包可能是高风险的,那么以下的PROFILE设置可以禁用这些特性:

SQL> alter lockdown profile enmotech
  2     disable feature = ('UTL_HTTP', 'UTL_TCP');
Lockdown profile altered.

SQL> conn system/oracle@yhem
Connected.
SQL> declare
  2    l_request   utl_http.req;
  3    l_response  utl_http.resp;
  4 begin
  5    l_request := utl_http.begin_request('http://www.enmotech.com');
  6    l_response := utl_http.get_response(l_request);
  7 end; 
  8/
declare
*
ERROR at line 1:
ORA-29273: HTTP request failed
ORA-01031: insufficient privileges
ORA-06512: at "SYS.UTL_HTTP", line 380
ORA-06512: at "SYS.UTL_HTTP", line 1127
ORA-06512: at line 5

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-01-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏个人分享

SparkSQL相关语句总结

1.in 不支持子查询 eg. select * from src where key in(select key from test); 支持查询个...

1382
来自专栏乐沙弥的世界

又一例SPFILE设置错误导致数据库无法启动

--========================================

883
来自专栏杨建荣的学习笔记

数据迁移部分问题总结(r2第3天)

按照计划在周二开始了数据迁移,本来之前也做了不少的准备工作。但是还是在迁移的过程中出现了一些问题。简单做一个总结。 1.constraint导致的数据rej...

2927
来自专栏杨建荣的学习笔记

Oracle 12c PDB迁移及ORA-00600错误分析和解决(r10笔记第72天)

最近迁移一台测试环境,准备整合到12c的PDB,常规的思路是用Datapump导出导入,对于数据较大的环境来说这个时间会比较长,为此自己也尝试先升级这个测试库,...

3877
来自专栏数据和云

承上 DBlink 与 SCN | 新增视图找出外部 SCN 跳变

综述 众所周知,当在两个数据库之间建立 dblink连 接时,SCN 将被同步,以维持分布式事务读取一致性。 这将导致在较低 SCN 的数据库的 SCN 跳...

2977
来自专栏乐沙弥的世界

数据导入时遭遇 ORA-01187 ORA-01110

最近的数据导入(IMP)时碰到了ORA-01187 ORA-01110 错误,由于这个数据库是使用热备恢复过来的,且恢复也是成功的,因为数据库能够成功open,...

873
来自专栏数据和云

返璞归真:如何判断一个初始化参数是否来自默认设置

? 杨廷琨(yangtingkun) 云和恩墨 CTO 高级咨询顾问,Oracle ACE 总监,ITPUB Oracle 数据库管理版版主 Oracle初...

2847
来自专栏杨建荣的学习笔记

关于两个简单问题的分析(r9笔记第10天)

工作中碰到问题当然是见怪不怪了,而处理这些问题也是我们的价值所在。 今天处理了几个看起来比较有意思的小问题,当然究其原因,要不是不规范,要不就是基本功不够扎实。...

3054
来自专栏沃趣科技

Oracle12c R2版本Application Containers特性(三)

延伸阅读 Oracle 12c R2版本 Application Containers 特性(二) Oracle 12c R2版本 Application Co...

3607
来自专栏杨建荣的学习笔记

关于sysdba,sysoper,dba的区别(r3笔记第62天)

关于sysdba,sysoper,dba这些名词在工作中可能接触的比较多,如果接触的环境是服务器端的,sysdba可能是经常用到的。如果是数据库的维护工作,db...

2726

扫码关注云+社区

领取腾讯云代金券