Diferència entre revisions de la pàgina «M2 - Bases de dades / Continguts UF3: Administració d'usuaris»

De wikiserver
Dreceres ràpides: navegació, cerca
(ASSIGNACIÓ D'UN PERFIL A UN USUARI)
(Autenticació Externa)
 
(Hi ha 6 revisions intermèdies del mateix usuari que no es mostren)
Línia 14: Línia 14:
  
 
Quan un usuari connecta amb una base de dades verifica que aquest usuari i la contrasenya introduïda emmagatzemada en la base de dades, sigui correcta. Les contrasenyes es guarden encriptades en la base de dades (en el data dictionary).
 
Quan un usuari connecta amb una base de dades verifica que aquest usuari i la contrasenya introduïda emmagatzemada en la base de dades, sigui correcta. Les contrasenyes es guarden encriptades en la base de dades (en el data dictionary).
 
+
<pre>
 
SQL > CREATE USER david IDENTIFIED BY tititus;
 
SQL > CREATE USER david IDENTIFIED BY tititus;
 
+
</pre>
 
En aquest cas tititus és la contrasenya de david que serà guardada encriptada en la base de dades.
 
En aquest cas tititus és la contrasenya de david que serà guardada encriptada en la base de dades.
  
Línia 23: Línia 23:
 
Quan un usuari connecta amb la base de dades es verifica que el nom d'usuari és el mateix que el nom d'usuari del sistema operatiu per permetre la validació.
 
Quan un usuari connecta amb la base de dades es verifica que el nom d'usuari és el mateix que el nom d'usuari del sistema operatiu per permetre la validació.
  
No s'emmagatzemen els comptes en la base de dades de cap manera. Aquests comptes estan sempre referides amb OPS$ .A partir de la versió 10g pots configurar '''US_AUTHENT_PREFIX''' en el spfile
+
No s'emmagatzemen els comptes en la base de dades de cap manera. Aquests comptes estan sempre referides amb OPS$ .A partir de la versió 10g pots configurar '''OS_AUTHENT_PREFIX''' en el spfile
 
+
<pre>
 
SQL > CREATE USER ops$david IDENTIFIED BY tititus;
 
SQL > CREATE USER ops$david IDENTIFIED BY tititus;
 
+
</pre>
Mitjançant '''IDENTIFIED EXTERNALLY''' diem a la base de dades que nostre compte és externa i ha de ser validada amb el sistema operatiu.
+
Mitjançant '''IDENTIFIED EXTERNALLY''' diem a la base de dades que el nostre compte és externa i ha de ser validada amb el sistema operatiu.
  
 
===Autenticació Global===
 
===Autenticació Global===
Línia 39: Línia 39:
 
Mitjançant '''IDENTIFIED GLOBALLY''' diem a la base de dades que nostre compte s'autentica globalment, mitjançant una altra opció de seguretat avançada.
 
Mitjançant '''IDENTIFIED GLOBALLY''' diem a la base de dades que nostre compte s'autentica globalment, mitjançant una altra opció de seguretat avançada.
  
==Asignaciones a los Usuarios==
+
==Assignacions als Usuaris==
  
  
===ASIGNACIÓN DE UN USUARIO A UN TABLESPACE ( DEFAULT TABLESPACE )===
+
===Assignació d'un usuari a un tablespace ( DEFAULT TABLESPACE )===
 
 
Mediante esta sentencia asignamos un usuario a un tablespace, este será su tablespace por defecto cuando creamos un usuario.
 
  
 +
Mitjançant aquesta sentencia assignem un usuari a un tablespace per defecte en la seva creació:
 +
<pre>
 
SQL > CREATE USER david IDENTIFIED BY tititus DEFAULT TABLESPACE users;
 
SQL > CREATE USER david IDENTIFIED BY tititus DEFAULT TABLESPACE users;
 +
</pre>
  
Mediante esta sentencia, en caso de tener creado ya el usuario le asignamos un tablespace.
+
Mitjançant aquesta sentencia assignem un usuari a un tablespace per defecte després de la seva creació:
 
+
<pre>
 
SQL > ALTER USER david DEFAULT TABLESPACE users;
 
SQL > ALTER USER david DEFAULT TABLESPACE users;
 +
</pre>
  
La base de datos toma un tablespace por defecto, en caso de querer cambiar este tablespace utilizamos la siguiente sentencia
+
La base de dades té definit un tablespace per defecte, en cas de voler-lo canviar utilitzarem la següent sentencia:
 
+
<pre>
 
SQL > ALTER DATABASE DEFAULT TABLESPACE users;
 
SQL > ALTER DATABASE DEFAULT TABLESPACE users;
 +
</pre>
  
===ASSIGNACIÓ D'UN USUARI A UN TABLESPACE TEMPORAL===
+
===Assignació d'un usuari a un tablespace temporal===
  
 
Un tablespace temporal s'utilitza per emmagatzemar "segments" temporals que són creats durant operacions com '''ORDER BY,SELECT DISTINCT, MERGE JOIN o CREATE INDEX'''. De vegades als usuaris se'ls associa un tablespace temporal per realitzar aquest tipus d'operacions, quan aquestes operacions finalitzen aquest segment temporal que s'ha creat exclusivament per a l'operació desapareix.
 
Un tablespace temporal s'utilitza per emmagatzemar "segments" temporals que són creats durant operacions com '''ORDER BY,SELECT DISTINCT, MERGE JOIN o CREATE INDEX'''. De vegades als usuaris se'ls associa un tablespace temporal per realitzar aquest tipus d'operacions, quan aquestes operacions finalitzen aquest segment temporal que s'ha creat exclusivament per a l'operació desapareix.
 
+
<pre>
 
SQL > CREATE USER david IDENTIFIED BY tititus DEFAULT TABLESPACE users
 
SQL > CREATE USER david IDENTIFIED BY tititus DEFAULT TABLESPACE users
 
TEMPORARY TABLESPACE temp;
 
TEMPORARY TABLESPACE temp;
 +
</pre>
  
 
Mitjançant '''TEMPORARY TABLESPACE''' assignem com tablespace temporal temp a l'usuari david.
 
Mitjançant '''TEMPORARY TABLESPACE''' assignem com tablespace temporal temp a l'usuari david.
  
 
En cas que l'usuari estigui creat si volem assignar-li un tablespace temporal utilitzem '''ALTER USER.'''
 
En cas que l'usuari estigui creat si volem assignar-li un tablespace temporal utilitzem '''ALTER USER.'''
 
+
<pre>
 
SQL > ALTER USER david TEMPORARY TABLESPACE Temp;
 
SQL > ALTER USER david TEMPORARY TABLESPACE Temp;
 +
</pre>
  
 
La base de dades pren un tablespace per defecte, en cas de voler canviar aquest tablespace utilitzem la següent sentència
 
La base de dades pren un tablespace per defecte, en cas de voler canviar aquest tablespace utilitzem la següent sentència
 
+
<pre>
 
SQL > ALTER DATABASE DEFAULT TABLESPACE users;
 
SQL > ALTER DATABASE DEFAULT TABLESPACE users;
 
+
</pre>
===ASSIGNACIÓ D'UN PERFIL A UN USUARI===
+
===Assignació d'un perfil a un usuari===
  
 
Igual que podem assignar un tablespace a un usuari, també podem assignar-li un perfil (profile). El principal perfil ( profile ) per defecte es denomina default.
 
Igual que podem assignar un tablespace a un usuari, també podem assignar-li un perfil (profile). El principal perfil ( profile ) per defecte es denomina default.
Línia 83: Línia 88:
 
PROFILE resource_profile;
 
PROFILE resource_profile;
 
</pre>
 
</pre>
 +
 
En cas que l'usuari ja estigui creat igual que en els anteriors casos utilitzem la sentència '''ALTER USER'''.
 
En cas que l'usuari ja estigui creat igual que en els anteriors casos utilitzem la sentència '''ALTER USER'''.
 
+
<pre>
 
SQL > ALTER USER david PROFILE resource_profile;
 
SQL > ALTER USER david PROFILE resource_profile;
 +
</pre>
  
===ESBORRAT D'UN USUARI===
+
===Esborrat d'un usuari===
 
 
Per esborrar un usuari utilitzem la sentència '''DROP USER''', podem opcionalment incloure l'opció '''CASCADE''', s'utilitza per esborrar recursivamente els objectes de l'usuari que es pretén esborrar.
 
  
 +
Per esborrar un usuari utilitzem la sentència '''DROP USER''', podem opcionalment incloure l'opció '''CASCADE''', s'utilitza per esborrar recursivament els objectes de l'usuari que es pretén esborrar.
 +
<pre>
 
SQL > DROP USER david CASCADE
 
SQL > DROP USER david CASCADE
 +
</pre>
  
===OTORGANDO PRIVILEGIOS (GRANTING)===
+
===Atorgant privilegis (GRANTING)===
  
A un usuario podemos otorgarle una serie de privilegios. Un privilegio permite a un usuario acceder a ciertos objetos o realizar ciertas acciones:
+
A un usuari podem atorgar-li una sèrie de privilegis. Un privilegi permet a un usuari accedir a certs objectes o realitzar certes accions:
  
:*Privilegios sobre Objetos ( Object privileges ) a permisos sobre vistas, tablas, secuencias, procedimientos, paquetes.
+
:*Privilegis sobre Objectes ( Object privileges ). Permisos sobre vistes, taules, seqüències, procediments, paquets.
  
:*Privilegios del Sistema ( System privileges ) a permisos sobre “niveles de la base de datos” como pueden ser conexión a la base de datos, creación de usuarios, limitar cuentas.
+
:*Privilegis del Sistema ( System privileges ). Permisos sobre "nivells de la base de dades" com poden ser connexió a la base de dades, creació d'usuaris, limitar comptes.
   
 
:*Privilegios sobre Roles ( Role privileges ) a muchos permisos son otorgados mediante roles agrupando un conjunto de privilegios. Para otorgar privilegios utilizamos la sentenciaGRANT, para quitar un privilegio o permiso a un usuario utilizamos la sentencia REVOKE
 
  
EJEMPLOS
+
:*Privilegis sobre Rols ( Role privileges ). Molts permisos són atorgats mitjançant rols agrupant un conjunt de privilegis. Per atorgar privilegis utilitzem la sentencia GRANT, per llevar un privilegi o permís a un usuari utilitzem la sentència REVOKE
  
Privilegio sobre una tabla:
+
EXEMPLES
 
 
SQL > GRANT ALL ON tabla_alumnos TO david
 
 
 
Siendo tabla_alumnos una tabla de nuestra base de datos y david un usuario de esta, hemos asignado mediante GRANT ALL,todos los permisos al usuario david sobre esta tabla.
 
  
 +
Privilegi sobre una taula:
 +
<pre>
 +
SQL > GRANT ALL ON taula_alumnes TO david
 +
</pre>
 +
Sent taula_alumnes una taula de la nostra base de dades i david un usuari d'aquesta, hem assignat mitjançant GRANT ALL,tots els permisos a l'usuari david sobre aquesta taula.
 +
<pre>
 
GRANT ALL = permisos SELECT, INSERT, UPDATE, DELETE
 
GRANT ALL = permisos SELECT, INSERT, UPDATE, DELETE
 +
</pre>
 +
Si volem assignar només un d'aquests permisos utilitzem la mateixa sentència però amb el permís que vulguem atorgar.
 +
<pre>
 +
SQL > GRANT SELECT ON taula_alumnes TO david
  
Si queremos asignar sólo uno de estos permisos utilizamos la misma sentencia pero con el permiso que queramos otorgar.
+
SQL > GRANT SELECT,INSERT ON taula_alumnes TO david
 +
</pre>
 +
Privilegi sobre una vista:
  
SQL > GRANT SELECT ON tabla_alumnos TO david
+
Per al cas de les vistes podem a un usuari atorgar permisos '''SELECT, INSERT, UPDATE, DELETE, DEBUG, REFERENCES.'''
SQL > GRANT SELECT,INSERT ON tabla_alumnos TO david
+
Sent vesteixi_alumnes una vista de la nostra base de dades i david un usuari d'aquesta:
 +
Atorguem a l'usuari david tots els permisos sobre la vista vista_alumnes.
 +
<pre>
 +
SQL > GRANT ALL ON vista_alumnes TO david
 +
</pre>
  
Privilegio sobre una vista:
+
Atorguem a l'usuari david alguns permisos sobre la vista_alumnes
 +
<pre>
 +
SQL > GRANT SELECT ON vista_alumnes TO david
  
Para el caso de las vistas podemos a un usuario otorgar permisos '''SELECT, INSERT, UPDATE, DELETE, DEBUG, REFERENCES.'''
+
SQL > GRANT SELECT,INSERT ON vista_alumnes TO david
Siendo vista_alumnos una vista de nuestra base de datos y david un usuario de esta:
+
</pre>
Otorgamos al usuario david todos los permisos sobre la vista vista_alumnos.
 
 
 
SQL > GRANT ALL ON vista_alumnos TO david
 
 
 
Otorgamos al usuario david algunos permisos sobre la vista_alumnos
 
 
 
SQL > GRANT SELECT ON vista_alumnos TO david
 
SQL > GRANT SELECT,INSERT ON vista_alumnos TO david
 
  
Privilegio sobre una secuencia:
+
Privilegi sobre una seqüència:
  
Con las secuencias pasa lo mismo que con los anteriores objetos vistos, para otorgar permisos se utiliza '''GRANT'''. Los permisos que podemos otorgar a una secuencia es '''SELECT''' o '''ALTER'''.
+
Amb les seqüències passa el mateix que amb els anteriors objectes vists, per atorgar permisos s'utilitza '''GRANT'''. Els permisos que podem atorgar a una seqüència és '''SELECT''' o '''ALTER'''.
  
Privilegio sobre un paquete,función o procedimiento:
+
Privilegi sobre un paquet,funció o procediment:
  
Los permisos que podemos otorgar a las funciones, paquetes o procedimientos almacenados en nuestra base de datos son los siguientes: '''EXECUTE, DEBUG.'''
+
Els permisos que podem atorgar a les funcions, paquets o procediments emmagatzemats en la nostra base de dades són els següents: '''EXECUTE, DEBUG.'''
  
===LLEVANT PRIVILEGIS===
+
===LLevant privilegis===
  
 
Si volem llevar un privilegi a un d'aquests objectes farem el mateix que amb GRANT però utilitzant la sentència REVOKE.
 
Si volem llevar un privilegi a un d'aquests objectes farem el mateix que amb GRANT però utilitzant la sentència REVOKE.

Revisió de 16:33, 19 feb 2018

Creació d'Usuaris

Una de les més bàsiques tasques d'un administrador de base de dades és identificar els usuaris. Cada usuari que connecta en la base de dades deu tenir un compte. En els comptes compartits són difícils d'aplicar una auditoria. Per crear un usuari utilitzem la sentència CREATE USER. Quan creguis un compte com a mínim has d'assignar un únic nom (username) i una contrasenya per poder autenticar-se.

Per canviar algun dels atributs que se li ha afegit a l'usuari creat s'utilitza la sentència ALTER USER.

Autenticació

Quan un es connecta amb una instància d'una base de dades el compte d'usuari deu estar autenticada. ORACLE proveeix tres mètodes d'autenticació per al nostre compte d'usuari.


AUTENTICACIÓ MITJANÇANT PASSWORD

Quan un usuari connecta amb una base de dades verifica que aquest usuari i la contrasenya introduïda emmagatzemada en la base de dades, sigui correcta. Les contrasenyes es guarden encriptades en la base de dades (en el data dictionary).

SQL > CREATE USER david IDENTIFIED BY tititus;

En aquest cas tititus és la contrasenya de david que serà guardada encriptada en la base de dades.

Autenticació Externa

Quan un usuari connecta amb la base de dades es verifica que el nom d'usuari és el mateix que el nom d'usuari del sistema operatiu per permetre la validació.

No s'emmagatzemen els comptes en la base de dades de cap manera. Aquests comptes estan sempre referides amb OPS$ .A partir de la versió 10g pots configurar OS_AUTHENT_PREFIX en el spfile

SQL > CREATE USER ops$david IDENTIFIED BY tititus;

Mitjançant IDENTIFIED EXTERNALLY diem a la base de dades que el nostre compte és externa i ha de ser validada amb el sistema operatiu.

Autenticació Global

Quan un usuari es connecta amb la base de dades es verifica globalment quan la informació passa per una opció avançada de seguretat (ADVANCED SECURITY OPTION) per a l'autenticació tal com Kerberos, RADIUS.

Per als comptes globals no s'emmagatzema tampoc gens en la base de dades.

SQL > CREATE USER david IDENTIFIED GLOBALLY AS 'CN=alumnes,OU=campus...'

Mitjançant IDENTIFIED GLOBALLY diem a la base de dades que nostre compte s'autentica globalment, mitjançant una altra opció de seguretat avançada.

Assignacions als Usuaris

Assignació d'un usuari a un tablespace ( DEFAULT TABLESPACE )

Mitjançant aquesta sentencia assignem un usuari a un tablespace per defecte en la seva creació:

SQL > CREATE USER david IDENTIFIED BY tititus DEFAULT TABLESPACE users;

Mitjançant aquesta sentencia assignem un usuari a un tablespace per defecte després de la seva creació:

SQL > ALTER USER david DEFAULT TABLESPACE users;

La base de dades té definit un tablespace per defecte, en cas de voler-lo canviar utilitzarem la següent sentencia:

SQL > ALTER DATABASE DEFAULT TABLESPACE users;

Assignació d'un usuari a un tablespace temporal

Un tablespace temporal s'utilitza per emmagatzemar "segments" temporals que són creats durant operacions com ORDER BY,SELECT DISTINCT, MERGE JOIN o CREATE INDEX. De vegades als usuaris se'ls associa un tablespace temporal per realitzar aquest tipus d'operacions, quan aquestes operacions finalitzen aquest segment temporal que s'ha creat exclusivament per a l'operació desapareix.

SQL > CREATE USER david IDENTIFIED BY tititus DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;

Mitjançant TEMPORARY TABLESPACE assignem com tablespace temporal temp a l'usuari david.

En cas que l'usuari estigui creat si volem assignar-li un tablespace temporal utilitzem ALTER USER.

SQL > ALTER USER david TEMPORARY TABLESPACE Temp;

La base de dades pren un tablespace per defecte, en cas de voler canviar aquest tablespace utilitzem la següent sentència

SQL > ALTER DATABASE DEFAULT TABLESPACE users;

Assignació d'un perfil a un usuari

Igual que podem assignar un tablespace a un usuari, també podem assignar-li un perfil (profile). El principal perfil ( profile ) per defecte es denomina default. Si l'usuari no està el podem crear de la següent forma:

SQL > CREATE USER david IDENTIFIED BY tititus
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
PROFILE resource_profile;

En cas que l'usuari ja estigui creat igual que en els anteriors casos utilitzem la sentència ALTER USER.

SQL > ALTER USER david PROFILE resource_profile;

Esborrat d'un usuari

Per esborrar un usuari utilitzem la sentència DROP USER, podem opcionalment incloure l'opció CASCADE, s'utilitza per esborrar recursivament els objectes de l'usuari que es pretén esborrar.

SQL > DROP USER david CASCADE

Atorgant privilegis (GRANTING)

A un usuari podem atorgar-li una sèrie de privilegis. Un privilegi permet a un usuari accedir a certs objectes o realitzar certes accions:

  • Privilegis sobre Objectes ( Object privileges ). Permisos sobre vistes, taules, seqüències, procediments, paquets.
  • Privilegis del Sistema ( System privileges ). Permisos sobre "nivells de la base de dades" com poden ser connexió a la base de dades, creació d'usuaris, limitar comptes.
  • Privilegis sobre Rols ( Role privileges ). Molts permisos són atorgats mitjançant rols agrupant un conjunt de privilegis. Per atorgar privilegis utilitzem la sentencia GRANT, per llevar un privilegi o permís a un usuari utilitzem la sentència REVOKE

EXEMPLES

Privilegi sobre una taula:

SQL > GRANT ALL ON taula_alumnes TO david

Sent taula_alumnes una taula de la nostra base de dades i david un usuari d'aquesta, hem assignat mitjançant GRANT ALL,tots els permisos a l'usuari david sobre aquesta taula.

GRANT ALL = permisos SELECT, INSERT, UPDATE, DELETE

Si volem assignar només un d'aquests permisos utilitzem la mateixa sentència però amb el permís que vulguem atorgar.

SQL > GRANT SELECT ON taula_alumnes TO david

SQL > GRANT SELECT,INSERT ON taula_alumnes TO david

Privilegi sobre una vista:

Per al cas de les vistes podem a un usuari atorgar permisos SELECT, INSERT, UPDATE, DELETE, DEBUG, REFERENCES. Sent vesteixi_alumnes una vista de la nostra base de dades i david un usuari d'aquesta: Atorguem a l'usuari david tots els permisos sobre la vista vista_alumnes.

SQL > GRANT ALL ON vista_alumnes TO david

Atorguem a l'usuari david alguns permisos sobre la vista_alumnes

SQL > GRANT SELECT ON vista_alumnes TO david

SQL > GRANT SELECT,INSERT ON vista_alumnes TO david

Privilegi sobre una seqüència:

Amb les seqüències passa el mateix que amb els anteriors objectes vists, per atorgar permisos s'utilitza GRANT. Els permisos que podem atorgar a una seqüència és SELECT o ALTER.

Privilegi sobre un paquet,funció o procediment:

Els permisos que podem atorgar a les funcions, paquets o procediments emmagatzemats en la nostra base de dades són els següents: EXECUTE, DEBUG.

LLevant privilegis

Si volem llevar un privilegi a un d'aquests objectes farem el mateix que amb GRANT però utilitzant la sentència REVOKE.