Pregunta ¿Por qué no puedo crear un superusuario en la instancia de AWS Postgresql?


Tengo una instancia de AWS EC2 que se conecta a una instancia de RDS (Postgresql). Cuando creé la instancia RDS, le dije que el nombre de usuario de la raíz DB era: my_user1 y la contraseña era password1. Ahora estoy intentando crear un rol y un superusuario. Pero falla:

$ createuser -P -d -s -e my_user2 --host myhost.com -U my_user1
Enter password for new role: XXXYYYZZZ
Enter it again: XXXYYYZZZ
Password: password1
CREATE ROLE my_user2 PASSWORD 'md5999999c0101a1d64afd57575e06f999c' SUPERUSER CREATEDB  CREATEROLE INHERIT LOGIN;
createuser: creation of new role failed: ERROR:  must be superuser to create superusers
$

Cuando repito el comando sin el -s bandera, funciona:

$ createuser -P -d -e my_user2 --host myhost.com  -U my_user1
Enter password for new role:
Enter it again:
Password:
CREATE ROLE my_user2 PASSWORD 'md5999999c0101a1d64afd57575e06f888c' NOSUPERUSER CREATEDB NOCREATEROLE INHERIT LOGIN;
$

Tan claramente, my_user1 No tiene permisos para crear un superusuario. ¡Pero este es el usuario que le dije a RDS que era mi usuario administrador! Si my_user1 no tiene permisos para crear un superusuario, ¿quién tiene? ¿Y cómo obtengo su nombre de usuario / contraseña de AWS?


8
2018-01-22 19:52


origen


¿el pg_hba.conf dice que el esquema de autenticación es igual para los usuarios locales? - drookie
Drookie, ¿este archivo está en la propia instancia de RDS? Ni siquiera he SSHed en esa máquina todavía. - Saqib Ali
@SaqibAli No puede SSH en una instancia de RDS. - ceejayoz


Respuestas:


Las instancias RDS son administradas por Amazon. Como tal, para evitar que rompa elementos como la replicación, sus usuarios, incluso el usuario root que configuró al crear la instancia, no tendrán privilegios completos de superusuario.

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html

Cuando crea una instancia de base de datos, la cuenta del sistema de usuario maestro que crea se asigna al rol rds_superuser. La función rds_superuser es una función predefinida de Amazon RDS similar a la función de superusuario de PostgreSQL (habitualmente denominada postgres en instancias locales), pero con algunas restricciones. Al igual que con la función de superusuario de PostgreSQL, la función rds_superuser tiene la mayoría de los privilegios en su instancia de base de datos y no debe asignar esta función a los usuarios a menos que necesiten el mayor acceso a la instancia de base de datos.


14
2018-01-22 21:38





Si enumera sus permisos actuales con

\dg+

te darás cuenta de que no eres un superusuario, solo permisos permitidos Crear rol, Crear DB. Como tal, no está autorizado a asignarse permisos superiores a los asignados actualmente.

Normalmente, no se le otorgan permisos de root o superusuario en ningún entorno alojado. Le sugiero que gire una instancia EC2 personalizada e instale PostgreSQL localmente para un control completo.


2
2018-01-18 13:49