Comprendere il ruolo rds_superuser
In PostgreSQL, un ruolo può definire un utente, un gruppo o un insieme di autorizzazioni specifiche concesse a un gruppo o a un utente per vari oggetti nel database. I comandi PostgreSQL CREATE USER e CREATE GROUP sono stati sostituiti dal comando CREATE ROLE più generico, ma con proprietà specifiche per distinguere gli utenti del database. Un utente del database può essere paragonato a un ruolo con il privilegio LOGIN.
Nota
È comunque possibile continuare a utilizzare i comandi CREATE USER e CREATE GROUP. Per ulteriori informazioni, consulta la sezione relativa ai ruoli di database
L'utente postgres è l'utente di database più privilegiato nel cluster di database Aurora PostgreSQL. Ha le caratteristiche definite dalla seguente istruzione CREATE ROLE.
CREATE ROLE postgres WITH LOGIN NOSUPERUSER INHERIT CREATEDB CREATEROLE NOREPLICATION VALID UNTIL 'infinity'Le proprietà NOSUPERUSER, NOREPLICATION, INHERIT e VALID UNTIL 'infinity' sono le opzioni predefinite per CREATE ROLE, se non diversamente specificato.
Per impostazione predefinita, postgres dispone dei privilegi concessi al rds_superuser ruolo e delle autorizzazioni per creare ruoli e database. Il ruolo rds_superuser consente all'utente postgres di eseguire le seguenti operazioni:
-
Aggiungere le estensioni che sono disponibili per l'uso con Aurora PostgreSQL. Per ulteriori informazioni, consulta Utilizzo di estensioni e wrapper di dati esterni.
-
Creare ruoli per gli utenti e concedere i relativi privilegi. Per ulteriori informazioni, consulta CREATE ROLE
e GRANT nella documentazione di PostgreSQL. -
Creare database. Per ulteriori informazioni, consulta CREATE DATABASE
nella documentazione di PostgreSQL. -
Concedere privilegi
rds_superusera ruoli utente che non dispongono di questi privilegi e revocare i privilegi, se necessario. Si consiglia di concedere questo ruolo solo agli utenti che eseguono attività superuser. In altre parole, è possibile concedere questo ruolo agli amministratori di database (DBA) o agli amministratori di sistema. -
Concedere (e revocare) il ruolo
rds_replicationper gli utenti del database che non hanno il ruolords_superuser. -
Concedere (e revocare) il ruolo
rds_passwordper gli utenti del database che non hanno il ruolords_superuser. -
Ottenere informazioni sullo stato di tutte le connessioni al database utilizzando la vista
pg_stat_activity. Quando necessario, il ruolords_superuserpuò arrestare qualsiasi connessione utilizzando il comandopg_terminate_backendopg_cancel_backend.
Nell'istruzione CREATE ROLE postgres..., si può vedere che il ruolo utente postgres non concede specificamente autorizzazioni PostgreSQL superuser. Aurora PostgreSQL è un servizio gestito e pertanto non è possibile accedere al sistema operativo host, né connettersi utilizzando l'account PostgreSQLsuperuser. Molte delle attività che richiedono l'accesso di tipo superuser su un PostgreSQL autonomo viene gestito automaticamente da Aurora.
Per ulteriori informazioni sulla concessione dei privilegi, consulta la sezione relativa al comando GRANT
Il ruolo rds_superuser è uno dei diversi ruoli predefinito in uncluster di database Aurora PostgreSQL.
Nota
In PostgreSQL 13 e versioni precedenti, i ruoli di default sono conosciuti come ruoli predefiniti.
L'elenco seguente fornisce alcuni degli altri ruoli predefiniti creati automaticamente per un nuovo cluster di database Aurora PostgreSQL. I ruoli predefiniti e i relativi privilegi non possono essere modificati. Non è possibile eliminare, rinominare o modificare i privilegi per questi ruoli predefiniti. Qualsiasi tentativo comporta la generazione di un errore.
-
rds_password - Un ruolo in grado di modificare le password e configurare vincoli di password per gli utenti del database. Questo ruolo
rds_superuserviene assegnato al ruolo per impostazione predefinita e può concedere il ruolo agli utenti del database. Per ulteriori informazioni, consulta Controllo dell'accesso utente al database PostgreSQL.-
Per le versioni di RDS per PostgreSQL precedenti alla 14, il ruolo
rds_passwordpuò modificare le password e configurare vincoli di password per gli utenti del database e gli utenti con ruolords_superuser. A partire dalla versione 14 di RDS per PostgreSQL, il ruolords_passwordpuò modificare le password e configurare vincoli di password solo per gli utenti del database. Solo gli utenti con ruolords_superuserpossono eseguire queste azioni su altri utenti con ruolords_superuser.
-
-
rdsadmin – Un ruolo creato per gestire molte delle attività di gestione che l'amministratore con privilegi
superuseresegue su un database PostgreSQL autonomo. Questo ruolo viene utilizzato internamente da Aurora PostgreSQL per molte attività di gestione.
Nota
Aurora PostgreSQL versioni 15.2 e 14.7 hanno introdotto un funzionamento restrittivo del ruolo rds_superuser. A un utente Aurora PostgreSQL deve essere concesso il privilegio CONNECT per consentire la connessione al database corrispondente anche se tale utente è associato al ruolo rds_superuser. Prima delle versioni 14.7 e 15.2 di Aurora PostgreSQL, un utente era in grado di connettersi a qualsiasi database e tabella di sistema se disponeva del ruolo rds_superuser. Questo comportamento restrittivo è in linea con l'impegno di AWS e Amazon Aurora per il miglioramento continuo della sicurezza.
Aggiorna la rispettiva logica nelle tue applicazioni se sono state interessate dal miglioramento precedentemente descritto.