为了更好的管理CDB及其PDB中的权限,12c推出一项新功能 – PDB锁定配置文件 ( PDB Lockdown Profile),用于控制连接到PDB用户的可用操作。比如,禁止执行alter system。
PDB锁定配置文件能够对以下的访问类型进行限制:
网络访问,比如访问UTL_HTTP或者UTL_MAIL
通用用户或者对象的访问,比如限制PDB中的本地用户通过通用用户进行代理或访问公共模式中的对象的操作
操作系统访问,比如限制访问UTL_FILE或者DBMS_FILE_TRANSFER包
连接,比如限制普通用户连接到PDB,或者限制具有SYSOPER管理权限的本地用户连接到以受限模式打开的PDB
管理功能,限制ALTER SYSTEM、ALTER SESSION、ALTER DATABASE等功能的使用
数据库选项,禁用数据库的某些Opthin,比如数据库分区,数据库高级队列等功能
PDB锁定配置文件可分为两种类型:
静态
使用FROM子句创建静态锁定配置文件,将引用的基础配置文件的规则复制到静态锁定配置文件中,任何后续对基本配置文件的更改都不会影响已经创建的静态锁定配置文件。
动态
使用INCLUDING子句创建动态锁定配置文件,将继承引用的基础配置文件的规则,后续对基础配置文件的任何更改也会同步到动态锁定配置文件中。如果显式添加到新创建的动态锁定配置文件的规则与包含基本配置文件的规则发生冲突,则后者优先。
使用PDB_LOCKDOWN初始化参数指定PDB锁定配置,12c中该参数仅适用于CDB级别,18c中该参数可适用于PDB、应用容器以及CDB三个级别,三个级别存在一定的继承关系。
如果常规或应用PDB中的PDB_LOCKDOWN参数设置为CDB锁定配置文件,则忽略CDB根或应用程序根目录中分别由PDB_LOCKDOWN参数指定的锁定配置文件
如果应用PDB中的PDB_LOCKDOWN参数设置为应用程序锁定配置文件,而应用root或CDB
root中的PDB_LOCKDOWN参数设置为锁定配置文件,则除了应用锁定配置文件中规定的规则之外,PDB锁定配置文件还会继承来自最近的祖先CDB
root锁定配置文件中的DISABLE规则
如果CDB锁定配置文件和应用锁定配置文件的规则之间存在冲突,则CDB锁定配置文件中的规则优先。
简单做个测试:
SQL> CREATE LOCKDOWN PROFILE medium1;
Lockdown Profile created.
SQL> ALTER LOCKDOWN PROFILE medium1 DISABLE STATEMENT=(‘ALTER
SYSTEM’);
Lockdown Profile altered.
SQL> alter system set pdb_lockdown=medium1;
System altered.
SQL> alter session set container=app1;
Session altered.
SQL> alter system set pdb_lockdown=medium1; alter system set
pdb_lockdown=medium1
* ERROR at line 1: ORA-01031: insufficient privileges