Controllo dell'accesso granulare per modifiche in tempo reale

Questa pagina spiega come funziona il controllo dell'accesso granulare con modifiche in tempo reale di Spanner.

Per gli utenti con controllo dell'accesso dell'accesso granulare, consenti l'accesso in lettura ai dati modifiche in tempo reale utilizzando le seguenti concessioni. Entrambi i permessi sono obbligatori.

  • Concedi SELECT al flusso di modifiche.

    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 EXECUTE alla funzione di lettura creata automaticamente per il flusso di modifiche. La funzione read viene utilizzata per leggere i record dello stream di variazioni.

    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 del flusso di modifiche e sulla formattazione delle informazioni restituite, consulta i seguenti argomenti:

Visualizzazioni INFORMATION_SCHEMA per modifiche in tempo reale

Le seguenti visualizzazioni mostrano i ruoli e i privilegi del database per i datastream delle modifiche:

Le righe di queste visualizzazioni vengono filtrate in base ai privilegi del ruolo del database corrente sugli modifiche in tempo reale. In questo modo, gli entità possono visualizzare solo i ruoli, i privilegi e modifiche in tempo reale a cui hanno accesso.

Il filtro delle righe si applica anche alle seguenti viste relative agli modifiche in tempo reale:

GoogleSQL

Il ruolo di sistema spanner_info_reader e i relativi membri vedono sempre un INFORMATION_SCHEMA non filtrato.

PostgreSQL

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 del stream di modifiche:

Precisazioni

  • Le modifiche in tempo reale utilizzano un database di metadati per mantenere lo stato interno. Il database dei metadati può essere uguale o diverso dal database dell'applicazione. Ti consigliamo di utilizzare un altro database. Tuttavia, per gli utenti con controllo dell'accesso granulare dell'accesso, il database dei metadati non può essere uguale al database dell'applicazione. Questo perché l'entità IAM che esegue il job Dataflow ha bisogno di accesso in lettura/scrittura a livello di database per il database dei metadati. In questo modo verranno sostituiti i privilegi di controllo dell'accesso granulare che sono stati configurati per il database dell'applicazione.

    Per ulteriori informazioni, consulta Valutare la possibilità di utilizzare un database dei metadati separato.

  • Poiché uno stream di modifiche contiene una copia separata dei dati delle tabelle e delle colonne monitorate, fai attenzione quando concedi agli utenti l'accesso allo stream di modifiche. I lettori dello stream delle modifiche possono visualizzare le modifiche ai dati delle tabelle e delle colonne monitorate, anche se non dispongono dei privilegi SELECT sulle tabelle e sulle colonne. Sebbene sia più flessibile impostare controlli separati sugli modifiche in tempo reale e sulle relative tabelle e colonne monitorate, esiste un potenziale rischio, quindi assicurati di strutturare i ruoli e i privilegi del database di conseguenza. Ad esempio, quando revochi il privilegio SELECT su una tabella da un ruolo, valuta la possibilità di revocare anche SELECT sul flusso di modifiche e EXECUTE sulla funzione di lettura associata.

  • Se concedi SELECT su uno stream di modifiche che monitora tutte le tabelle, il concesso può vedere le modifiche ai dati per tutte le tabelle aggiunte in futuro.

Ulteriori informazioni