martes, 11 de febrero de 2014

Mostrando los privilegios ACL de objetos en PostgreSQL

Complementando los anteriores posts parte I y parte II de los comandos GRANT y REVOKE.

Como parte del estándar de seguridad SQL1 a cada usuario de un DBMS se le asigna un user-id que determina que comandos le están permitidos o prohibidos ejecutar, generalmente estos user-id son asignados por los administradores o superusuarios del DBMS, quienes son los que mantienen esta información en Access Control List (ACL's).

El estándar ANSI/ISO SQL utiliza el termino authorization-id en lugar de user-id (aquí concuerdo con que el termino authorization-id es mejor y más descriptivo).

Los privilegios ACL's de un objeto los puedes mostrar con los comandos: \dp (display permissions) o \z.

A continuación el significado de cada privilegio (explico algunos que no son tan evidentes):

  • r = SELECT
  • a = INSERT
  • w = UPDATE
  • d = DELETE
  • R = RULES
  • x = REFERENCES
  • t = TRIGGER (tablas)
  • X = EXECUTE (Funciones, procedimientos)
  • U = USAGE (Poder enumerar los objetos dentro de un esquema y
    crear funciones con lenguajes de procedimiento)
  • C = CREATE (Creación de esquemas, objetos, indices y tablas)
  • T = TEMPORARY (Creación de tablas temporales en una base de datos)
  • * = GRANT
  • ALL= arwdRxt

Estos privilegios los despliega el comando \z para tablas, vistas y secuencias.

Para mayor referencia consultar el libro: PostgreSQL, The comprehensive guide to building, programming and administering PostgreSQL databases, Second Edition.; capítulo 23 Security