Control del acceso de los usuarios a la base de datos de PostgreSQL - Amazon Relational Database Service

Control del acceso de los usuarios a la base de datos de PostgreSQL

Las nuevas bases de datos de PostgreSQL siempre se crean con un conjunto predeterminado de privilegios en el esquema public de la base de datos que permite a todos los usuarios y roles de la base de datos crear objetos. Estos privilegios permiten a los usuarios de la base de datos conectarse a la base de datos, or ejemplo, y crear tablas temporales mientras están conectados.

Para controlar mejor el acceso de los usuarios a las instancias de bases de datos que cree en su instancia de base de datos de RDS for PostgreSQL, le recomendamos que revoque estos privilegios de public predeterminados. Después de ello, conceda a continuación los privilegios específicos a los usuarios de base de datos de forma más detallada, como se muestra en el siguiente procedimiento.

Para configurar roles y privilegios para una nueva instancia de base de datos

Supongamos que está configurando una base de datos en Instancia de base de datos de RDS for PostgreSQL de reciente creación para que lo utilicen varios investigadores, todos los cuales necesitan acceso de lectura y escritura a la base de datos.

  1. Use psql (o pgAdmin) para conectarse a su instancia de base de datos de RDS for PostgreSQL:

    psql --host=your-db-instance.666666666666.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password

    Escriba la contraseña cuando se le solicite. El cliente psql se conecta y muestra la base de datos de conexión administrativa predeterminada, postgres=>, como el símbolo del sistema.

  2. Para evitar que los usuarios de la base de datos creen objetos en el esquema public, realice una de las siguientes opciones:

    postgres=> REVOKE CREATE ON SCHEMA public FROM PUBLIC; REVOKE
  3. A continuación, cree una nueva instancia de base de datos:

    postgres=> CREATE DATABASE lab_db; CREATE DATABASE
  4. Revoque todos los privilegios del esquema PUBLIC de esta nueva base de datos.

    postgres=> REVOKE ALL ON DATABASE lab_db FROM public; REVOKE
  5. Cree un rol para los usuarios de bases de datos.

    postgres=> CREATE ROLE lab_tech; CREATE ROLE
  6. Otorgue a los usuarios de bases de datos que tengan este rol la posibilidad de conectarse a la base de datos.

    postgres=> GRANT CONNECT ON DATABASE lab_db TO lab_tech; GRANT
  7. Conceda a todos los usuarios que tengan el rol lab_tech todos los privilegios de esta base de datos.

    postgres=> GRANT ALL PRIVILEGES ON DATABASE lab_db TO lab_tech; GRANT
  8. Cree usuarios de bases de datos de la siguiente manera:

    postgres=> CREATE ROLE lab_user1 LOGIN PASSWORD 'change_me'; CREATE ROLE postgres=> CREATE ROLE lab_user2 LOGIN PASSWORD 'change_me'; CREATE ROLE
  9. Conceda a estos dos usuarios los privilegios asociados al rol lab_tech:

    postgres=> GRANT lab_tech TO lab_user1; GRANT ROLE postgres=> GRANT lab_tech TO lab_user2; GRANT ROLE

En este punto,lab_user1 y lab_user2 se pueden conectar a la base de datos de lab_db. En este ejemplo no se siguen las prácticas recomendadas para el uso empresarial, que pueden incluir la creación de varias instancias de base de datos, distintos esquemas y la concesión de permisos limitados. Para obtener más información y escenarios adicionales, consulte Administración de usuarios y roles de PostgreSQL.

Para obtener más información sobre los privilegios en las bases de datos de PostgreSQL, consulte el comando GRANT en la documentación de PostgreSQL.