Salta al contenuto

Come posso gestire i privilegi degli oggetti nel mio cluster di database Aurora compatibile con PostgreSQL?

5 minuti di lettura
0

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:

  1. Connettiti al cluster Aurora compatibile con PostgreSQL con un client PostgreSQL, come psql.
  2. Per creare un utente, esegui questo comando:
    CREATE USER username WITH PASSWORD 'password';
    Nota: sostituisci username e password con il tuo nome utente e la tua password.
  3. Per concedere l'autorizzazione a un utente o a un ruolo in modo che possa eseguire un'azione su un oggetto, esegui questo comando:
    GRANT privilege_type ON object_name TO user_or_role;
    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.

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';
AWS UFFICIALEAggiornata 6 mesi fa