






Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Un taller sobre la gestión de usuarios y roles en PostgreSQL, un sistema de bases de datos relacionales de código abierto. Los autores explican los conceptos básicos de administración de usuarios y roles, creación de roles y concesión de permisos, y cómo revocar o cambiar los permisos de usuario. Además, se proporciona información sobre la creación de usuarios de base de datos, administración de contraseñas y autenticación de base de datos con IAM.
Tipo: Apuntes
1 / 11
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
Taller Gestión de usuarios en PostgreSQL Presentado por: Jorge Andres Daza Gualguan Daniel Alexander Reina Ramirez Daniel Esteban Montenegro Rubio Juan David Velasco Universidad de nariño Ipiales 23 /02/
Administración de usuarios y roles de PostgreSQL PostgreSQL es un sistema de bases de datos relacionales de código abierto más popular que ha demostrado ser una base de datos altamente fiable y robusta para el manejo de un gran número de cargas de trabajo de datos complejas y también es vista como la principal opción de base de datos de código abierto al migrar desde bases de datos comerciales como Oracle. Con PostgreSQL, puede crear usuarios y roles con permisos de acceso granulares. Al nuevo usuario o rol se les debe conceder selectivamente los permisos necesarios para cada objeto de base de datos. Los permisos de acceso en PostgreSQL se administran definiendo roles. Dentro de este concepto se incluyen tanto los usuarios como los grupos. La diferencia principal entre ambos es que, mientras el rol de tipo usuario se usa para acceder y trabajar con la base de datos, los grupos agregan a usuarios y definen permisos sobre esquemas y objetos de la estructura. Usuarios, grupos y roles Los usuarios, grupos y roles son lo mismo en PostgreSQL, y la única diferencia es que los usuarios tienen permiso para iniciar sesión de forma predeterminada. Las instrucciones CREATE USER y CREATE GROUP son en realidad alias de la instrucción CREATE ROLE. Para crear un usuario de PostgreSQL, utilizaremos la siguiente instrucción SQL: CREATE USER myuser WITH PASSWORD 'passwd'; También se podría crear un usuario con la siguiente instrucción SQL: CREATE ROLE myuser WITH LOGIN PASSWORD 'passwd'; Ambas sentencias crean exactamente el mismo usuario. Este nuevo usuario no tiene ningún permiso, a excepción de los permisos predeterminados disponibles para el rol public. Todos los nuevos usuarios y roles heredan los permisos del rol public. Crear roles de base de datos : A continuación, se detalla el proceso de creación de nuevos roles y concesión de permisos para acceder a varios objetos de base de datos. Los permisos debemos concederlos a nivel de base de datos, esquema y objeto de esquema. Por ejemplo, si necesitamos conceder acceso a una tabla, también debemos asegurarnos de que el rol tenga acceso a la base de datos y al esquema en que existe la tabla. Si falta alguno de los permisos, el usuario/rol no podrá acceder a la tabla.
Cuando se crea una nueva base de datos, PostgreSQL crea de forma predeterminada un esquema denominado public y concede acceso en este esquema a un rol de backend denominado public. A todos los usuarios y roles nuevos se les concede de forma predeterminada el rol public y, por lo tanto, pueden crear objetos en el esquema public. PostgreSQL utiliza un concepto de ruta de búsqueda. La ruta de búsqueda es una lista de nombres de esquema que PostgreSQL comprueba cuando no se utiliza un nombre calificado del objeto de base de datos. Por ejemplo, cuando selecciona de una tabla denominada “mytable”, PostgreSQL busca esta tabla en los esquemas enumerados en la ruta de búsqueda. El esquema public se convierte en el esquema predeterminado siempre que se utiliza un nombre de objeto no calificado. Por este motivo, cuando un usuario intenta crear una nueva tabla sin especificar el nombre del esquema, la tabla se crea en el esquema public. Por consecuencia, de forma predeterminada, todos los usuarios tienen acceso para crear objetos en el esquema public y, por lo tanto, la tabla se ha creado correctamente. Esto se convierte en un problema si intenta crear un usuario de solo lectura. Incluso si restringe todos los privilegios, los permisos heredados a través del rol public permiten al usuario crear objetos en el esquema public. Para solucionarlo, debemos revocar el permiso de creación predeterminado en el esquema public desde el rol public mediante la siguiente instrucción SQL: REMOVE CREATE ON SCHEMA Public FROM PUBLIC; Hay que asegurarse de ser el propietario del esquema public o de formar parte de un rol que le permita ejecutar esta instrucción SQL. La siguiente declaración revoca la capacidad del rol público de conectarse a la base de datos: REVOKE ALL ON DATABASE mydatabase FROM PUBLIC; Esto garantiza que los usuarios no puedan conectarse a la base de datos de forma predeterminada a menos que se conceda explícitamente este permiso. La revocación de los permisos del rol public afecta a todos los usuarios y roles existentes. Los usuarios y roles que deberían de poder conectarse a la base de datos o crear objetos en el esquema público deben recibir los permisos explícitamente antes de revocar los permisos del rol public en el entorno de producción.
En las siguientes secciones se documenta el proceso de creación de nuevos roles y el proceso de concesión de permisos para acceder a varios objetos de base de datos. Los permisos deben concederse a nivel de base de datos, esquema y objeto de esquema. Por ejemplo, si necesita conceder acceso a una tabla, también debe asegurarse de que el rol tenga acceso a la base de datos y al esquema en que existe la tabla. Si falta alguno de los permisos, el rol no puede acceder a la tabla. ROL DE SOLO LECTURA: Para crear el Rol de solo lectura encontramos diferentes pasos, teniendo en cuenta lo anterior que debe asegurarse de que el rol tenga acceso a la base de datos en donde se encuentra la tabla también, si falta alguno de los permisos, el rol no puede acceder a la tabla. Con esa pequeña descripción de lo anterior se puede proseguir con los pasos, en donde se va a crear el rol: Como primer paso debemos crear un nuevo rol que se denomina READONLY; Readonly indica que la tabla es de solo lectura que no se puede hacer referencia al cursor en las sentencias UPDATE Y DELETE que se utilizan para modificar y/o borrar valores en una tabla, para crear este rol es mediante la instrucción CREATE ROLE readonly; No se puede utilizar para iniciar sesión y hace falta conceder permiso para que este rol se conecte a la base de datos (database) para eso ejecutamos GRANT CONNECT ON DATABASE database TO readonly; En el siguiente paso a seguir es conceder que este rol tenga acceso al uso del esquema (esquema) entonces ejecutamos: GRANT USAGE ON SCHEMA esquema TO readonly; Se podría decir que este paso es muy importante porque si no se hiciera no podría realizar ninguna acción en los objetos del esquema, incluso si se concedió permiso (en el primer paso) Ya concedido el permiso se debe otorgar el acceso al rol para poder ejecutar las consultas en las tablas requeridas con la instrucción: GRANT SELECT ON TABLE tabla1, tabla2 TO readonly; Teniendo en cuenta que si se va a conceder acceso a todas las tablas y vistas del esquema se puede utilizar la siguiente instrucción: GRANT SELECT ON ALL TABLES IN SCHEMA esquema TO readonly; Esta instrucción otorga el acceso SELECT al rol de solo lectura en todas las tablas y vistas que existen en el momento en el esquema, un punto negativo de esto es que el usuario readonly no podrá tener acceso a las nuevas tablas creadas o que se añaden después de esto, pero para eso se puede ejecutar la siguiente instrucción, para que le conceda permiso automáticamente:
Creación de usuarios de base de datos: La herramienta Crear usuario de base de datos crea un usuario de base de datos con privilegios suficientes para crear datos en la base de datos. Los usuarios creados tienen los siguientes privilegios: USAGE en el esquema sde si el usuario se crea en una geodatabase o una base de datos que tiene instalado el tipo ST_Geometry SELECT, INSERT, UPDATE y DELETE en la tabla public.geometry_columns y SELECT en la tabla public.spatial_ref_sys si tiene instalado el tipo de geometría de PostGIS. Del mismo modo, puede conceder acceso de lectura y escritura a un usuario otorgando el rol readwrite La documentación CREATE USER de PostgreSQL contiene más detalles sobre los parámetros que puede establecer al crear un usuario. Por ejemplo, puede especificar un plazo de caducidad para el usuario o permitir que el usuario cree bases de datos Administración de contraseñas de usuario: Después de crear un usuario, debe proporcionar estas credenciales a la aplicación para que pueda acceder a la base de datos. Es esencial asegurarse de que estas credenciales no estén codificadas (hard-coded) en el código fuente ni se coloquen en archivos de configuración compartidos como texto plano sin encriptar. AWS proporciona una solución para ello con AWS Secrets Manager. Con Secrets Manager, puede almacenar las credenciales y, a continuación, utilizar AWS Identity and Access Management (IAM) para permitir que solo ciertos usuarios y roles de IAM lean las credenciales. Además de almacenar las credenciales, una característica muy útil que proporciona Secrets Manager es la rotación de contraseñas de usuario de base de datos. Puede utilizar esta función para configurar una política que cambie automáticamente la contraseña a una frecuencia determinada. También se puede implementar una nueva función de administración de contraseñas restringidas compatible con PostgreSQL 10.6 y versiones posteriores. Con un nuevo parámetro y un rol especial, puede limitar los cambios de contraseña de usuario de la base de datos a los miembros de este rol especial. De este modo, se habilita un mayor control sobre la administración de contraseñas en el lado del cliente (por ejemplo, requisitos de caducidad y complejidad).
Autenticación de base de datos con IAM: Puede autenticar en su instancia de base de datos mediante la autenticación de base de datos de AWS Identity and Access Management (IAM). La autenticación de base de datos de IAM funciona con PostgreSQL. Con este método de autenticación, no es necesario usar una contraseña al conectarse a una instancia de base de datos. En su lugar, puede usar un token de autenticación. La autenticación de bases de datos de IAM proporciona los siguientes beneficios: El tráfico de red hacia y desde la base de datos se cifra mediante Secure Socket Layer (SSL) o Transport Layer Security (TLS). Para obtener más información sobre el uso de SSL/TLS con Amazon RDS. Puede usar IAM para administrar de forma centralizada el acceso a sus recursos de base de datos, en lugar de administrar el acceso individualmente en cada instancia de base de datos. Para las aplicaciones que se ejecutan en Amazon EC2, puede usar las credenciales del perfil específicas de la instancia EC2 para obtener acceso a su base de datos en lugar de una contraseña, para mayor seguridad. La ventaja clave de esta función es que puede utilizar IAM para administrar de forma centralizada el acceso a los recursos de la base de datos en lugar de administrar el acceso individualmente en cada instancia de base de datos. Con este método, el administrador puede conceder o revocar fácilmente el acceso a la base de datos mediante una política de IAM. Una vez agregados los permisos en IAM, el usuario puede solicitar una contraseña temporal mediante la CLI de AWS y, a continuación, conectarse a la base de datos mediante esta contraseña temporal. En el siguiente diagrama se describe el flujo del proceso. Este método solo se ocupa de la parte de autenticación. La concesión de permisos a varios objetos de base de datos se realiza dentro de la base de datos, tal como se explica en esta publicación. Por ejemplo, para conceder acceso de lectura y escritura (readwrite) a este usuario, ejecute la siguiente instrucción SQL: GRANT readwrite TO db_user;
A continuación, se muestra un ejemplo de salida de una instancia de RDS de prueba: En este caso, el usuario obtiene una suma de todos los permisos. También puede utilizar la tabla de catálogo pg roles para comprobar atributos como la fecha de caducidad de la contraseña o el número de conexiones paralelas permitida
https://www.ibm.com/docs/es/cloud-paks/cp-data/2.5.0?topic=client-managing-users https://aws.amazon.com/es/blogs/aws-spanish/managing-postgresql-users-and-roles/ https://www.todopostgresql.com/crear-usuarios-en-postgresql/