Zum Inhalt springen

Amazon RDS mit IAM-Authentifizierung

Verwaltete PostgreSQL-Datenbanken auf Amazon RDS und Aurora können sich mit kurzlebigen IAM-Tokens statt mit einem statischen Passwort authentifizieren. DuckDB unterstützt das über die Erweiterungen postgres und aws: Die Erweiterung aws erzeugt das Token aus einer AWS-Credential-Chain, und die Erweiterung postgres verwendet es als Verbindungspasswort und aktualisiert es automatisch.

Installation und Laden

INSTALL postgres;
INSTALL aws;
LOAD postgres;
LOAD aws;

Secrets erstellen

Legen Sie zuerst ein Secret vom Typ rds an. Es verwendet die AWS-Credential-Chain, um das IAM-Token zu erzeugen:

CREATE SECRET aws_rds_secret (
TYPE rds,
PROVIDER credential_chain,
CHAIN 'env;sso',
REGION '⟨eu-west-1⟩',
RDS_USER '⟨postgres⟩',
RDS_HOST '⟨instance⟩.⟨identifier⟩.⟨region⟩.rds.amazonaws.com',
RDS_PORT '5432'
);

Legen Sie dann ein Secret vom Typ postgres an, das über AWS_RDS_SECRET darauf verweist. Weil kein Passwort gesetzt ist, wird das vom rds-Secret erzeugte Token automatisch verwendet (und aktualisiert):

CREATE SECRET pg_rds_secret (
TYPE postgres,
HOST '⟨instance⟩.⟨identifier⟩.⟨region⟩.rds.amazonaws.com',
PORT '5432',
USER '⟨postgres⟩',
DATABASE '⟨postgres⟩',
SSLMODE require,
AWS_RDS_SECRET aws_rds_secret
);

Verbinden und Abfragen

Hängen Sie die Datenbank mit dem postgres-Secret an und fragen Sie sie dann wie eine reguläre Datenbank ab:

ATTACH '' AS rds_db (TYPE postgres, SECRET pg_rds_secret);
SELECT * FROM rds_db.public.⟨tbl_name⟩;

Siehe auch