Come posso gestire i privilegi degli oggetti nel mio cluster di database Aurora compatibile con PostgreSQL?
Desidero sapere come gestire i privilegi degli oggetti nei cluster di database Amazon Aurora compatibile con PostgreSQL.
Risoluzione
Per gestire i privilegi degli oggetti nei cluster di database Aurora compatibile con PostgreSQL, concedi agli utenti o ai ruoli autorizzazioni specifiche per eseguire varie azioni sugli oggetti del database.
Per ulteriori informazioni sui tipi di autorizzazioni del database, consulta Privileges (Privilegi) sul sito web PostgreSQL.
Nota: AWS utilizza il termine "autorizzazione" per "privilegio".
Crea un utente e concedigli l'autorizzazione per l'oggetto
Completa i seguenti passaggi:
- Connettiti al cluster Aurora compatibile con PostgreSQL con un client PostgreSQL, come psql.
- Per creare un utente, esegui questo comando:
Nota: sostituisci username e password con il tuo nome utente e la tua password.CREATE USER username WITH PASSWORD 'password'; - Per concedere l'autorizzazione a un utente o a un ruolo in modo che possa eseguire un'azione su un oggetto, esegui questo comando:
Nota: sostituisci privilege_type con l'azione del database che desideri che l'utente esegua. Sostituisci object_name con l'oggetto del database su cui desideri che l'utente agisca. Sostituisci user_or_role con l'utente o il ruolo a cui vuoi assegnare l'autorizzazione per l'oggetto.GRANT privilege_type ON object_name TO user_or_role;
Ad esempio, puoi eseguire questo comando per concedere più autorizzazioni per l'oggetto a user_or_role:
GRANT SELECT, INSERT, UPDATE ON object_name TO user_or_role;
Per ulteriori informazioni, consulta VACUUM sul sito web PostgreSQL.
Revoca le autorizzazioni da utenti e ruoli
Per revocare le autorizzazioni da un utente o da un ruolo, esegui questo comando:
REVOKE privilege_type ON object_name FROM user_or_role;
Nota: sostituisci privilege_type con l'azione del database che desideri revocare. Sostituisci object_name con l'oggetto del database. Sostituisci user_or_role con l'utente o il ruolo per il quale desideri revocare le autorizzazioni.
Per ulteriori informazioni, consulta REVOKE sul sito web PostgreSQL.
Concedi le autorizzazioni minime richieste agli utenti
È consigliabile concedere all'utente o al ruolo solo le autorizzazioni necessarie.
Per esaminare le autorizzazioni presenti per una tabella, esegui questo comando:
\z table_name
Nota: sostituisci table_name con il nome della tabella che desideri esaminare.
In alternativa, puoi eseguire questo comando:
SELECT * FROM information_schema.table_privileges WHERE table_name = 'your_table';
Crea e assegna ruoli per gruppi di utenti
È consigliabile creare ruoli per gruppi di utenti e assegnare autorizzazioni ai ruoli anziché ai singoli utenti. Per ulteriori informazioni, consulta Database roles for server administration (Ruoli del database per l'amministrazione del server) and Database roles (Ruoli del database) sul sito web PostgreSQL.
Per creare un ruolo e concedere l'autorizzazione al ruolo per tutte le tabelle del database, esegui questo comando:
CREATE ROLE analyst_role; GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO analyst_role;
Nota: sostituisci schema_name con il nome del tuo schema e analyst_role con il nome del tuo ruolo.
Concedi l'autorizzazione a livello di schema a utenti e ruoli
Per concedere a un utente o a un ruolo l'autorizzazione a livello di schema, esegui questo comando:
GRANT USAGE ON SCHEMA schema_name TO user_or_role;
Nota: sostituisci schema_name con il nome del tuo schema e user_or_role con il nome del tuo utente o del tuo ruolo.
Imposta un'autorizzazione predefinita per gli oggetti futuri
Per impostare un'autorizzazione predefinita per le nuove tabelle su readonly_role, esegui questo comando:
ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT SELECT ON TABLES TO readonly_role;
Nota: sostituisci schema_name con il nome del tuo schema.
Trasferisci la proprietà dell'oggetto tra utenti
Per evitare problemi di sicurezza, assicurati di gestire la proprietà dell'oggetto.
Per trasferire la proprietà a un nuovo proprietario, esegui questo comando:
ALTER TABLE table_name OWNER TO new_owner;
Nota: sostituisci table_name con il nome della tabella e new_owner con il nome del nuovo proprietario.
Monitora le modifiche alle autorizzazioni con flussi di attività
Per monitorare l'attività del database, avvia un flusso di attività per il cluster di database e utilizza un array JSON databaseActivityEventList. Per ulteriori informazioni, consulta Oggetto JSON databaseActivityEvents.
Pianifica revisioni periodiche delle autorizzazioni
Pianifica revisioni periodiche delle autorizzazioni e aggiorna le autorizzazioni in base alle necessità del momento.
Ad esempio, puoi eseguire questa query per visualizzare tutte le autorizzazioni concesse per tabelle e viste:
-- To view table and view privileges SELECT grantee, table_schema, table_name, privilege_type FROM information_schema.role_table_grants ORDER BY grantee, table_schema, table_name, privilege_type; -- List schema privileges SELECT nspname, rolname, nspacl FROM pg_namespace n JOIN pg_roles r ON r.oid = n.nspowner; -- Show all privileges for a specific role SELECT table_catalog, table_schema, table_name, privilege_typeFROM information_schema.table_privilegesWHERE grantee = 'role_name'; -- Show role-specific schema privileges SELECT n.nspname as schema_name, r.rolname as role_name, has_schema_privilege(r.oid, n.oid, 'CREATE') as has_create, has_schema_privilege(r.oid, n.oid, 'USAGE') as has_usageFROM pg_namespace nCROSS JOIN pg_roles rWHERE n.nspname NOT LIKE 'pg_%' AND n.nspname != 'information_schema';
- Argomenti
- Database
- Lingua
- Italiano
