Lockdown Profile é um dos recursos que mais gostei na arquitetura Multitenant, que nos permite customizar políticas de segurança para um PDB, como quais features, options os comandos podemos permitir ou não a nível de PDB. Neste artigo mostraremos um exemplo simples de desabilitar a opçao de utilização de uma option dentro do pluggable database.
Criando um lockdown profile dentro do root container:
[oracle@quiasma admin]$ sqlplus / as sysdba
SQL*Plus: Release 18.0.0.0.0 - Production on Thu Apr 15 05:45:17 2021
Version 18.13.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.13.0.0.0
SQL> CREATE LOCKDOWN PROFILE PROFILE_DO_BRUNO;
Lockdown Profile created.
SQL> col profile_name format a30
SQL> SELECT PROFILE_NAME FROM DBA_LOCKDOWN_PROFILES;
PROFILE_NAME
------------------------------
PRIVATE_DBAAS
PROFILE_DO_BRUNO
PUBLIC_DBAAS
SAAS
Desabilitando a option de partição neste lockdown profile:
SQL> ALTER LOCKDOWN PROFILE PROFILE_DO_BRUNO DISABLE OPTION = ('PARTITIONING');
Lockdown Profile altered.
SQL> col rule format a25
SQL> col clause format a10
SQL> SELECT PROFILE_NAME, RULE, CLAUSE, STATUS FROM DBA_LOCKDOWN_PROFILES WHERE PROFILE_NAME='PROFILE_DO_BRUNO';
PROFILE_NAME RULE CLAUSE STATUS
------------------------------ ------------------------- ---------- -------
PROFILE_DO_BRUNO PARTITIONING DISABLE
Agora podemos vincular o lockdown profile para o PDB que desejamos:
SQL> ALTER SESSION SET CONTAINER=HIPOFISE1;
Session altered.
SQL> ALTER SYSTEM SET PDB_LOCKDOWN=PROFILE_DO_BRUNO;
System altered.
Conectando no PDB em questão e tentando criar uma tabela particionada:
SQL> conn system/oracle@HIPOFISE1
Connected.
SQL> CREATE TABLE BRUNO(RID NUMBER ) PARTITION BY HASH (RID) PARTITIONS 2;
CREATE TABLE BRUNO(RID NUMBER ) PARTITION BY HASH (RID) PARTITIONS 2
*
ERROR at line 1:
ORA-00439: feature not enabled: Partitioning
Obs: Este procedimento foi criado pelo senhor Ahmed Baraka (www.ahmedbaraka.com) e foi apenas reproduzido por mim em um laboratório pessoal para fins de aprendizado.