.NET

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.

The Permissions section with three columns

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:

The Create Role dialog with the SQL preview

Al hacer clic derecho en un rol (que no sea PUBLIC) se ofrece:

The context menu of a role

Columna 2: pertenencias

La segunda columna está dividida en dos mitades:

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.

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.

The Objects column expanded down to the tables

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:

Las casillas muestran lo que el rol tiene directamente:

The Edit Privileges dialog with the SQL preview

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

The Who Has Access dialog

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.