【动手实践】: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 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

ORA-01157: cannot identify/lock data file n 故障一例

    最近在使用swingbench的时候碰到了ORA-01157故障,下面是其具体描述与解决。

834
来自专栏乐沙弥的世界

Oracle 12c 基于PDB种子数据库创建PDB

在Oracle中基于PDB种子复制数据库的方式,这个与SQLServert中直接创建数据库比较类似。在SQLServer中有一个model数据库,这个库的功能就...

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

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

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

2777
来自专栏数据和云

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

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

2677
来自专栏乐沙弥的世界

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

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

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

使用impdp不当导致的数据丢失问题(r5笔记第1天)

今天有个朋友问我们一个问题,说他在使用了impdp导入数据的时候,使用了TABLE_EXISTS_ACTION=REPLACE这个选项,结果现在数据都给覆盖了。...

3415
来自专栏沃趣科技

Oracle 12c 多租户专题|12cR2中PDB内存资源管理

原文链接 https://oracle-base.com/articles/12c/multitenant-memory-resource-managemen...

4337
来自专栏沃趣科技

Oracle12c R2版本Application Containers特性(三)

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

3217
来自专栏个人分享

SparkSQL相关语句总结

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

822
来自专栏数据和云

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

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

2747

扫码关注云+社区