Pràctica ASI-C6-ASGBD: Seguretat a Oracle I

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Objectius

En aquesta pràctica executarem el script admin_seguretat1.sql, que ilustra els conceptes bàsics de seguretat a Oracle, creació d'usuaris, permisos i rols que vam estar veient a la teoria. Es treballa amb dos usuaris. Un que té permisos de DBA (per ex, MARIA), i un altre que té permisos limitats (per ex, PERE).

Teoria

Desenvolupament

Creem l'usuari MARIA (usuari DBA):

SQL> CREATE USER "MARIA"
IDENTIFIED BY maria
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;

SQL> GRANT CONNECT,DBA TO "MARIA";

Primer de tot fem un SPOOL per a registrar en un fitxer tot allò que va succeïnt en el script

SPOOL c:\log.txt
SET echo on

Ens connectem amb l'usuari MARIA, que ja existeix i és DBA (té els permisos suficients per crear usuaris,...), i creem la taula de proves jtemp amb tres files per a fer proves. És important crear els usuaris amb majúscules. En la versió 8 dóna problemes a posteriori si hem creat els usuaris amb majúcules. (Comprovar si això també s'aplica a versions posteriors).

prompt ens connectem amb l'usuari MARIA...
pause
connect MARIA/BBDD@BBDD

i creem la taula JTEMP amb tres files per a fer proves

drop table jtemp;
create table jtemp(camp1 varchar2(10));
insert into jtemp values('fila1');
insert into jtemp values('fila2');
insert into jtemp values('fila3');

select * from jtemp;

Abans de crear l'usuari PERE l'esborrem, i també esborrem tots els objectes del seu esquema (CASCADE). Creem l'usuari sense cap mena de permís.

REM l'opcio CASCADE es per esborrar les taules de 'PERE' si es que n'hi ha
drop user "PERE" CASCADE;

prompt creem l'usuari PERE.

create user "PERE" identified by "PERE"
default tablespace users
temporary tablespace temp
quota 1M on users
profile default;

Comprovem que l'usuari s'ha creat mirant la vista all_users del diccionari. Tanmateix, no ens podem connectar, no tenim permisos. Per donar permisos ens hem de tornar a connectar com a MARIA i donar els permisos mínims. Ara sí que podrem connectar-nos i crear una taula en l'esquema de PERE.

select * from all_users where username='PERE';

connect PERE/PERE@BBDD

prompt ens tornem a connectar amb 'MARIA'
pause

connect MARIA/BBDD@BBDD

prompt donem a l'usuari PERE el rol de CONNECT i RESOURCE, que entre d'altres inclou els privilegis de CREATE SESSION, CREATE TABLE i CREATE VIEW
pause

grant "CONNECT","RESOURCE" to "PERE";

connect PERE/PERE@BBDD

create table ptemp(camp1 varchar2(10));
insert into ptemp values('fila1');
select * from ptemp;

pause

Si PERE vol accedir a la taula jtemp de l'esquema MARIA, encara no té permisos per fer-ho. L'usuari MARIA li haurà de donar privilegis sobre aquest objecte per fer, per exemple, selects i inserts.

prompt volem accedir a la taula MARIA.jtemp
prompt evidentment, encara no tenim privilegis per fer-ho
prompt select * from MARIA.jtemp;

pause
select * from MARIA.jtemp;
prompt encara que diu que la tabla no existeix, en realitat si que existeix pero no hi ha privilegis

pause

prompt S'ha de donar el privilegi de SELECT ON TEMP to PERE (ho ha de fer l'usuari MARIA, que es DBA i te permisos per poder-ho fer).
prompt per tant tornem a connectar-nos com a MARIA per donar aquests privilegis
prompt grant select, insert on MARIA.jtemp to PERE;
pause

connect MARIA/BBDD@BBDD

grant select, insert on MARIA.jtemp to PERE;
pause

comprovem que ara sí que tenim privilegis suficients per a select i insert, però no per a update.

prompt tornem a connectar-nos com a PERE
connect PERE/PERE@BBDD

prompt i ara si que podem fer la select que voliem
prompt select * from MARIA.jtemp;
pause

select * from MARIA.jtemp;

prompt i també tenim permisos per fer inserts

insert into MARIA.jtemp values('fila4');

select * from MARIA.jtemp;
pause

prompt pero no tenim permisos per a fer updates
update MARIA.jtemp set camp1='canvifila4' where camp1='fila4';
select * from MARIA.jtemp;
pause

Ara MARIA dóna permís per a update a PERE sobre l'objecte jtemp. Després dóno permisos totals (GRANT ALL)

connect MARIA/BBDD@BBDD

grant update on MARIA.jtemp to PERE;

pause

connect PERE/PERE@BBDD

update MARIA.jtemp set camp1='canvifila4' where camp1='fila4';
select * from MARIA.jtemp;
pause

prompt finalment, concedeixo tots els permisos sobre aquesta taula:
promp grant all on MARIA.jtemp to PERE

connect MARIA/BBDD@BBDD
grant all on MARIA.jtemp to PERE

pause

prompt i ara puc fer coses mes radicals com
prompt alter table MARIA.jtemp modify camp1 varchar2(12);
prompt alter table MARIA.jtemp add camp2 varchar2(10);

alter table MARIA.jtemp modify camp1 varchar2(12);
alter table MARIA.jtemp add camp2 varchar2(10);
describe MARIA.jtemp

spool off

A realitzar

Estudia bé el contingut del script. Executa'l. Realitza modificacions del script que afectin a privilegis de sistema i privilegis d'objecte. En comptes d'usar l'usuari MARIA per fer proves, utilitza el teu usuari ASI2AXX.

Per tal de què els alumnes no entrin en conflicte entre sí, hauràs de treballar:

Fica els noms d'usuari en majúscules. Encara que sembli un aspecte sense importància, s'ha vist que és vital per al funcionament de la pràctica.

Entrega

Entregaràs el script (i el log) resultant al Moodle.

Recursos

script admin_seguretat1.sql:

SPOOL c:\log.txt

SET echo on
prompt ens connectem amb l'usuari MARIA...
pause
connect MARIA/BBDD@BBDD

prompt i creem la taula JTEMP amb tres files per a fer proves
pause

drop table jtemp;
create table jtemp(camp1 varchar2(10));
insert into jtemp values('fila1');
insert into jtemp values('fila2');
insert into jtemp values('fila3');

select * from jtemp;

REM l'opcio CASCADE es per esborrar les taules de 'PERE' si es que n'hi han
drop user "PERE" CASCADE;

prompt creem l'usuari PERE.

create user "PERE" identified by "PERE"
default tablespace users
temporary tablespace temp
quota 1M on users
profile default;

select * from all_users where username='PERE';

connect PERE/PERE@BBDD

prompt ens tornem a connectar amb 'MARIA'
pause

connect MARIA/BBDD@BBDD

prompt donem a l'usuari PERE el rol de CONNECT i RESOURCE, que entre d'altres inclou els privilegis de CREATE SESSION, CREATE TABLE i CREATE VIEW
pause

grant "CONNECT","RESOURCE" to "PERE";

connect PERE/PERE@BBDD

create table ptemp(camp1 varchar2(10));

insert into ptemp values('fila1');

select * from ptemp;

pause

prompt volem accedir a la taula MARIA.jtemp
prompt evidentment, encara no tenim privilegis per fer-ho
prompt select * from MARIA.jtemp;

pause
select * from MARIA.jtemp;
prompt encara que diu que la tabla no existeix, en realitat si que existeix pero no hi ha privilegis

pause

prompt S'ha de donar el privilegi de SELECT ON TEMP to PERE (ho ha de fer l'usuari MARIA, que es DBA i te permisos per poder-ho fer).
prompt per tant tornem a connectar-nos com a MARIA per donar aquests privilegis
prompt grant select, insert on MARIA.jtemp to PERE;
pause

connect MARIA/BBDD@BBDD

grant select, insert on MARIA.jtemp to PERE;
pause

prompt tornem a connectar-nos com a PERE
connect PERE/PERE@BBDD

prompt i ara si que podem fer la select que voliem
prompt select * from MARIA.jtemp;
pause

select * from MARIA.jtemp;

prompt i també tenim permisos per fer inserts

insert into MARIA.jtemp values('fila4');

select * from MARIA.jtemp;
pause

prompt pero no tenim permisos per a fer updates
update MARIA.jtemp set camp1='canvifila4' where camp1='fila4';
select * from MARIA.jtemp;
pause

connect MARIA/BBDD@BBDD

grant update on MARIA.jtemp to PERE;

pause

connect PERE/PERE@BBDD

update MARIA.jtemp set camp1='canvifila4' where camp1='fila4';
select * from MARIA.jtemp;
pause

prompt finalment, concedeixo tots els permisos sobre aquesta taula:
promp grant all on MARIA.jtemp to PERE

connect MARIA/BBDD@BBDD
grant all on MARIA.jtemp to PERE

pause

prompt i ara puc fer coses mes radicals com
prompt alter table MARIA.jtemp modify camp1 varchar2(12);
prompt alter table MARIA.jtemp add camp2 varchar2(10);

alter table MARIA.jtemp modify camp1 varchar2(12);
alter table MARIA.jtemp add camp2 varchar2(10);
describe MARIA.jtemp

spool off

Durarda

2 hores


creat per Joan Quintana Compte, gener 2010

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
Institut Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines