En esta entrada seguiremos con las cheklist de cosas a tener en cuenta en la nueva version 12c, en este caso trataremos la informacion sobre usuarios
Tenemos dos tipos de usuario.
- Commonuser: Tendrá la misma identidad en el root y en los PDB donde se le den permisos
- Local user: Solamente exisistirá en el PDB donde se declare.
Common users
Para crearlo has de estar logado al CDB$ROOT
El nombre debe de comenzar por c## o C## y contener solo caracteres ASCII o EBCDIC
Para indicar explícitamente que el usuario va a estar en todos los contenedores hay que poner la cápsula CONTAINER=ALL
Si te encuentras en el root y no indicas la cláusula CONTAINER se presupone que es ALL
Los usuarios common users no pueden tener objetos creados en sus esquemas
Para podrán navegar entre los contenedores en los que tengan los permisos SET CONTAINER y CREATE SESSION
Para poder crear mas usuarios comunes debe de tener los privilegios SET CONTAINER y CREATE USER
Un usuario comun puede hacer:
Grant privileges a common users o common roles
Run anALTER DATABASE statement que especifiquen clausulas de recuperacion que afectan a todo el CDB
Usuarios locales
No puedes tener usuarios locales llamados SYS o SYSTEM
No puedes definir usuarios locales el el ROOT$CDB
Los local users pueden administrar un PDB, incluido arrancarlo y/o abrirlo
Están limitados a su PDB, NO pueden hacer SET CONTAINER
No pueden comenzar por c## o C##
La cláusula CONTAINER=CURRENT debe de especificarse en su creación
Para poder crear mas usuarios locales
Para crearlo has de estar conectado al PDB donde quieres crearlo
Se puede dar privilegios con los comunes y que le den privilegios comunes
En la sintaxis SQL de estos usuarios la cláusula CONTAINER indica en que containers aplica el comando
Privilegios globales y locales
Lo privilegios globales una deben de ser otorgados a PUBLIC
Un privilegio local solo puede usarse en el container donde ha sido otorgado, incluso si ese container es ROOT
Un usuario local solo puede tener privilegios locales, pero uno común puede tener globales y locales.
Se dan con GRANT y REVOKE, solo que hay que añadir la clausula del CONTAINER
Para poder dar SYSTEM PRIVILEGES has de ter el privilegio SET CONTAINER
Roles locales y globales
Los roles globales se crean en root y existen en los containers presentes y futuros.
Los usuarios globales pueden crear roles globales y darlos a otros users globales o locales
Los usuarios locales no pueden crear roles globales pero si que pueden darlos a usuarios globales o locales
Los usuarios locales puedan grantcommon roles a usuarios globales o locales
Al igual que los nombres de usuarios, los nombres de roles globales han de empezar por C##o c##
Si creas un role global desde un container has de poner la cláusula CONTAINER=ALL
Si otorgas un role global a un user global sin añadir la cláusula CONTAINER se aplica solo al container en el que estás, aunque este sea el CDBROOT