Diferència entre revisions de la pàgina «M2 - Bases de dades / Continguts UF3: Privilegis i usuaris»

De wikiserver
Dreceres ràpides: navegació, cerca
(Asignar cuotas a Usuarios)
(Roles)
Línia 92: Línia 92:
 
No es recomana donar quotes als usuaris en els Tablespaces SYSTEM i SYSAUX, doncs tipicamente només els usuaris SYS i SYSTEM poden crear objectes en aquests. Tampoc donar quotes en els Tablespaces Temporal o del tipus Undo.
 
No es recomana donar quotes als usuaris en els Tablespaces SYSTEM i SYSAUX, doncs tipicamente només els usuaris SYS i SYSTEM poden crear objectes en aquests. Tampoc donar quotes en els Tablespaces Temporal o del tipus Undo.
  
==Roles==
+
==Rols==
  
Finalmente los Roles, que son simplemente un conjunto de privilegios que se pueden otorgar a un usuario o a otro Rol. De esa forma se simplifica el trabajo del DBA en esta tarea.
+
Finalment els Rols, que són simplement un conjunt de privilegis que es poden atorgar a un usuari o a un altre Rol. D'aquesta forma se simplifica el treball del DBA en aquesta tasca.
  
Por default cuando creamos un usuario desde el Enterprise Manager se le asigna el permiso de connect, lo que permite al usuario conectarse a la BD y crear sus propios objetos en su propio esquema. De otra manera, debemos asignarlos en forma manual.
+
Per default quan vam crear un usuari des de l'Enterprise Manager se li assigna el permís de connect, la qual cosa permet a l'usuari connectar-se a la BD i crear els seus propis objectes en el seu propi esquema. D'una altra manera, hem d'assignar-los en forma manual.
  
Para crear un Rol y asignarlo a un usuario se hace de la siguiente manera:
+
Per crear un Rol i assignar-ho a un usuari es fa de la següent manera:
  
 
SQL> CREATE ROLE appl_dba;
 
SQL> CREATE ROLE appl_dba;
  
Opcionalmente, se puede asignar una clave al Rol:
+
Opcionalment, es pot assignar una clau al Rol:
  
 
SQL> SET ROLE appl_dba IDENTIFIED BY app_pwd;
 
SQL> SET ROLE appl_dba IDENTIFIED BY app_pwd;
  
Para asignar este Rol a un usuario:
+
Per assignar aquest Rol a un usuari:
  
 
SQL> GRANT appl_dba TO jperez;
 
SQL> GRANT appl_dba TO jperez;
  
Otro uso común de los roles es asignarles privilegios a nivel de Objetos, por ejemplo en una Tabla de Facturas en donde sólo queremos que se puedan hacer Querys e Inserts:
+
Un altre ús comú dels rols és assignar-los privilegis a nivell d'Objectes, per exemple en una Taula de Factures on només volem que es puguin fer Querys i Inserts:
  
 
SQL> CREATE ROLE consulta;
 
SQL> CREATE ROLE consulta;
Línia 116: Línia 116:
 
SQL> GRANT SELECT,INSERT on analista.factura TO consulta;
 
SQL> GRANT SELECT,INSERT on analista.factura TO consulta;
  
Y finalmente asignamos ese rol con este “perfil” a distintos usuarios finales:
+
I finalment assignem aquest rol amb est "perfil" a diferents usuaris finals:
  
 
SQL> GRANT consulta TO ahernandez;
 
SQL> GRANT consulta TO ahernandez;
  
Nota: Existen algunos roles predefinidos, tales como:
+
'''Nota:''' Existeixen alguns rols predefinits, tals com:
 
CONNECT, CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SYNONYM, CREATE SEQUENCE, CREATE DATABASE LINK, CREATE CLUSTER,
 
CONNECT, CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SYNONYM, CREATE SEQUENCE, CREATE DATABASE LINK, CREATE CLUSTER,
 
ALTER SESSION, RESOURCE, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER, CREATE TYPE, CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR SCHEDULER, CREATE ANY JOB, CREATE JOB, EXECUTE ANY CLASS, EXECUTE ANY PROGRAM,
 
ALTER SESSION, RESOURCE, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER, CREATE TYPE, CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR SCHEDULER, CREATE ANY JOB, CREATE JOB, EXECUTE ANY CLASS, EXECUTE ANY PROGRAM,
 
MANAGE SCHEDULER, etc.
 
MANAGE SCHEDULER, etc.
  
:*'''DBA:''' Tiene la mayoría de los privilegios, no es recomendable asignarlo a usuarios que no son administradores.
+
:*'''DBA:''' la majoria dels privilegis, no és recomanable assignar-ho a usuaris que no són administradors.
  
:*'''SELECT_CATALOG_ROLE:''' No tiene privilegios de sistema, pero tiene cerca de 1600 privilegios de objeto.
+
:*'''SELECT_CATALOG_ROLE:''' No té privilegis de sistema, però té prop de 1600 privilegis d'objecte.
  
Para consultar los roles definidos y los privilegios otorgados a través de ellos, utilize las vistas:
+
Per consultar els rols definits i els privilegis atorgats a través d'ells, utilitzi les vistes:
  
SQL> select * from DBA_ROLES;
+
SQL> select * from DBA_ROLS;
 
SQL> select * from DBA_ROLE_PRIVS order by GRANTEE;
 
SQL> select * from DBA_ROLE_PRIVS order by GRANTEE;

Revisió del 19:55, 4 feb 2018

Crear Usuaris y assignar privilegis

El següent és un resum d'algunes consideracions al moment de crear un usuari o compte en Oracle, i els privilegis i rols que li podem assignar.

El nom d'usuari no ha de superar 30 caràcters, no ha de tenir caràcters especials i ha d'iniciar amb una lletra.

Un mètode d'autenticació. El mes comú és una clau o password, però Oracle 10g suporta altres mètodes (com biometric, certificat i autenticació per mitjà de token).

Un Tablespace default, el qual és on l'usuari va a poder crear els seus objectes per defecte, no obstant això, això no significa que pugui crear objectes, o que tingui una quota d'espai. Aquests permisos s'assignen de forma separada, excepte si utilitza el privilegi RESOURCE el que assigna una quota unlimited, fins i tot en el Tablespace SYSTEM! No obstant això si això ocorre, un. pot posteriorment moure els objectes creats en el SYSTEM a un altre Tablespace.

Un Tablespace temporal, on l'usuari crea els seus objectes temporals i fa els sort o ordenaments.

Un perfil o profile d'usuari, que són les restriccions que pot tenir el seu compte (opcional).

Per exemple, connectat com l'usuari SYS, vam crear un usuari i la seva clau així:

SQL> CREATE USER ahernandez IDENTIFIED BY ahz DEFAULT TABLESPACE users;

Si no s'indica un Tablespace per defecte, l'usuari pren el que està definit en la BD (generalment el SYSTEM). Per modificar el Tablespace default d'un usuari es fa de la següent manera:

SQL> ALTER USER jperez DEFAULT TABLESPACE datos;

També podem assignar als usuaris un Tablespace temporal on s'emmagatzemen operacions d'ordenament. Aquestes inclouen les clàusules ORDER BY, GROUP BY, SELECT DISTINCT, MERGE JOIN, o CREATE INDEX (també és utilitzat quan es creen Taules temporals).

SQL> CREATE USER jperez IDENTIFIED BY jpz DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;

Addicionalment, a cada usuari es pot assignar a un profile o perfil, que té dos propòsits principalment:

  • Limita l'ús de recursos, la qual cosa és recomanable, per exemple en ambients de Desenvolupament.
  • Garanteix i reforça regles de Seguretat a nivell de comptes.


Exemples, quan es crea l'usuari o assignar un perfil existent:

SQL> CREATE USER jperez IDENTIFIED BY jpz DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp PROFILE resource_profile;

SQL> ALTER USER jperez PROFILE perfil_desa;

Modificar comptes d'Usuari

Per modificar un usuari creat, per exemple canviar la seva clau, tenim la sintaxis:

SQL> ALTER USER NOMBRE_USUARIO IDENTIFIED BY CLAVE_ACCESO [DEFAULT TABLESPACE ESPACIO_TABLA] [TEMPORARY TABLESPACE ESPACIO_TABLA] [QUOTA {ENTERO {K | M } | UNLIMITED } ON ESPACIO_TABLA [PROFILE PERFIL];

Privilegis de Sistema i d'Objectes

En Oracle existeixen dos tipus de privilegis d'usuari.

  • System. Que permet a l'usuari fer certes tasques sobre la BD, com per exemple crear un Tablespace. Aquests permisos són atorgats per l'administrador o per algú que hagi rebut el permís per administrar aquest tipus de privilegi. Existeixen com 100 tipus diferents de privilegis d'aquest tipus.

En general els permisos de sistema, permeten executar comandos del tipus DDL (Data definition Language), com CREATE, ALTER i DROP o del tipus DML (Data Manipulation Language). Oracle 10g té mes de 170 privilegis de sistema els quals poden ser vists consultant la vista: SYSTEM_PRIVILEGE_MAP

Entre tots els privilegis de sistema que existeixen, hi ha dos que són els importants: SYSDBA i SYSOPER. Aquests són donats a altres usuaris que seran administradors de base de dades.

Per atorgar diversos permisos alhora, es fa de la següent manera:

SQL> GRANT CREATE USER, ALTER USER, DROP USER TO ahernandez;

  • Object. Aquest tipus de permís li permet a l'usuari realitzar certes accions en objectes de la BD, com una Taula, Vista, un Procedure o Funció, etc. Si a un usuari no se li donen aquests permisos només pot accedir als seus propis objectes (vegeu USER_OBJECTS). Aquest tipus de permisos els dóna l'owner o amo de l'objecte, l'administrador o algú que hagi rebut aquest permís explícitament (amb Grant Option).

Per exemple, per atorgar permisos a una taula Vendes per a un usuari particular:

SQL> GRANT SELECT,INSERT,UPDATE, ON analista.venta TO jperez;

Addicionalment, podem restringir els DML a una columna de la taula esmentada. Si quisieramos que aquest usuari pugui donar permisos sobre la taula Factura a altres usuaris, utilitzem la clàusula WITH GRANT OPTION. Exemple:

SQL> GRANT SELECT,INSERT,UPDATE,DELETE ON venta TO mgarcia WITH GRANT OPTION;

Assignar quotes a Usuaris

Per defecte ningun usuari té quota en els Tablespaces i es tenen tres opcions per poder proveir a un usuari d'una quota:

  • Sense limiti, que permet a l'usuari usar tot l'espai disponible d'un Tablespace.
  • Per mitjà d'un valor, que pot ser en kilobytes o megaoctets que l'usuari pot usar. Aquest valor pot ser major o nenor que la grandària del Tablespace assignat a ell.
  • Per mitjà del privilegi UNLIMITED TABLESPACE, es té prioritat sobre qualsevol quota donada en un Tablespace pel que tenen disponibilitat de tot l'espai incloent en SYSTEM i SYSAUX.

No es recomana donar quotes als usuaris en els Tablespaces SYSTEM i SYSAUX, doncs tipicamente només els usuaris SYS i SYSTEM poden crear objectes en aquests. Tampoc donar quotes en els Tablespaces Temporal o del tipus Undo.

Rols

Finalment els Rols, que són simplement un conjunt de privilegis que es poden atorgar a un usuari o a un altre Rol. D'aquesta forma se simplifica el treball del DBA en aquesta tasca.

Per default quan vam crear un usuari des de l'Enterprise Manager se li assigna el permís de connect, la qual cosa permet a l'usuari connectar-se a la BD i crear els seus propis objectes en el seu propi esquema. D'una altra manera, hem d'assignar-los en forma manual.

Per crear un Rol i assignar-ho a un usuari es fa de la següent manera:

SQL> CREATE ROLE appl_dba;

Opcionalment, es pot assignar una clau al Rol:

SQL> SET ROLE appl_dba IDENTIFIED BY app_pwd;

Per assignar aquest Rol a un usuari:

SQL> GRANT appl_dba TO jperez;

Un altre ús comú dels rols és assignar-los privilegis a nivell d'Objectes, per exemple en una Taula de Factures on només volem que es puguin fer Querys i Inserts:

SQL> CREATE ROLE consulta;

SQL> GRANT SELECT,INSERT on analista.factura TO consulta;

I finalment assignem aquest rol amb est "perfil" a diferents usuaris finals:

SQL> GRANT consulta TO ahernandez;

Nota: Existeixen alguns rols predefinits, tals com: CONNECT, CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SYNONYM, CREATE SEQUENCE, CREATE DATABASE LINK, CREATE CLUSTER, ALTER SESSION, RESOURCE, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER, CREATE TYPE, CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR SCHEDULER, CREATE ANY JOB, CREATE JOB, EXECUTE ANY CLASS, EXECUTE ANY PROGRAM, MANAGE SCHEDULER, etc.

  • DBA: Té la majoria dels privilegis, no és recomanable assignar-ho a usuaris que no són administradors.
  • SELECT_CATALOG_ROLE: No té privilegis de sistema, però té prop de 1600 privilegis d'objecte.

Per consultar els rols definits i els privilegis atorgats a través d'ells, utilitzi les vistes:

SQL> select * from DBA_ROLS; SQL> select * from DBA_ROLE_PRIVS order by GRANTEE;