Frage Warum kann ich in der AWS PostgreSQL-Instanz keinen Superuser erstellen?


Ich habe eine AWS EC2-Instanz, die eine Verbindung zu einer RDS-Instanz (Postgresql) herstellt. Als ich die RDS-Instanz erstellte, teilte ich ihr mit, dass der Benutzername der DB-Root wie folgt lautet: my_user1 und das Passwort war password1. Jetzt versuche ich eine Rolle und einen Super-User zu erstellen. Aber es scheitert:

$ 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
$

Wenn ich den Befehl ohne den Befehl wiederhole -s Flagge, es funktioniert:

$ 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;
$

So klar, my_user1 hat keine Berechtigungen zum Erstellen eines Superusers. Aber das ist der Benutzer, dem ich gesagt habe, dass RDS mein Administrator war! Ob my_user1 hat keine Berechtigungen, einen Super-Benutzer zu erstellen, wer tut das? Und wie bekomme ich ihren Benutzernamen / Passwort von AWS?


8
2018-01-22 19:52


Ursprung


sagt die pg_hba.conf, dass das Authentifizierungsschema Peer für lokale Benutzer ist? - drookie
Drookie, ist diese Datei auf der RDS-Instanz selbst? Ich habe noch nicht einmal auf diese Maschine zugegriffen. - Saqib Ali
@SaqibAli Sie können keine SSH-Verbindung zu einer RDS-Instanz herstellen. - ceejayoz


Antworten:


RDS-Instanzen werden von Amazon verwaltet. Daher können Ihre Benutzer - selbst der Root-Benutzer, den Sie beim Erstellen der Instanz eingerichtet haben - keine vollständigen Superuser-Berechtigungen haben, um zu verhindern, dass Sie Dinge wie die Replikation unterbrechen.

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

Wenn Sie eine DB-Instanz erstellen, wird das von Ihnen erstellte Master-Benutzer-Systemkonto der Rolle rds_superuser zugewiesen. Die Rolle rds_superuser ist eine vordefinierte Amazon RDS-Rolle, die der PostgreSQL-Superuser-Rolle ähnelt (in lokalen Instanzen üblicherweise postgres genannt), jedoch mit einigen Einschränkungen. Wie bei der PostgreSQL-Superuser-Rolle hat die Rolle rds_superuser die meisten Berechtigungen für Ihre DB-Instanz, und Sie sollten diese Rolle Benutzern nur dann zuweisen, wenn sie den meisten Zugriff auf die DB-Instanz benötigen.


14
2018-01-22 21:38





Wenn Sie Ihre aktuellen Berechtigungen mit angeben

\dg+

Sie werden bemerken, dass Sie kein Superuser sind, sondern nur erlaubte Berechtigungen Rolle erstellen, DB anlegen. Daher dürfen Sie keine höheren Berechtigungen als die, denen Sie derzeit zugewiesen sind, zuweisen.

Normalerweise erhalten Sie in keiner gehosteten Umgebung Root- oder Superuser-Berechtigungen. Ich schlage vor, dass Sie eine benutzerdefinierte EC2-Instanz hochfahren und PostgreSQL lokal für die vollständige Kontrolle installieren.


2
2018-01-18 13:49