Roles, permisos y seguridad por filas
Crea y edita roles de PostgreSQL, concede y revoca privilegios por rol o por objeto, y gestiona las políticas de seguridad por filas. Edición Studio.
En esta página
Abrirlo#
En la edición Studio, pasa a Avanzado y elige Roles y permisos en la barra lateral. Sección tiene tres pestañas: Roles, Permisos y Seguridad por filas.
Cada cambio enseña su SQL y espera tu confirmación, como cuenta Cada cambio enseña su SQL. En modo solo lectura todo se ve y nada se cambia.
Roles#
La lista enseña cada rol con sus atributos como etiquetas, los roles de los que es miembro y tú junto al rol con el que está conectado Gresbase. Los roles predefinidos (pg_monitor, pg_read_all_data…) quedan ocultos hasta que marcas Ver los roles predefinidos (pg_*). Se pueden conceder, no cambiar.
Nuevo rol pide un nombre, si quieres una contraseña, los atributos y Puede usar el modo avanzado (desmarcado de entrada). Haz clic en un rol para abrir su detalle:
- Atributos: Puede entrar, Superusuario, Crear bases de datos, Crear roles, Heredar privilegios, Replicación, Saltarse la seguridad por filas, Límite de conexiones y Contraseña válida hasta. Guardar atributos los aplica. Hacer a alguien superusuario o darle
BYPASSRLSviene con aviso. - Gresbase Studio: Puede usar el modo avanzado activa o quita el modo avanzado a ese rol. Se guarda al momento, sin SQL: es un ajuste de Gresbase, no de PostgreSQL.
- Miembro de y Miembros: las membresías del rol en los dos sentidos. Añadir membresía lo hace miembro de otro rol, con
ADMINy, desde PostgreSQL 16,INHERITySET. - Contraseña: Poner contraseña pone una nueva. Viaja a Gresbase una sola vez y PostgreSQL la guarda como SCRAM-SHA-256. No se enseña nunca: en la vista previa del SQL sale
'********'y no llega a los logs. - Renombrar. Renombrar borra una contraseña MD5, porque MD5 va salado con el nombre; la vista previa lo avisa.
- Eliminar rol. Si el rol es dueño de objetos en esta base, salen en una lista y eliges: dárselos a otro rol (
REASSIGN OWNED) o eliminarlos (DROP OWNED). Confirmas escribiendo el nombre del rol.
Sin CREATEROLE ni superusuario, la pantalla lo dice y los roles se ven, pero no se cambian.
Permisos#
Vista de permisos tiene tres vistas.
Por rol. Elige un rol para ver cada objeto (la base, los esquemas, las tablas, vistas, vistas materializadas, tablas externas, secuencias, funciones, procedimientos y las columnas con privilegios propios) con sus privilegios como etiquetas:
- concedido, relleno: se le dio al rol directamente. Un
*marca los que tienen grant option. - heredado, con borde discontinuo: el rol lo tiene por una membresía o por
PUBLIC. Al pasar el ratón dice de dónde viene, por ejemplo Heredado de app_readers. - sin conceder, vacío.
Un superusuario se salta todas las comprobaciones de privilegios, y la pantalla lo dice.
Por objeto. Elige un objeto para ver qué roles (y PUBLIC) tienen qué en él. En una tabla, un selector de columna enseña los privilegios de cada columna.
Privilegios por defecto. Las entradas de ALTER DEFAULT PRIVILEGES: lo que reciben las tablas, secuencias, funciones, tipos o esquemas que cree después un rol concreto, en un esquema o en todos. Un formulario añade otras.
Pulsar un privilegio no lo cambia al momento. Va a una cola, que se ve como N cambios pendientes (se concederá, se revocará). Revisar y aplicar enseña las sentencias GRANT y REVOKE y las ejecuta todas en una transacción; Descartar vacía la cola.
Plantillas escribe todas las sentencias de un tipo de rol habitual, para un rol y un esquema, y te las deja revisar antes de ejecutarlas:
| Plantilla | Concede |
|---|---|
| Solo lectura | CONNECT, USAGE en el esquema y SELECT en sus tablas y secuencias, ahora y en adelante. |
| Lectura y escritura, sin borrar | CONNECT, USAGE en el esquema, SELECT, INSERT y UPDATE en sus tablas y USAGE en sus secuencias, ahora y en adelante. Sin DELETE ni TRUNCATE. |
«En adelante» son los objetos que cree después el rol conectado, mediante privilegios por defecto.
Seguridad por filas#
La lista enseña cada tabla con su estado de seguridad por filas (desactivada, activada o forzada) y cuántas políticas tiene. Elige una tabla para ver qué significa su estado y sus políticas.
Los botones Activar seguridad por filas, Desactivar seguridad por filas, Forzar para el dueño y Dejar de forzar cambian el estado. Cada uno avisa de su efecto: sin seguridad por filas, todo rol con SELECT lee todas las filas; activada y sin políticas, ningún rol salvo el dueño (y los superusuarios) ve ninguna fila.
Cada política enseña su comando, si es Permisiva o Restrictiva, los roles a los que se aplica y sus condiciones USING y WITH CHECK. Nueva política y Editar abren un formulario; el comando habilita USING, WITH CHECK o los dos, según los admite PostgreSQL. Editar sustituye la política (DROP POLICY y CREATE POLICY en una transacción), porque ALTER POLICY no cambia su comando ni su tipo. Cada condición tiene que ser una sola expresión.
Probar como rol cuenta y enseña hasta 20 filas que un rol puede leer, en una transacción de solo lectura con SET LOCAL ROLE. Tienes que ser miembro de ese rol. Si el rol se salta las políticas (superusuario, BYPASSRLS, dueño sin forzar o seguridad por filas desactivada), el resultado dice por qué.
Permisos necesarios#
| Acción | Necesita |
|---|---|
| Ver roles, privilegios y políticas | Cualquier rol. |
| Crear, cambiar o eliminar roles, membresías y contraseñas | CREATEROLE o superusuario. Solo un superusuario crea o cambia a otro superusuario. |
GRANT y REVOKE |
Ser dueño del objeto o tener el privilegio con grant option. |
| Privilegios por defecto de otro rol | Ser miembro de ese rol. |
| Seguridad por filas y políticas | Ser dueño de la tabla. |
| Probar como rol | Ser miembro de ese rol. |
PostgreSQL comprueba cada sentencia: si una falla, la transacción se revierte y Gresbase enseña el error. Mira también Seguridad y red.