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)
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)
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)
BD2006
Usuarios de la BD se crean con CREATE user (ALTER user) Una coleccin de usuarios puede ser agrupada en un GROUP
BD2006
Privilegios
BD2006
usuario dueo (owner) de objeto tiene todos los privilegios sobre ste
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;
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;
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)
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
BD2006
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
BD2006