En este artículo voy a demostrar cómo listar los grants (privilegios de acceso) sobre una tabla en un servidor de bases de datos PostgreSQL.
Anteriormente publiqué un artículo detallando el funcionamiento de los roles y permisos en PostgreSQL. En dicho artículo utilizaba una consulta SQL sobre la tabla information_schema.table_privileges
para determinar los permisos sobre una tabla. Sin embargo, también existe el subcomando \dp
("display privileges") para obtener la misma información. A su vez, la herramienta CLI psql
posee el alias \z
para el subcomando \dp
.
Por ejemplo, para listar los permisos sobre la tabla "user_group":
app1=# \z user_group Access privileges Schema | Name | Type | Access privileges | Column access privileges ------------+------------+-------+---------------------------+-------------------------- accounting | user_group | table | r_webapp=ar/postgres +| | | | r_admin=arwdDxt/postgres +| | | | r_readonly=r/postgres +| | | | r_devel=arwdDxt/postgres | (1 row) app1=#
Recordar que el significado de cada privilegio está documentado en el manual del comando GRANT:
rolename=xxxx -- privileges granted to a role =xxxx -- privileges granted to PUBLIC r -- SELECT ("read") w -- UPDATE ("write") a -- INSERT ("append") d -- DELETE D -- TRUNCATE x -- REFERENCES t -- TRIGGER X -- EXECUTE U -- USAGE C -- CREATE c -- CONNECT T -- TEMPORARY arwdDxt -- ALL PRIVILEGES (for tables, varies for other objects) * -- grant option for preceding privilege /yyyy -- role that granted this privilege