Diferència entre revisions de la pàgina «M2 - Bases de dades / Continguts UF3: Administració bàsica i seguretat»

De wikiserver
Dreceres ràpides: navegació, cerca
(Creació de rols)
(Privilegis sobre objectes)
 
(Hi ha 7 revisions intermèdies del mateix usuari que no es mostren)
Línia 18: Línia 18:
  
 
La creació d'usuaris es fa a través de la sentència SQL CREATE USER La seva sintaxi bàsica és:
 
La creació d'usuaris es fa a través de la sentència SQL CREATE USER La seva sintaxi bàsica és:
 
+
<pre>
CREATE USER nomeni_usuari IDENTIFIED [ BY clau | EXTERNALLY ] { DEFAULT TABLESPACE tablespace_per_defecte } { TEMPORARY TABLESPACE tablespace_temporal } { DEFAULT ROLE [ rols, ALL [EXCEPT rols], NONE ] };
+
CREATE USER nomeni_usuari IDENTIFIED [ BY clau | EXTERNALLY ]  
 +
{ DEFAULT TABLESPACE tablespace_per_defecte }
 +
{ TEMPORARY TABLESPACE tablespace_temporal }  
 +
{ DEFAULT ROLE [ rols, ALL [EXCEPT rols], NONE ] };
 +
</pre>
  
 
La clàusula IDENTIFIED BY permet indicar el tipus d'autorització que s'utilitzarà: · Interna d'Oracle: una clau per a cada usuari de base de dades. · Interna del SOTA: utilitzant la seguretat del SOTA.
 
La clàusula IDENTIFIED BY permet indicar el tipus d'autorització que s'utilitzarà: · Interna d'Oracle: una clau per a cada usuari de base de dades. · Interna del SOTA: utilitzant la seguretat del SOTA.
Línia 30: Línia 34:
  
 
Exemples:
 
Exemples:
 
+
<pre>
CREATE USER ADMINISTRADOR IDENTIFIED BY MANAGER DEFAULT TABLESPACE SYSTEM TEMPORARY TABLESPACE TEMPORARY_DATA DEFAULT ROLE DBA;
+
CREATE USER ADMINISTRADOR IDENTIFIED BY MANAGER  
 +
DEFAULT TABLESPACE SYSTEM  
 +
TEMPORARY TABLESPACE TEMPORARY_DATA  
 +
DEFAULT ROLE DBA;
  
 
CREATE USER PEPOTE IDENTIFIED BY TORO;
 
CREATE USER PEPOTE IDENTIFIED BY TORO;
  
CREATE USER JUANCITO IDENTIFIED BY PEREZ DEFAULT TABLESPACE DADES_COMPTABILITAT TEMPORARY TABLESPACE TEMPORARY_DATA;
+
CREATE USER JUANCITO IDENTIFIED BY PEREZ  
 
+
DEFAULT TABLESPACE DADES_COMPTABILITAT  
 +
TEMPORARY TABLESPACE TEMPORARY_DATA;
 +
</pre>
 
== Creació de rols ==
 
== Creació de rols ==
  
 
La creació de rols permet assignar un grup de permisos a un usuari, i poder modificar aquest grup de permisos sense haver d'anar modificant tots els usuaris. Si assignem un rol amb 10 permisos a 300 usuaris, i posteriorment afegim un permís nou al rol, no serà necessari anar afegint aquest nou permís als 300 usuaris, ja que el rol s'encarrega automàticament de propagar-ho. La sintaxi bàsica és:
 
La creació de rols permet assignar un grup de permisos a un usuari, i poder modificar aquest grup de permisos sense haver d'anar modificant tots els usuaris. Si assignem un rol amb 10 permisos a 300 usuaris, i posteriorment afegim un permís nou al rol, no serà necessari anar afegint aquest nou permís als 300 usuaris, ja que el rol s'encarrega automàticament de propagar-ho. La sintaxi bàsica és:
 
+
<pre>
 
CREATE ROLE nomeni_rol { [NOT IDENTIFIED | IDENTIFIED [BY clau | EXTERNALLY };
 
CREATE ROLE nomeni_rol { [NOT IDENTIFIED | IDENTIFIED [BY clau | EXTERNALLY };
 
+
</pre>
 
Una vegada que el rol ha estat creat serà necessari afegir-li permisos a través d'instrucció GRANT.
 
Una vegada que el rol ha estat creat serà necessari afegir-li permisos a través d'instrucció GRANT.
  
Línia 65: Línia 74:
  
 
Exemples:
 
Exemples:
 +
<pre>
 +
CREATE ROL CONTROL_TOTAL;
  
CREATE ROL CONTROL_TOTAL; CREATE ROL BASICO; CREATE ROL ACCES_COMPTABILITAT;
+
CREATE ROL BASICO;  
 +
 
 +
CREATE ROL ACCES_COMPTABILITAT;
 +
</pre>
  
 
Privilegis de sistema
 
Privilegis de sistema
Línia 72: Línia 86:
 
Ja hem dit que els privilegis de sistema són permisos per realitzar certes operacions en la base de dades. La manera d'assignar un privilegi és a través de la instrucció GRANT i la manera de cancel·lar un privilegi és a través de la instrucció REVOKE. La sintaxi bàsica d'ambdues instruccions és:
 
Ja hem dit que els privilegis de sistema són permisos per realitzar certes operacions en la base de dades. La manera d'assignar un privilegi és a través de la instrucció GRANT i la manera de cancel·lar un privilegi és a través de la instrucció REVOKE. La sintaxi bàsica d'ambdues instruccions és:
  
== Instrucción GRANT ==
+
== Instrucció GRANT ==
 
+
<pre>
GRANT [privilegios_de_sistema | roles] TO [usuarios | roles |PUBLIC] { WITH ADMIN OPTION };
+
GRANT [privilegis_de_sistema | rols] TO [usuaris | rols |PUBLIC] { WITH ADMIN OPTION };
 
+
</pre>
Es posible dar más de un privilegio de sistema o rol, separándolos por comas. También es posible asignarle uno (o varios) privilegios a varios usuarios, separándolos por comas. Si se le asigna el privilegio a un rol, se asignará a todos los usuarios que tengan ese rol. Si se asigna el privilegio a PUBLIC, se asignará a todos los usuarios actuales y futuros de la base de datos. La cláusula WITH ADMIN OPTION permite que el privilegio/rol que hemos concedido, pueda ser concedido a otros usuarios por el usuario al que estamos asignando. La lista de los privilegios de sistema existentes se puede encontrar en el //Oracle8 SQL Reference// en la sección GRANT (System privileges and roles).
+
És possible donar més d'un privilegi de sistema o rol, separant-los per comes. També és possible assignar-li un (o varis) privilegis a diversos usuaris, separant-los per comes. Si se li assigna el privilegi a un rol, s'assignarà a tots els usuaris que tinguin aquest rol. Si s'assigna el privilegi a PUBLIC, s'assignarà a tots els usuaris actuals i futurs de la base de dades. La clàusula WITH ADMIN OPTION permet que el privilegi/rol que hem concedit, pugui ser concedit a altres usuaris per l'usuari al que estem assignant. La llista dels privilegis de sistema existents es pot trobar en el //Oracle8 SQL Reference// en la secció GRANT (System privileges and rols).
 
 
Ejemplos:
 
  
 +
Exemples:
 +
<pre>
 
GRANT DBA TO ADMINISTRADOR;
 
GRANT DBA TO ADMINISTRADOR;
  
Línia 91: Línia 105:
  
 
GRANT CONTROL_TOTAL TO ADMINISTRADOR;
 
GRANT CONTROL_TOTAL TO ADMINISTRADOR;
 +
</pre>
 +
== Instrucció REVOKE ==
 +
<pre>
 +
REVOKE [privilegis_de_sistema | rols] FROM [usuaris | rols |PUBLIC];
 +
</pre>
 +
És possible eliminar més d'un privilegi de sistema o rol, separant-los per comes. També és possible eliminar un (o varis) privilegis a diversos usuaris, separant-los per comes. Si se li elimina el privilegi d'un rol, s'eliminarà de tots els usuaris que tinguin aquest rol. Si s'elimina el privilegi de PUBLIC, s'eliminarà de tots els usuaris actuals i futurs de la base de dades. La llista dels privilegis de sistema existents es pot trobar en el //Oracle8 SQL Reference// en la secció GRANT (System privileges and rols). Com és lògic, només es podrà eliminar un privilegi/rol, si prèviament ha estat concedit a través de la instrucció GRANT.
  
== Instrucción REVOKE ==
+
Exemples:
 
+
<pre>
REVOKE [privilegios_de_sistema | roles] FROM [usuarios | roles |PUBLIC];
 
 
 
Es posible eliminar más de un privilegio de sistema o rol, separándolos por comas. También es posible eliminar uno (o varios) privilegios a varios usuarios, separándolos por comas. Si se le elimina el privilegio de un rol, se eliminará de todos los usuarios que tengan ese rol. Si se elimina el privilegio de PUBLIC, se eliminará de todos los usuarios actuales y futuros de la base de datos. La lista de los privilegios de sistema existentes se puede encontrar en el //Oracle8 SQL Reference// en la sección GRANT (System privileges and roles). Como es lógico, sólo se podrá eliminar un privilegio/rol, si previamente ha sido concedido a través de la instrucción GRANT.
 
 
 
Ejemplos:
 
 
 
 
REVOKE DBA FROM ADMINISTRADOR;
 
REVOKE DBA FROM ADMINISTRADOR;
  
Línia 111: Línia 125:
  
 
REVOKE CONTROL_TOTAL FROM ADMINISTRADOR;
 
REVOKE CONTROL_TOTAL FROM ADMINISTRADOR;
 +
</pre>
 +
== Privilegis sobre objectes ==
  
== Privilegios sobre objetos ==
+
Els privilegis sobre objectes permeten que cert objecte (creat per un usuari) pugui ser accedit per altres usuaris. El nivell d'accés depèn del permís que li donem: podem donar-li permís de SELECT, d'UPDATE, de DELETE, d'INSERT o de tots ells. La sintaxi bàsica és:
 +
<pre>
 +
GRANT [ALL {PRIVILEGES} | SELECT | INSERT | UPDATE | DELETE] ON objecte TO [usuari | rol | PUBLIC] {WITH GRANT OPTION};
 +
</pre>
 +
Igual que amb els permisos de sistema, és possible assignar un permís d'objecte sobre un o varis (separats per comes) usuari i/o rols. Si s'assigna a PUBLIC serà accessible en tota la base de dades.
  
Los privilegios sobre objetos permiten que cierto objeto (creado por un usuario) pueda ser accedido por otros usuarios. El nivel de acceso depende del permiso que le demos: podemos darle permiso de SELECT, de UPDATE, de DELETE, de INSERT o de todos ellos. La sintaxis básica es:
+
Si s'inclou la clàusula WITH ADMIN OPTION, aquest permís podrà ser concedit per l'usuari al que se li ha assignat.
 
 
GRANT [ALL {PRIVILEGES} | SELECT | INSERT | UPDATE | DELETE] ON objeto TO [usuario | rol | PUBLIC] {WITH ADMIN OPTION};
 
 
 
Al igual que con los permisos de sistema, es posible asignar un permiso de objeto sobre uno o varios (separados por comas) usuario y/o roles. Si se asigna a PUBLIC será accesible en toda la base de datos.
 
 
 
Si se incluye la cláusula WITH ADMIN OPTION, este permiso podrá ser concedido por el usuario al que se le ha asignado.
 
 
 
Ejemplos:
 
  
 +
Exemples:
 +
<pre>
 
GRANT ALL ON FACTURA TO CONTROL_TOTAL;
 
GRANT ALL ON FACTURA TO CONTROL_TOTAL;
  
GRANT SELECT, UPDATE ON ALUMNO TO PEPOTE, JUANCITO WITH ADMIN OPTION;
+
GRANT SELECT, UPDATE ON ALUMNE TO PEPOTE, JUANCITO WITH ADMIN OPTION;
  
GRANT SELECT ON PROFESOR TO PUBLIC;
+
GRANT SELECT ON PROFESSOR TO PUBLIC;
  
GRANT SELECT ON APUNTE TO ACCESO_CONTABILIDAD;
+
GRANT SELECT ON APUNTI TO ACCÉS_COMPTABILITAT;
 +
</pre>
 +
La manera d'eliminar permisos d'objecte és amb la instrucció REVOKE:
 +
<pre>
 +
REVOKE [ALL {PRIVILEGES} | SELECT | INSERT | UPDATE | DELETE] ON objecte FROM [usuari | rol | PUBLIC] {WITH GRANT OPTION};
 +
</pre>
 +
Igual que amb els permisos de sistema, és possible assignar un permís d'objecte sobre un o varis (separats per comes) usuari i/o rols. Si s'assigna a PUBLIC serà accessible en tota la base de dades.
  
El modo de eliminar permisos de objeto es con la instrucción REVOKE:
+
Si s'inclou la clàusula WITH ADMIN OPTION, aquest permís podrà ser concedit per l'usuari al que se li ha assignat.
 
 
REVOKE [ALL {PRIVILEGES} | SELECT | INSERT | UPDATE | DELETE] ON objeto FROM [usuario | rol | PUBLIC] {WITH ADMIN OPTION};
 
 
 
Al igual que con los permisos de sistema, es posible asignar un permiso de objeto sobre uno o varios (separados por comas) usuario y/o roles. Si se asigna a PUBLIC será accesible en toda la base de datos.
 
 
 
Si se incluye la cláusula WITH ADMIN OPTION, este permiso podrá ser concedido por el usuario al que se le ha asignado.
 
 
 
Ejemplos:
 
  
 +
Exemples:
 +
<pre>
 
GRANT ALL ON FACTURA TO CONTROL_TOTAL;
 
GRANT ALL ON FACTURA TO CONTROL_TOTAL;
  
GRANT SELECT, UPDATE ON ALUMNO TO PEPOTE, JUANCITO
+
GRANT SELECT, UPDATE ON ALUMNE TO PEPOTE, JUANCITO
 
 
WITH ADMIN OPTION;
 
 
 
GRANT SELECT ON PROFESOR TO PUBLIC;
 
  
GRANT SELECT ON APUNTE TO ACCESO_CONTABILIDAD;
+
WITH GRANT OPTION;
  
== Eliminación de usuarios ==
+
GRANT SELECT ON PROFESSOR TO PUBLIC;
  
La eliminación de usuarios se hace a través de la instrucción DROP USER. Su sintaxis es:
+
GRANT SELECT ON APUNTI TO ACCÉS_COMPTABILITAT;
 +
</pre>
  
DROP USER usuario {CASCADE};
+
== Eliminació d'usuaris ==
  
La cláusula CASCADE permite borrar el usuario y todos los objetos que posea.
+
L'eliminació d'usuaris es fa a través de la instrucció DROP USER. La seva sintaxi és:
 +
<pre>
 +
DROP USER usuari {CASCADE};
 +
</pre>
 +
La clàusula CASCADE permet esborrar l'usuari i tots els objectes que posseeixi.

Revisió de 18:31, 8 feb 2018

Concepte d'usuari, privilegi i rol

A l'hora d'establir una connexió amb un servidor Oracle, és necessari que utilitzem una manera d'accés, el qual descrigui de quins permisos disposarem durant la nostra connexió. Aquests permisos es defineixen sobre un nom d'usuari. Un usuari no és més que un conjunt de permisos que s'apliquen a una connexió de base de dades. Així mateix, l'usuari també té altres funcions:

  • Ser el propietari de certs objectes.
  • Definició del //tablespace //per defecte per als objectes d'un usuari.
  • Còpies de seguretat.
  • Quotes d'emmagatzematge.

Un privilegi no és més que un permís donat a un usuari perquè realitzi certa operació. Aquestes operacions poden ser de dos tipus:

  • Operació de sistema: necessita el permís de sistema corresponent.
  • Operació sobre objecte: necessita el permís sobre l'objecte en qüestió.

I finalment un rol de base de dades no és més que una agrupació de permisos de sistema i d'objecte.

Creació d'usuaris

La creació d'usuaris es fa a través de la sentència SQL CREATE USER La seva sintaxi bàsica és:

CREATE USER nomeni_usuari IDENTIFIED [ BY clau | EXTERNALLY ] 
{ DEFAULT TABLESPACE tablespace_per_defecte }
{ TEMPORARY TABLESPACE tablespace_temporal } 
{ DEFAULT ROLE [ rols, ALL [EXCEPT rols], NONE ] };

La clàusula IDENTIFIED BY permet indicar el tipus d'autorització que s'utilitzarà: · Interna d'Oracle: una clau per a cada usuari de base de dades. · Interna del SOTA: utilitzant la seguretat del SOTA.

La clàusula DEFAULT TABLESPACE serà el //tablespace //per defecte en la creació d'objectes de l'usuari que estem creant. Si s'omet s'utilitzarà el //tablespace// SYSTEM.

La clàusula TEMPORARY TABLESPACE indica el //tablespace //que s'utilitzarà per a la creació d'objectes temporals en l'operacions internes d'Oracle. Si s'omet s'utilitzarà el //tablespace //SYSTEM.

La clàusula DEFAULT ROLE permet assignar rols de permisos durant la creació de l'usuari.

Exemples:

CREATE USER ADMINISTRADOR IDENTIFIED BY MANAGER 
DEFAULT TABLESPACE SYSTEM 
TEMPORARY TABLESPACE TEMPORARY_DATA 
DEFAULT ROLE DBA;

CREATE USER PEPOTE IDENTIFIED BY TORO;

CREATE USER JUANCITO IDENTIFIED BY PEREZ 
DEFAULT TABLESPACE DADES_COMPTABILITAT 
TEMPORARY TABLESPACE TEMPORARY_DATA;

Creació de rols

La creació de rols permet assignar un grup de permisos a un usuari, i poder modificar aquest grup de permisos sense haver d'anar modificant tots els usuaris. Si assignem un rol amb 10 permisos a 300 usuaris, i posteriorment afegim un permís nou al rol, no serà necessari anar afegint aquest nou permís als 300 usuaris, ja que el rol s'encarrega automàticament de propagar-ho. La sintaxi bàsica és:

CREATE ROLE nomeni_rol { [NOT IDENTIFIED | IDENTIFIED [BY clau | EXTERNALLY };

Una vegada que el rol ha estat creat serà necessari afegir-li permisos a través d'instrucció GRANT.

Inicialment Oracle té predefinits els següent rols (entre uns altres):

Rol predefinit Descripció
CONNECT Tots els permisos necessaris per iniciar una sessió en Oracle
RESOURCE Tots els permisos necessaris per tenir recursos per a la creació d'objectes
DBA Tots els permisos per a un administrador de base de dades (DBA)
EXP_FULL_DATABASE Permisos per poder exportar tota la base de dades.
IMP_FULL_DATABASE Permisos per poder importar tota la base de dades.

Podem dir que un usuaris normal, ha de tenir almenys els permisos de CONNECT (per connectar-se) i de RESOURCE (per poder crear objectes).

Exemples:

CREATE ROL CONTROL_TOTAL; 

CREATE ROL BASICO; 

CREATE ROL ACCES_COMPTABILITAT;

Privilegis de sistema

Ja hem dit que els privilegis de sistema són permisos per realitzar certes operacions en la base de dades. La manera d'assignar un privilegi és a través de la instrucció GRANT i la manera de cancel·lar un privilegi és a través de la instrucció REVOKE. La sintaxi bàsica d'ambdues instruccions és:

Instrucció GRANT

GRANT [privilegis_de_sistema | rols] TO [usuaris | rols |PUBLIC] { WITH ADMIN OPTION };

És possible donar més d'un privilegi de sistema o rol, separant-los per comes. També és possible assignar-li un (o varis) privilegis a diversos usuaris, separant-los per comes. Si se li assigna el privilegi a un rol, s'assignarà a tots els usuaris que tinguin aquest rol. Si s'assigna el privilegi a PUBLIC, s'assignarà a tots els usuaris actuals i futurs de la base de dades. La clàusula WITH ADMIN OPTION permet que el privilegi/rol que hem concedit, pugui ser concedit a altres usuaris per l'usuari al que estem assignant. La llista dels privilegis de sistema existents es pot trobar en el //Oracle8 SQL Reference// en la secció GRANT (System privileges and rols).

Exemples:

GRANT DBA TO ADMINISTRADOR;

GRANT CREATE USER TO PEPOTE WITH ADMIN OPTION;

GRANT DROP USER TO JUANCITO;

GRANT CONNECT, RESOURCE TO PEPOTE, JUANCITO;

GRANT CONNECT, RESOURCE, DBA, EXP_FULL_DATABASE, IMP_FULL_DATABASE TO CONTROL_TOTAL;

GRANT CONTROL_TOTAL TO ADMINISTRADOR;

Instrucció REVOKE

REVOKE [privilegis_de_sistema | rols] FROM [usuaris | rols |PUBLIC];

És possible eliminar més d'un privilegi de sistema o rol, separant-los per comes. També és possible eliminar un (o varis) privilegis a diversos usuaris, separant-los per comes. Si se li elimina el privilegi d'un rol, s'eliminarà de tots els usuaris que tinguin aquest rol. Si s'elimina el privilegi de PUBLIC, s'eliminarà de tots els usuaris actuals i futurs de la base de dades. La llista dels privilegis de sistema existents es pot trobar en el //Oracle8 SQL Reference// en la secció GRANT (System privileges and rols). Com és lògic, només es podrà eliminar un privilegi/rol, si prèviament ha estat concedit a través de la instrucció GRANT.

Exemples:

REVOKE DBA FROM ADMINISTRADOR;

REVOKE CREATE USER FROM PEPOTE;

REVOKE DROP USER FROM JUANCITO;

RECOKE CONNECT, RESOURCE FROM PEPOTE, JUANCITO;

REVOKE CONNECT, RESOURCE, DBA, EXP_FULL_DATABASE, IMP_FULL_DATABASE FROM CONTROL_TOTAL;

REVOKE CONTROL_TOTAL FROM ADMINISTRADOR;

Privilegis sobre objectes

Els privilegis sobre objectes permeten que cert objecte (creat per un usuari) pugui ser accedit per altres usuaris. El nivell d'accés depèn del permís que li donem: podem donar-li permís de SELECT, d'UPDATE, de DELETE, d'INSERT o de tots ells. La sintaxi bàsica és:

GRANT [ALL {PRIVILEGES} | SELECT | INSERT | UPDATE | DELETE] ON objecte TO [usuari | rol | PUBLIC] {WITH GRANT OPTION};

Igual que amb els permisos de sistema, és possible assignar un permís d'objecte sobre un o varis (separats per comes) usuari i/o rols. Si s'assigna a PUBLIC serà accessible en tota la base de dades.

Si s'inclou la clàusula WITH ADMIN OPTION, aquest permís podrà ser concedit per l'usuari al que se li ha assignat.

Exemples:

GRANT ALL ON FACTURA TO CONTROL_TOTAL;

GRANT SELECT, UPDATE ON ALUMNE TO PEPOTE, JUANCITO WITH ADMIN OPTION;

GRANT SELECT ON PROFESSOR TO PUBLIC;

GRANT SELECT ON APUNTI TO ACCÉS_COMPTABILITAT;

La manera d'eliminar permisos d'objecte és amb la instrucció REVOKE:

REVOKE [ALL {PRIVILEGES} | SELECT | INSERT | UPDATE | DELETE] ON objecte FROM [usuari | rol | PUBLIC] {WITH GRANT OPTION};

Igual que amb els permisos de sistema, és possible assignar un permís d'objecte sobre un o varis (separats per comes) usuari i/o rols. Si s'assigna a PUBLIC serà accessible en tota la base de dades.

Si s'inclou la clàusula WITH ADMIN OPTION, aquest permís podrà ser concedit per l'usuari al que se li ha assignat.

Exemples:

GRANT ALL ON FACTURA TO CONTROL_TOTAL;

GRANT SELECT, UPDATE ON ALUMNE TO PEPOTE, JUANCITO

WITH GRANT OPTION;

GRANT SELECT ON PROFESSOR TO PUBLIC;

GRANT SELECT ON APUNTI TO ACCÉS_COMPTABILITAT;

Eliminació d'usuaris

L'eliminació d'usuaris es fa a través de la instrucció DROP USER. La seva sintaxi és:

DROP USER usuari {CASCADE};

La clàusula CASCADE permet esborrar l'usuari i tots els objectes que posseeixi.