Questa pagina spiega come funziona il controllo dell'accesso granulare con le modifiche in tempo reale di Spanner per i database di dialetti GoogleSQL e PostgreSQL.
Per gli utenti con controllo dell'accesso granulare, puoi consentire l'accesso in lettura ai dati delle modifiche in tempo reale utilizzando le seguenti concessioni. Sono necessarie entrambe le concessioni.
Concedi
SELECTsul change stream.GoogleSQL
GRANT SELECT ON CHANGE STREAM CHANGE_STREAM_NAME TO ROLE ROLE_NAME;
PostgreSQL
GRANT SELECT ON CHANGE STREAM CHANGE_STREAM_NAME TO ROLE_NAME;
Concedi
EXECUTEsulla funzione di lettura creata automaticamente per la modifica in tempo reale. Utilizza la funzione di lettura per leggere i record delle modifiche in tempo reale.GoogleSQL
GRANT EXECUTE ON TABLE FUNCTION READ_FUNCTION_NAME TO ROLE ROLE_NAME;
PostgreSQL
GRANT EXECUTE ON FUNCTION READ_FUNCTION_NAME TO ROLE_NAME;
Per informazioni sulle convenzioni di denominazione per le funzioni di lettura delle modifiche in tempo reale e sulla formattazione delle informazioni che restituiscono, consulta i seguenti argomenti:
Viste INFORMATION_SCHEMA per le modifiche in tempo reale
Le seguenti viste mostrano informazioni sui ruoli e sui privilegi del database per le modifiche in tempo reale:
- Database di dialetti GoogleSQL:
INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES - Database di dialetti PostgreSQL:
information_schema.change_stream_privileges
Le righe di queste viste vengono filtrate in base ai privilegi del ruolo del database corrente sulle modifiche in tempo reale. In questo modo, le entità possono visualizzare solo i ruoli, i privilegi e le modifiche in tempo reale a cui hanno accesso.
Il filtro delle righe si applica anche alle seguenti viste correlate alle modifiche in tempo reale:
GoogleSQL
INFORMATION_SCHEMA.CHANGE_STREAMSINFORMATION_SCHEMA.CHANGE_STREAM_TABLESINFORMATION_SCHEMA.CHANGE_STREAM_COLUMNSINFORMATION_SCHEMA.CHANGE_STREAM_OPTIONS
Il ruolo di sistema spanner_info_reader e i relativi membri vedono sempre un INFORMATION_SCHEMA non filtrato.
PostgreSQL
information_schema.change_streamsinformation_schema.change_stream_tablesinformation_schema.change_stream_columnsinformation_schema.change_stream_options
Il ruolo di sistema spanner_info_reader e i relativi membri vedono un information_schema non filtrato.
Il filtro delle righe si applica anche alle seguenti viste dei metadati per le funzioni di lettura delle modifiche in tempo reale:
GoogleSQL
PostgreSQL
Precisazioni
Le modifiche in tempo reale utilizzano un database di metadati per mantenere lo stato interno. Il database di metadati può essere uguale o diverso dal database dell'applicazione. Ti consigliamo di utilizzare un database diverso. Tuttavia, per gli utenti con controllo dell'accesso granulare, il database di metadati non può essere uguale al database dell'applicazione. Questo perché l'entità IAM che esegue il job Dataflow deve disporre dell'accesso in lettura o scrittura a livello di database per il database di metadati. In questo modo, i privilegi di controllo dell'accesso granulare configurati per il database dell'applicazione vengono sostituiti.
Per saperne di più, consulta Considera un database di metadati separato.
Poiché una modifica in tempo reale contiene una copia separata dei dati delle tabelle e delle colonne monitorate, fai attenzione quando concedi agli utenti l'accesso alla modifica in tempo reale. I lettori della modifica in tempo reale possono visualizzare le modifiche dei dati delle tabelle e delle colonne monitorate, anche se non dispongono dei privilegi
SELECTsulle tabelle e sulle colonne. Sebbene sia più flessibile configurare controlli separati sulle modifiche in tempo reale e sulle tabelle e colonne monitorate, esiste un potenziale rischio, quindi assicurati di strutturare di conseguenza i ruoli e i privilegi del database. Ad esempio, quando revochi il privilegioSELECTsu una tabella da un ruolo, valuta se revocare ancheSELECTsulla modifica in tempo reale e revocareEXECUTEsulla funzione di lettura associata.Se concedi
SELECTsu un change stream che monitora tutte le tabelle, il destinatario può visualizzare le modifiche dei dati per tutte le tabelle aggiunte in futuro.
Passaggi successivi
- Panoramica delle modifiche in tempo reale
- Creare e gestire le modifiche in tempo reale
- Panoramica del controllo dell'accesso granulare