Anda di halaman 1dari 10

Seguridad

habilitar el acceso a ciertos usuarios (o grupos de usuarios) a partes seleccionadas de la BD y al mismo tiempo evitar que puedan accesar el resto de la BD Mecanismos de Seguridad

Obligatorios - se fuerza seguridad en varios niveles (usado en aplicaciones militares o de alta seguridad) Discrecionarios - se otorgan privilegios a los usuarios en forma discrecionaria (usado en aplicaciones comerciales)

En sistemas discrecionarios el DBA es el responsable de la seguridad del sistema

tiene una cuenta especial (similar a root) que le da acceso a operaciones privilegiadas

crear cuentas (control de acceso) otorgar o anular privilegios (a nivel general o a objetos especificos)

Prof. Jaime Navn 220

BD2006

Discrecionario

DBMS provee acceso selectivo a cada relacin basado en usuarios (cuentas) especficos tener una cuenta no entrega automticamente toda la funcionalidad del DBMS a su dueo (operaciones tambin son controladas) Privilegios a Nivel de Cuenta (system)

DBA especifica los privilegios de cada cuenta independientemente de las relaciones en la BD

Privilegios a Nivel de Relacin (object)


Control del acceso a cada Relacin o Vista de la BD

Prof. Jaime Navn 221

BD2006

Usuarios, Grupos y Objetos

Usuarios de la BD se crean con CREATE user (ALTER user) Una coleccin de usuarios puede ser agrupada en un GROUP

grupo PUBLIC predefinido al cual pertenecen todos los usuarios

Tipos de objetos de la BD que pueden ponerse bajo control de acceso


databases schemas tables views sequences functions

Prof. Jaime Navn 222

BD2006

Privilegios

Prof. Jaime Navn 223

BD2006

Usuarios Privilegios y Objetos

usuario dueo (owner) de objeto tiene todos los privilegios sobre ste

es posible cambiar la propiedad de un objeto (Alter table owner to new_owner)

dueo puede traspasar privilegios a otros usuarios mediante GRANT


GRANT privilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username } [ WITH GRANT OPTION ]

dueo puede revocar un privilegio entregado mediante REVOKE


REVOKE privilege [, ...] ON object [, ...] FROM { PUBLIC | GROUP groupname | username }

traspaso de privilegios puede hacerse con o sin propagacin

para eso sirve la opcin [ WITH GRANT OPTION ]

Prof. Jaime Navn 224

BD2006

Ejemplos
GRANT SELECT, INSERT, UPDATE ON store.products TO steve; GRANT SELECT ON store.employees TO steve; GRANT UPDATE (last_name, salary) ON store.employees TO steve; REVOKE INSERT ON products FROM steve; REVOKE SELECT ON store.customers FROM steve; GRANT SELECT ON store.customers TO steve WITH GRANT OPTION;

Prof. Jaime Navn 225

BD2006

Ejemplos

DBA crea 4 cuentas A1, A2, A3 y A4 . Slo A1 puede crear relaciones GRANT CREATETAB TO A1; A1 crea dos relaciones: EMPLOYEE(NAME, SSN, BDATE, ADDRESS, SEX, SALARY, DNO) DEPARTMENT(DNUMBER, DNAME, MGRSSN)

A1 otorga a A2 privilegios para insertar y eliminar tuplas en ambas relaciones. A2 no puede a su vez traspasar privilegios a terceros. GRANT INSERT, DELETE ON EMPLOYEE, DEPARTMENT TO A2; A1 quiere que A3 pueda consultar ambas tablas y traspasar ese derecho GRANT SELECT ON EMPLOYEE, DEPARTMENT TO A3 WITH GRANT OPTION; A3 otorga privilegio de lectura para EMPLOYEE a A4 GRANT SELECT ON EMPLOYEE TO A4 A1 elimina privilegio de lectura para EMPLOYEE a A3 (DBMS elimina tambin el privilegio de A4) REVOKE SELECT ON EMPLOYEE TO A3 A1 da a A3 privilegio de lectura limitada: slo nombre, fecha de nacimiento y direcciones de empleados del Depto 5) CREATE VIEW A3EMPLOYEE AS SELECT NAME, BDATE, ADDRESS FROM EMPLOYEE WHERE DNO = 5 GRANT SELECT ON A3EMPLOYEE TO A3 WITH GRANT OPTION;

Prof. Jaime Navn 226

BD2006

Revisando Privilegios

Es posible consultar una tabla especial llamada pg_class o alternativamente usar el comando \z
=> select relname, relacl from pg_class where relname = 'customers'; relname | relacl -----------+-------------------------------customers | {"=","sheila=arwR","bruce=r"} (1 row) => \z customers Access permisiones for database relname | relacl -----------+-------------------------------customers | {"=","sheila=arwR","bruce=r"} (1 row)

ACL -access control list

Prof. Jaime Navn 227

BD2006

ACLs y Grupos
CREATE GROUP clerks; CREATE GROUP managers; CREATE USER monty; ALTER GROUP clerks ADD USER bruce; ALTER GROUP clerks ADD USER sheila; ALTER GROUP managers ADD USER sheila; GRANT SELECT ON customers TO PUBLIC; GRANT INSERT ON customers to GROUP clerks; GRANT INSERT, UPDATE ON customers to GROUP managers; ACL de customers contiene ahora: {=r} {bruce=r} {group clerks=ar} {group managers=arw} Qu puede hacer sheila ?

si existe una entrada en el acl que corresponde al nombre, esa determina si la operacin se permite si no existe une entrada que corresponda al nombre se busca en todos los grupos al cual pertenece y si alguno tiene ese privilegio entonces se permite si la entrada correspondiente a public tiene el rivilegio entonces se concede

Prof. Jaime Navn 228

BD2006

Que pasa con las funciones

La funcin ejecuta con los privilegios del usuario que la invoca

si la funcin realiza Updates sobre una tabla el usuario debe tener dichos privilegios

A veces no es suficiente
una secretaria no podra llamar a ejecucin ningn procedimiento almacenado complejo la solucin es dar privilegios a la funcin misma

Al crear una funcin es posible especificar


usar los privilegios del invocador (security invoker) usar los privilegios del dueo de la funcin (security definer)

Prof. Jaime Navn 229

BD2006

Anda mungkin juga menyukai