Database profiles in een Container omgeving

Met het inzetten van profiles voor password management ontstaat er vanaf Oracle 12 een extra keuze. Zoals bekend verondersteld mag worden is vanaf Oracle 12 de container architectuur de norm. Dit heeft voor het beheer gevolgen o.a. op het gebied van alles wat met user management te maken heeft.

Een belangrijk verschil in de Container omgeving is dat voor bijna alles de keuze is om het in de root container (CDB$ROOT) uit te voeren waarmee er een impact voor de gehele CDB kan ontstaan, of in de applicatie PDB gedaan kan worden waardoor de zichtbaarheid beperkt blijft tot de bewuste PDB.

Dit verschil tussen COMMON (CDB$ROOT) en LOCAL (applicatie PDB) geldt onder andere voor het cremeren van users en profiles.

Vanuit een CDB$ROOT ziet dit er bijvoorbeeld zo uit.


select profile, common from dba_profiles

PROFILE			COM
-------------------- 	---
DEFAULT 		NO
...
en
 1* select username, common from dba_users

USERNAME			COM
------------------------------ 	---
SYS				YES
SYSTEM				YES
XS$NULL				YES
OJVMSYS				YES
OUTLN				YES
...

Een common object is in alle PDB’s beschikbaar. Zo zijn alle Oracle eigen gebruikers COMMON gedefinieerd. Hiermee moeten alle belangrijk aspecten zoals password en profile vanuit CDB$ROOT gemanaged worden,

Als we de profile strategie willen implementeren zoals deze in dit artikel omschreven is, dan ontstaat nu de vraag waar we deze profiles gaan aanmaken. Hierbij gelden onder andere de volgende vragen en randvoorwaarden:

  • COMMON users moeten een common profile hebben.
  • Een COMMON profile is niet aan te passen in een PDB maar wel te gebruiken.
  • Een COMMON profile ziet er in iedere PDB bij een CDB hetzelfde uit.
  • Is het applicatie profile en het user profile voor alle applicatie identiek ?
  • Waar wordt het beheer van de profiles uitgevoerd?

Met name de laatste twee vragen zijn erg relevant. Op basis van de eerste observatie is het noodzakelijk dat het profile voor de Oracle accounts in de CDB$ROOT gecreëerd moeten worden. Daarmee is het een logische beslissing ook de andere profiles hier te creëren. Hiermee is het echter wel van belang dat alle applicaties (in het bijzonder bij het inzetten van multitenant) de zelfde profile definitie gebruiken.

Bij het creëren van een profile in de CDB$ROOT is er één detail dat anders is. Oracle dwingt af dat alle COMMON objecten (profiles, users en rollen) herkenbaar aan de naam zijn. De parameter common_user_prefix met de default waarde ‘C##’ zorgt er voor dat de COMMON objecten met C## geprefixed moeten zijn. Om in de CDB$ROOT een profile te maken ziet het statement er dan dus als volgt uit:


CREATE PROFILE c##my_profile
 LIMIT PASSWORD_REUSE_MAX 10
 PASSWORD_REUSE_TIME 30;

Dit profile kan binnen de PDB’s op de traditionele manier gebruikt worden, dus voor zowel COMMON als LOCAL users.

Samenvattend geldt dat gezien het feit dat de mogelijkheid bestaat om profiles zowel in de ROOT als in de PDB(s) te creëren, er moet worden nagedacht worden hier mee omgegaan wordt. Uitgaande van de wens tot standaardisatie wordt aanbevolen de organisatie standaard profiles in de CDB$ROOT te creëren en in de aanwezige PDBs te gebruiken.
Wilt u meer informatie?