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