Mòdul ASGBD

ASGBD - Usuaris i Permisos en Oracle

La Triada CID (Confidencialitat, Integritat, Disponibilitat) en Oracle

stop

La triada CID (Confidencialitat, Integritat i Disponibilitat) és un model de seguretat fonamental per garantir la protecció de la informació en qualsevol sistema informàtic, inclòs Oracle. Aquest model es fa servir per establir les bases de les polítiques de seguretat, i Oracle, com a sistema de gestió de bases de dades (SGBD), té diverses característiques i eines que permeten implementar-lo eficaçment.

1. Confidencialitat (Confidentiality)

La confidencialitat es refereix a la protecció de la informació per evitar que sigui accedida per usuaris no autoritzats. A Oracle, això es pot aconseguir mitjançant:

2. Integritat (Integrity)

La integritat de les dades fa referència a la seva exactitud, coherència i fiabilitat al llarg del temps. Per garantir-la en Oracle, es poden utilitzar diversos mecanismes:

3. Disponibilitat (Availability)

La disponibilitat fa referència a la capacitat de la base de dades per estar accessible i operativa en tot moment. Per assegurar la disponibilitat en Oracle, es poden utilitzar diversos mecanismes i tecnologies:

Resum

Implementar la triada CID en Oracle implica la combinació de múltiples mecanismes i eines que permeten protegir la informació:

Amb aquests mecanismes, Oracle permet als administradors de bases de dades protegir les dades i garantir que es compleixin les pràctiques de seguretat requerides per a una bona gestió de la informació.

👤 Usuaris en Oracle

Els usuaris permeten configurar el mecanisme de Confidencialitat, Identificant (nom d'usuari), autenticant (amb password, per exemple) i restringint l'accés a dades no permeses (amb els privilegis)

Un usuari pot fer i desfer dins del seu esquema, però NO pot fer res en un altre esquema. Llevat que se li atorgue algun permís o privilegi per tal menester

Què és un usuari?

Un usuari Oracle identifica una entitat que accedeix a la base de dades. Pot representar una persona, aplicació o procés.

stop

Quan es crea un usuari, també es crea automàticament el seu esquema (schema), que conté els seus objectes: taules, vistes, procediments, etc.

🔐 Autenticació d'usuaris

Tipus d'usuaris

Creació, modificació i baixa d'usuaris

  -- Crear usuari local
  CREATE USER joan IDENTIFIED BY '1234';
  
  -- Crear usuari comú (en CDB)
  CREATE USER C##admin IDENTIFIED BY 'secure' CONTAINER=ALL;
  
  -- Modificar contrasenya
  ALTER USER joan IDENTIFIED BY 'nova_clau';
  
  -- Eliminar usuari
  DROP USER joan CASCADE;
    

Atributs addicionals en la creació

  CREATE USER enric IDENTIFIED BY secret
  DEFAULT TABLESPACE users
  TEMPORARY TABLESPACE temp
  QUOTA UNLIMITED ON users
  PROFILE default;
    

🔑 Donar permisos de connexió

Un usuari no pot connectar si no té el privilegi CREATE SESSION:

GRANT CREATE SESSION TO joan;

Estats dels comptes

Exemples de gestió:

  ALTER USER joan ACCOUNT LOCK;
  ALTER USER joan ACCOUNT UNLOCK;
  ALTER USER joan PASSWORD EXPIRE;
    

🔍 Consultes útils

  -- Usuaris existents
  SELECT username, account_status FROM dba_users;
  
  -- Esquema actiu
  SELECT user FROM dual;
  
  -- Paràmetres d’usuaris administratius
  SELECT * FROM v$pwfile_users;
    

Notes importants

Exemple complet: usuari operatiu

  CREATE USER enric IDENTIFIED BY secret
  DEFAULT TABLESPACE tab_app
  QUOTA UNLIMITED ON tab_app
  PASSWORD EXPIRE;
  
  GRANT CONNECT, RESOURCE TO enric;
    

💬 Autenticació en multitenant (CDB/PDB)

  -- Connexió com SYSTEM a PDB1
  sqlplus system@localhost/pdb1
    

Vistes relacionades amb usuaris

Bones pràctiques

🔐 Bloquejar Usuaris i Forçar a Canviar Contrasenya en Oracle

Per bloquejar usuaris i forçar-los a canviar la seva contrasenya a Oracle, cal fer servir diverses funcionalitats d'Oracle per gestionar les contrasenyes i els comptes d'usuari. A continuació, t'explico com es poden dur a terme aquestes tasques:

Un usuari bloquejat NO POT accedir al sistema i no pot canviar el estat per si mateix. Ho ha de sol·licitar al DBA

Un usuari amb la password expirada ( i en periode de gràcia) SI pot accedir, sempre que abans canvie la contrasenya expirada

Un usuari amb la password expirada i fora del periode de gràcia, NO pot accedir. Si vol accedir, ho ha de sol·licitar al DBA

Usuari amb contrasenya a punt de caducar (Període de gràcia imminent). Oracle pot permetre l'accés, però el sistema pot mostrar una advertència que la contrasenya caducarà en breu. Això depèn de la configuració del perfil.

1. Bloquejar un Usuari en Oracle

Per bloquejar un usuari, es poden utilitzar les ordres SQL següents:

Bloquejar un usuari:

ALTER USER <nom_usuari> ACCOUNT LOCK;

On <nom_usuari> és el nom de l'usuari que vols bloquejar.

Exemple:

ALTER USER jdoe ACCOUNT LOCK;

Aquesta ordre bloqueja l'accés a l'usuari jdoe a la base de dades.

Desbloquejar un usuari:

ALTER USER <nom_usuari> ACCOUNT UNLOCK;

Si després vols desbloquejar l'usuari, utilitza:

Exemple:

ALTER USER jdoe ACCOUNT UNLOCK;

2. Forçar un Usuari a Canviar la Contrasenya

Oracle permet forçar que un usuari canviï la seva contrasenya en el pròxim inici de sessió. Per fer-ho, utilitzes l'ordre següent:

Forçar a canviar la contrasenya:

ALTER USER <nom_usuari> PASSWORD EXPIRE;

Aquesta ordre força l'usuari a canviar la contrasenya la pròxima vegada que intenti iniciar sessió.

Exemple:

ALTER USER jdoe PASSWORD EXPIRE;

3. Combinació d'ordres per Bloquejar i Forçar el Canvi de Contrasenya

Si vols bloquejar un usuari i, a més, forçar-lo a canviar la contrasenya, pots utilitzar aquestes dues ordres:

ALTER USER <nom_usuari> ACCOUNT LOCK;
    ALTER USER <nom_usuari> PASSWORD EXPIRE;

Amb això, bloqueges l'usuari, però si decideixes desbloquejar-lo posteriorment, estaràs forçant-lo a canviar la contrasenya en el seu següent inici de sessió.

Exemple complet:

ALTER USER jdoe ACCOUNT LOCK;
    ALTER USER jdoe PASSWORD EXPIRE;

4. Configurar el Caducament Automàtic de Contrasenyes

Per configurar que Oracle forci el canvi de contrasenya automàticament després d'un cert temps (per exemple, després de 30 dies), pots configurar la política de contrasenyes de la base de dades. Això es fa mitjançant l'atribut PASSWORD_LIFE_TIME del perfil d'usuari:

ALTER PROFILE <nom_perfil> LIMIT PASSWORD_LIFE_TIME <dies>;

Exemple (per 30 dies):

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 30;

Això farà que les contrasenyes dels usuaris que tinguin aquest perfil caduquin després de 30 dies, forçant-los a canviar la contrasenya en el següent inici de sessió.

Resum

Aquests són els mecanismes bàsics per gestionar usuaris en Oracle, bloquejant-los i forçant-los a canviar les contrasenyes quan sigui necessari.

🗝️ Permisos en Oracle

Què són els permisos (privilegis)?

Els permisos o privilegis són drets que Oracle atorga als usuaris per fer determinades accions sobre la base de dades: accedir, modificar, crear, administrar objectes o usuaris.

Tipus de permisos

Exemples de privilegis de sistema

Exemples de privilegis d’objecte

Assignació de privilegis

  -- Sistema
  GRANT CREATE SESSION TO joan;
  
  -- Objecte
  GRANT SELECT, INSERT ON alumnes TO joan;
    

♻️ Revocar permisos

  -- Sistema
  REVOKE CREATE SESSION FROM joan;
  
  -- Objecte
  REVOKE INSERT ON alumnes FROM joan;
    

🌐 Propagació amb GRANT OPTION

Permet que un usuari que ha rebut un privilegi el pugui concedir a un altre:

  GRANT SELECT ON alumnes TO joan WITH GRANT OPTION;
    

👀 Consultes útils

  -- Privilegis de sistema atorgats
  SELECT * FROM dba_sys_privs WHERE grantee = 'JOAN';
  
  -- Privilegis d’objecte
  SELECT * FROM dba_tab_privs WHERE grantee = 'JOAN';
  
  -- Què puc fer?
  SELECT * FROM session_privs;
    

🧪 Exemple pràctic

  -- Crear usuari i donar accés bàsic
  CREATE USER marta IDENTIFIED BY 1234;
  GRANT CREATE SESSION, CREATE TABLE TO marta;
  
  -- Permetre a marta consultar alumnes
  GRANT SELECT ON alumnes TO marta;
    

Consideracions importants

📘 Bones pràctiques

🎭 Rols en Oracle

Què és un rol?

Un rol és un conjunt de permisos agrupats sota un nom. Serveix per simplificar la gestió de privilegis, especialment en entorns amb molts usuaris.

En comptes d’assignar 10 permisos a cada usuari, es crea un rol amb aquests permisos i s’assigna el rol.

Tipus de rols

🛠️ Crear i assignar rols

  -- Crear un nou rol
  CREATE ROLE gestor_aula;
  
  -- Concedir permisos al rol
  GRANT CREATE SESSION, CREATE TABLE TO gestor_aula;
  
  -- Assignar el rol a un usuari
  GRANT gestor_aula TO marta;
    

Revocar rols

  REVOKE gestor_aula FROM marta;
    

Activar i desactivar rols

Un usuari pot tenir diversos rols assignats, però només alguns poden estar actius a la vegada.

  -- Activar un rol específic
  SET ROLE gestor_aula;
  
  -- Activar tots els rols per defecte
  SET ROLE ALL;
  
  -- Desactivar tots els rols
  SET ROLE NONE;
    

🔍 Consultes útils

  -- Rols assignats a un usuari
  SELECT * FROM dba_role_privs WHERE grantee = 'MARTA';
  
  -- Rols definits al sistema
  SELECT * FROM dba_roles;
  
  -- Privilegis d’un rol
  SELECT * FROM role_sys_privs WHERE role = 'GESTOR_AULA';
    

Exemple pràctic complet

  CREATE ROLE aplicacio_web;
  
  GRANT CREATE SESSION TO aplicacio_web;
  GRANT SELECT, INSERT, UPDATE ON alumnes TO aplicacio_web;
  
  CREATE USER webapp IDENTIFIED BY secret;
  GRANT aplicacio_web TO webapp;
    

Bones pràctiques

Perfils en Oracle

Què és un perfil?

En Oracle, un perfil és un conjunt de restriccions i paràmetres que s’apliquen als usuaris de la base de dades. Aquests paràmetres permeten controlar l’ús de recursos del sistema (com el nombre màxim de sessions, temps connectat, etc.) i establir polítiques de seguretat sobre les contrasenyes.

En oracle hi ha un perfil predefinit. El perfil anomenat DEFAULT

Quan es crea un usuari, se li assigna un perfil per defecte -> DEFAULT

SQL> select * from dba_profiles where profile=’DEFAULT’;   

Un perfil té dos tipus/grups de paràmetres

Paràmetres de recursos

Els paràmetres de recursos limiten l’ús que pot fer un usuari del sistema. Alguns dels més comuns són:

Paràmetres de contrasenya

Els paràmetres de contrasenya ajuden a reforçar la seguretat dels usuaris, control·lant aspectes com:

Crear i modificar perfils

Pots crear un perfil nou amb l'ordre CREATE PROFILE i modificar-lo amb ALTER PROFILE.

  -- Exemple de creació d'un perfil amb restriccions de recursos i contrasenya
  CREATE PROFILE perf-adm LIMIT
    SESSIONS_PER_USER     5
    CONNECT_TIME          120
    IDLE_TIME             30
    FAILED_LOGIN_ATTEMPTS 4
    PASSWORD_LIFE_TIME    165;
  
  -- Modificar un perfil per establir un temps de bloqueig de la contrasenya
  ALTER PROFILE perf-adm LIMIT PASSWORD_LOCK_TIME 5;
    

Assignar un perfil a un usuari

En crear o modificar un usuari, pots assignar-li un perfil per limitar els recursos i aplicar polítiques de seguretat:

  -- Crear un usuari amb un perfil específic
  CREATE USER enric IDENTIFIED BY secret
    DEFAULT TABLESPACE tab_app
    QUOTA UNLIMITED ON tab_app
    PROFILE perf-adm;
  
  -- O actualitzar un usuari existent per assignar-li un perfil
  ALTER USER enric PROFILE perf-adm;
    

Bones pràctiques

🔍 Consultes útils relacionades amb perfils

  -- Consultar els perfils definit per la base de dades
  SELECT * FROM dba_profiles ORDER BY profile;
  
  -- Consultar paràmetres de tipus PASSWORD en el perfil DEFAULT
  SELECT * FROM dba_profiles WHERE resource_type = 'PASSWORD';
  
  -- Consultar usuaris i els seus perfils
  SELECT username, profile FROM dba_users;
    

🔍 Esborrar perfils

DROP PROFILE nom_perfil;
     o
     DROP PROFILE nom_perfil [CASCADE]; 

Especifiqueu CASCADE per desassignar el perfil dels usuaris a qui estigui assignat. Oracle Database assigna automàticament el perfil DEFAULT a aquests usuaris. Heu d'especificar aquesta clàusula per eliminar un perfil que està assignat actualment als usuaris

Resum

Els perfils en Oracle són eines fonamentals per controlar l’ús dels recursos i reforçar la seguretat dels comptes d’usuaris. Mitjançant la creació, modificació i assignació de perfils, es pot garantir que els usuaris compleixin amb les polítiques establertes, tot assegurant un rendiment òptim i la protecció de la base de dades.

Vistes com a Element de Seguretat en Oracle

Les vistes (views) en Oracle poden ser un element molt poderós per a la seguretat de les dades, ja que permeten controlar quines dades poden ser accessibles pels usuaris i com aquestes dades són presentades. Les vistes no emmagatzemen dades pròpiament dites, sinó que són definicions de consultes SQL que es poden utilitzar com si fossin taules normals. Això significa que les vistes permeten a l'administrador de bases de dades (DBA) establir un nivell de seguretat i restricció per a l'accés a la informació a través de consultes personalitzades.

Vistes com a element de seguretat a Oracle

A continuació, explico algunes de les principals maneres en què les vistes poden ser utilitzades per millorar la seguretat en Oracle:

1. Restricció d'Accés a Dades Sensibles

Descripció: Les vistes permeten crear consultes personalitzades que poden ocultar certes columnes o taules que contenen dades sensibles. En lloc de permetre que un usuari accedeixi directament a una taula, es pot crear una vista que exposi només una part de les dades.

CREATE VIEW vista_clients_completa AS
SELECT nom, adreca, telefon
FROM clients;

Avantatge de seguretat: Limita l'exposició de dades sensibles a només la informació necessària, millorant la seguretat de la informació confidencial.

2. Autenticació de Consultes

Descripció: Pots utilitzar vistes per garantir que només es poden realitzar consultes sobre un conjunt específic de dades segons el rol o els permisos d'un usuari. Això es fa mitjançant el control de permisos en les vistes.

GRANT SELECT ON vista_clients_completa TO usuari_x;

Avantatge de seguretat: Aquesta tècnica permet controlar l'accés a les dades a nivell d'usuari, garantint que només els usuaris autoritzats tinguin accés a les vistes que exposen les dades filtrades o restringides.

3. Control de Columnes

Descripció: Les vistes permeten ocultar columnes senceres d'una taula, cosa que és útil per amagar dades que no s'haurien de mostrar. Això és especialment útil quan les taules contenen dades sensibles, com ara contrasenyes, números de seguretat social, etc.

CREATE VIEW vista_usuaris AS
SELECT id, nom, correu
FROM usuaris;

Avantatge de seguretat: Permet amagar dades sensibles i garantir que només la informació necessària sigui accessible.

4. Control de les Consultes Realitzades

Descripció: Mitjançant la creació de vistes, es pot controlar exactament quines consultes són permeses i com són realitzades. Això permet als administradors establir regles de consulta que limitin l'accés a determinats conjunts de dades.

CREATE VIEW vista_transaccions_usuaris AS
SELECT transaccio_id, data, import
FROM transaccions
WHERE usuari_id = :usuari_id;

Avantatge de seguretat: Pot restringir l'abast de les dades consultades i garantir que els usuaris només obtinguin informació rellevant i personalitzada.

5. Vistes Amb Funcionalitat de Seguretat Basada en Rols

Descripció: Utilitzant vistes, pots aplicar seguretat a nivell de rols, permetent que només certs rols d'usuari puguin accedir a determinades dades. Per exemple, un DBA pot crear una vista per a usuaris normals que només mostri informació bàsica, mentre que un usuari amb un rol administratiu podria tenir accés a una vista més detallada.

CREATE VIEW vista_dades_normals AS
SELECT nom, adreça FROM clients;

CREATE VIEW vista_dades_administrador AS
SELECT * FROM clients;

L'usuari amb un rol normal només pot veure vista_dades_normals, mentre que l'usuari amb rol d'administrador té accés a vista_dades_administrador.

Avantatge de seguretat: Permet controlar l'accés a les dades basat en rols d'usuari, garantint que els usuaris només tinguin accés a la informació que necessiten.

6. Auditoria i Monitorització de Consultes

Descripció: Les vistes també poden ser útils per auditar i monitoritzar les consultes. Per exemple, pots crear una vista que permeti a l'usuari visualitzar només els canvis realitzats en la taula de transaccions en un període de temps determinat.

CREATE VIEW vista_transaccions_audit AS
SELECT transaccio_id, data, import, operacio
FROM transaccions_audit
WHERE data > '2024-01-01';

Avantatge de seguretat: Això permet monitoritzar l'activitat de la base de dades i detectar possibles accessos no autoritzats o activitats sospitoses.

Conclusions

Les vistes en Oracle són una eina molt potent per millorar la seguretat de les dades en una base de dades. Algunes de les maneres en què es poden utilitzar com a element de seguretat són:

Les vistes permeten personalitzar l'accés a la informació i garantir que només els usuaris autoritzats tinguin accés a dades crítiques.

Ús de Synonyms en Oracle

Un synonym (sinònim) en Oracle és un àlies o nom alternatiu per a un objecte de base de dades com una taula, vista, seqüència, procediment, funció, paquet o altre objecte. Els synonyms s’utilitzen per simplificar l'accés als objectes i millorar la seguretat.

Tipus de Synonyms

Beneficis de Seguretat i Usabilitat

Exemples d’ús

1. Crear un synonym privat

CREATE SYNONYM emp FOR empresa.empleats;

Ara, en lloc de fer servir empresa.empleats, l’usuari pot fer servir simplement emp.

2. Crear un synonym públic

CREATE PUBLIC SYNONYM emp FOR empresa.empleats;

Tots els usuaris poden accedir a la taula empleats com emp, sempre que tinguin permisos.

3. Eliminar un synonym

DROP SYNONYM emp;
DROP PUBLIC SYNONYM emp;

Consideracions de Seguretat

Conclusió

Els synonyms en Oracle són útils per simplificar noms d’objectes i ocultar detalls interns. Utilitzats correctament, poden millorar l’organització, la seguretat i la flexibilitat de les aplicacions que accedeixen a la base de dades.

Altres recursos

Usuaris NO admin en Windows

link

Update i Select en ORACLE

link

Usuaris Comuns ORACLE

link

Seguretat en ORACLE