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


Tal vez pueda interesarte


Compartí este artículo