Roles y permisos
La sección Permisos es un explorador de roles y privilegios para PostgreSQL. Presenta
los roles de un servidor al estilo de Finder, en columnas contiguas: elija un rol a la izquierda y las columnas a
su derecha muestran de quién es miembro, quién es miembro de él y qué puede hacer realmente sobre cada objeto de
la base de datos, incluido todo lo que solo tiene de forma indirecta, a través de pertenencias de roles heredadas o
a través de PUBLIC. Los roles, las pertenencias, los privilegios, los privilegios por defecto y la
propiedad pueden crearse, modificarse y revocarse ahí mismo.
Nota: por ahora esta sección solo es compatible con PostgreSQL. Para cualquier otra conexión muestra Los permisos aún no son compatibles con … / Actualmente solo se admite PostgreSQL.

Abrir la sección
Haga clic en el icono Permisos (el icono de las personas) de la barra izquierda. La sección trabaja sobre una conexión ya abierta en la sección Base de datos: en su parte superior se muestra la misma franja de pestañas de conexión abiertas, y la sección usa la pestaña de conexión que esté seleccionada allí. Si no hay ninguna conexión abierta, muestra No hay ninguna conexión abierta; abra una primero (consulte Administración de bases de datos). Las columnas se reconstruyen cada vez que entra en la sección, por lo que cualquier selección anterior se restablece.
Todo lo que haga aquí requiere los mismos privilegios que requeriría el SQL equivalente
(CREATEROLE, superusuario o la propiedad del objeto, según la acción): OmniDB ejecuta las sentencias
con las credenciales de la conexión que está usando. Las tres columnas se pueden redimensionar arrastrando el
fino tirador de su borde derecho; un doble clic en un tirador restablece esa columna, y los anchos se recuerdan.
Columna 1: roles
La columna Roles enumera todos los roles del servidor, incluidos los roles integrados
pg_*, ordenados por nombre. Los roles que pueden iniciar sesión (usuarios) tienen un icono de una
persona; los que no pueden (grupos), un icono de dos personas; los superusuarios se marcan con
(superusuario) y los roles cuya cuenta ha caducado, con (caducado). La primera fila es siempre
PUBLIC (icono del globo): no es un rol real, sino el pseudorrol al que pertenece implícitamente todo
rol, de modo que los privilegios concedidos a PUBLIC pueden explorarse y editarse de la misma forma.
El cuadro situado sobre la lista filtra los roles por nombre, y la lista desplegable contigua, por tipo: Todos los roles, Usuarios (pueden iniciar sesión), Grupos (sin inicio de sesión), Superusuarios o Caducados.
Haga clic en un rol para seleccionarlo como rol activo; las demás columnas muestran entonces ese rol. Debajo de la lista:
- + abre el diálogo Crear rol: Nombre del rol, Contraseña y las casillas de atributos Puede iniciar sesión (activada por defecto), Superusuario, Puede crear bases de datos, Puede crear roles, Hereda los privilegios de los roles de los que es miembro (activada por defecto), Puede iniciar la replicación y Omite la seguridad a nivel de fila, además de Límite de conexiones (-1 = ilimitado) y La cuenta caduca (déjelo vacío para que no caduque).
- − elimina el rol seleccionado (deshabilitado para
PUBLIC).

Al hacer clic derecho en un rol (que no sea PUBLIC) se ofrece:
- Cambiar contraseña: pide la nueva contraseña dos veces. La contraseña se convierte en hash, en el formato para el que está configurado el propio servidor (SCRAM-SHA-256 o md5), antes de enviarse.
- Modificar atributos: los mismos campos de atributos que Crear rol, rellenados con los valores actuales del rol. Vaciar La cuenta caduca elimina la caducidad.
- Renombrar rol:
ALTER ROLE … RENAME TO. Las concesiones, las pertenencias y la propiedad siguen al rol; el diálogo advierte de que PostgreSQL borra al renombrar una contraseña guardada como md5. - Exportar permisos / Exportar permisos de todos los roles: un script SQL copiable
que recrea los permisos:
CREATE ROLE(solo atributos), pertenencias, privilegios directos sobre objetos y privilegios por defecto, con las sentencias de cada base de datos bajo su propio encabezado. Cada parte se puede desactivar y el script se regenera; Guardar como archivo… lo almacena (un diálogo nativo de guardado en la aplicación de escritorio, una descarga en el navegador). No se exportan las contraseñas, las concesiones dePUBLIC, la propiedad ni los ajustes de rol. - Clonar rol: crea un nuevo rol con los atributos del rol de origen y, opcionalmente,
sus pertenencias directas y sus privilegios directos sobre objetos en todas las bases de datos (que se encuentran
mediante
pg_shdepend, de modo que nunca se abren las bases de datos en las que no tiene nada). La contraseña no se copia; puede establecer una en el diálogo. No se copian los privilegios por defecto, los objetos propios ni los ajustes propios del rol. - Eliminar rol: si el rol aún es propietario de objetos o tiene privilegios, el diálogo enumera,
por base de datos, lo que posee y lo que tiene, y pregunta qué rol se hará cargo de sus objetos. Después OmniDB
ejecuta
REASSIGN OWNEDyDROP OWNEDen cada base de datos afectada (en ese orden, para que no se borre nada) antes deDROP ROLE. Si no hay dependencias, simplemente pide confirmación.

Columna 2: pertenencias
La segunda columna está dividida en dos mitades:
- … — Miembros (arriba): los roles que son miembros del rol activo. Con
PUBLICactivo, enumera todos los roles, ya que todos obtienen implícitamente los privilegios dePUBLIC. - … — Miembro de (abajo): todos los roles a los que pertenece el rol activo, directamente o a
través de otros roles, reunidos en una sola lista.
PUBLICaparece siempre en primer lugar.
En ambas mitades, las pertenencias directas se muestran en texto normal y las indirectas (heredadas),
en cursiva con un icono atenuado. Una pertenencia directa concedida WITH ADMIN OPTION se marca con
(admin option); en PostgreSQL 16 y posteriores, (sin herencia) y (sin SET)
marcan las pertenencias que carecen de la opción INHERIT o SET.
- El + bajo Miembro de abre Conceder pertenencia: elija uno o varios roles (haga clic en las filas para alternarlos) de los que hacer miembro al rol activo, opcionalmente Con opción de administración (admin option). En PostgreSQL 16+ el diálogo ofrece además las opciones INHERIT y SET (Predeterminado del servidor / Sí / No).
- El + bajo Miembros abre Añadir miembro: el mismo diálogo a la inversa; los roles elegidos pasan a ser miembros del rol activo.
- − (o clic derecho → Quitar pertenencia) revoca una pertenencia tras preguntar ¿Revocar la pertenencia a "…"?. Solo se pueden quitar las pertenencias directas; una heredada debe revocarse allí donde se concede realmente.
- Clic derecho → Editar opciones de pertenencia cambia in situ la opción de administración de una
pertenencia directa y (en PostgreSQL 16+) las opciones
INHERIT/SET. - Hacer doble clic en una fila, o clic derecho → Establecer como rol activo, convierte ese rol en el rol activo, exactamente como si hubiera hecho clic en él en la columna Roles: la forma más rápida de seguir una cadena de herencia hacia arriba.
Columna 3: objetos y privilegios efectivos
La tercera columna, … — Objetos, es un árbol de todo aquello sobre lo que el rol activo tiene algún
privilegio: sus privilegios efectivos, es decir, sus concesiones directas más todo lo que hereda a través de
sus pertenencias y de PUBLIC. Empieza con dos grupos, Bases de datos (todas las bases de datos
del servidor) y Tablespaces; un nodo se muestra normal si el rol tiene algún privilegio en él, y en gris en
caso contrario. El cuadro de la parte superior filtra las bases de datos y los tablespaces por nombre y conserva su
texto al cambiar de rol.
Al expandir una base de datos, sus objetos se cargan a través de una conexión aparte a esa base de datos (la base de datos activa de la propia pestaña de conexión no cambia): Esquemas y, dentro de cada esquema, carpetas para Tablas, Vistas, Secuencias, Funciones, Procedimientos, Vistas materializadas, Tipos y Dominios; los foreign data wrappers y los servidores externos cuelgan directamente de la base de datos. Solo se enumeran los objetos sobre los que el rol tiene realmente algún privilegio (los esquemas del sistema se omiten); un esquema que aparece en gris solo está ahí porque algo de su interior lo está. Cada base de datos tiene además dos carpetas adicionales: Objetos propios (n), que enumera lo que el rol posee allí (hasta 1000 entradas), y Privilegios por defecto, descrita más abajo. Si no hay nada en absoluto, la base de datos muestra Sin privilegios sobre ningún objeto de esta base de datos.

Edición de privilegios
Haga clic derecho en una base de datos, un tablespace, un esquema o un objeto y elija Editar privilegios. El diálogo enumera como casillas todos los privilegios válidos para ese tipo de objeto:
- base de datos:
CREATE,CONNECT,TEMPORARY; - tablespace:
CREATE; esquema:CREATE,USAGE; - tabla, vista y vista materializada:
SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER; - secuencia:
USAGE,SELECT,UPDATE; - función y procedimiento:
EXECUTE; - tipo, dominio, foreign data wrapper y servidor externo:
USAGE.
Las casillas muestran lo que el rol tiene directamente:
- marcada: concedido directamente al rol; desmárquela para aplicar
REVOKE; - desmarcada: no concedido directamente; márquela para aplicar
GRANT. Si el rol ya tiene el privilegio a través de otro rol o dePUBLIC, permanece desmarcada y se etiqueta Heredado de: …; aun así puede marcarla para concederlo directamente, de modo que se conserve si se elimina la pertenencia de la que procedía. Para quitar un privilegio heredado, revóquelo en su origen (convierta el rol de origen en el rol activo con Establecer como rol activo).

Con opción de concesión (grant option) se aplica a los privilegios que conceda de nuevo en ese diálogo. Confirme con Guardar.
Para conceder algo sobre un objeto que aún no está en el árbol, use el + (Añadir privilegio
sobre objeto) bajo la columna: elija el Tipo de objeto,
después la Base de datos (para todo excepto bases de datos y tablespaces; por defecto, la base de datos actual
de la conexión), el Esquema para los objetos a nivel de esquema, el propio Objeto (las funciones
se muestran con la firma de sus argumentos), marque los Privilegios y, opcionalmente, Con opción de
concesión (grant option). Para tablas, secuencias, funciones y procedimientos, la opción Alcance se
puede cambiar de Objeto seleccionado a Todas … del esquema, con Otorgar o
Revocar: OmniDB ejecuta entonces GRANT/REVOKE
… ON ALL … IN SCHEMA, lo que afecta a los objetos que existen ahora, no a los que se creen después.
Si selecciona PUBLIC en la primera columna, puede editar lo que se concede al propio
PUBLIC (GRANT … TO PUBLIC / REVOKE … FROM PUBLIC).
Privilegios por defecto
La carpeta Privilegios por defecto de una base de datos enumera las entradas de ALTER DEFAULT PRIVILEGES
que afectan al rol activo, ya sea como beneficiario o como rol creador. Son la forma de cubrir los objetos que se
creen en el futuro. Haga clic derecho en la carpeta para elegir Añadir privilegios por defecto: elija el rol creador
(Para objetos creados por), el esquema (o todos los esquemas), el tipo de objeto (tablas, secuencias, funciones,
tipos, esquemas) y los privilegios. Haga clic derecho en una entrada existente para elegir Editar privilegios
(solo se conceden o revocan las casillas que cambie) o Quitar privilegios por defecto.
Propiedad y quién tiene acceso
- Cambiar propietario (menú contextual de cualquier objeto de la columna Objetos) ejecuta
ALTER … OWNER TOpara el objeto. - Quién tiene acceso es la vista inversa: enumera todos los roles que pueden hacer algo
con el objeto y por qué (propietario, concesión directa, herencia a través de una pertenencia o superusuario),
además de
PUBLIC, con marcas de opción de concesión. Las respuestas proceden de las propias funcioneshas_*_privilegede PostgreSQL, por lo que coinciden con lo que el servidor permite realmente. Se omiten los roles que solo tienen lo quePUBLICda a todos, y los superusuarios se agrupan en un grupo contraído; al hacer clic en un rol, este pasa a ser el rol activo.

Vista previa del SQL
Los diálogos para crear, modificar, renombrar y clonar roles, añadir pertenencias, conceder o editar privilegios, privilegios por defecto y cambiar propietarios tienen un cuadro plegable Mostrar SQL. Muestra las sentencias exactas que ejecutarían los valores actuales del formulario (generadas por el mismo código del servidor que la llamada real; no se ejecuta nada y las contraseñas se enmascaran) y las mantiene actualizadas a medida que cambia el formulario. Copiar SQL las copia.
Importante: confirmar un diálogo ejecuta las sentencias en el servidor de inmediato: no hay forma de deshacerlo. Revíselas antes con Mostrar SQL. Eliminar rol, Quitar pertenencia y Quitar privilegios por defecto también piden confirmación. Si el servidor rechaza una sentencia, se muestra su mensaje de error.