Controllo dell'accesso granulare per modifiche in tempo reale

Questa pagina spiega come funziona il controllo granulare dell'accesso con i flussi di modifiche in tempo reale di Spanner per i database con dialetto GoogleSQL e PostgreSQL.

Per gli utenti con controllo dell'accesso granulare dell'accesso, consenti l'accesso in lettura ai dati delle modifiche in tempo reale utilizzando le seguenti concessioni. Sono necessarie entrambe le concessioni.

  • Concedi SELECT sulle modifiche in tempo reale.

    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 sulla funzione di lettura creata automaticamente per le modifiche 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 dei flussi di modifiche in tempo reale e sulla formattazione delle informazioni restituite, consulta i seguenti argomenti:

INFORMATION_SCHEMA visualizzazioni per le modifiche in tempo reale

Le seguenti viste mostrano le informazioni sui ruoli e sui privilegi del database per le modifiche in tempo reale:

Le righe di queste viste vengono filtrate in base ai privilegi del ruolo del database attuale 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 visualizzazioni relative alle 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 suoi membri vedono un information_schema non filtrato.

Il filtro delle righe si applica anche alle seguenti visualizzazioni dei metadati per le funzioni di lettura dei flussi di modifiche in tempo reale:

Precisazioni

  • Le modifiche in tempo reale utilizzano un database di metadati per mantenere lo stato interno. Il database dei metadati può essere lo stesso del database dell'applicazione o diverso. Ti consigliamo di utilizzare un database diverso. Tuttavia, per gli utenti con controllo dell'accesso granulare dell'accesso, il database dei metadati non può essere lo stesso del database dell'applicazione. Questo perché l'entità Identity and Access Management (IAM) che esegue il job Dataflow deve avere accesso in lettura o scrittura a livello di database per il database dei metadati. In questo modo, i privilegi di controllo dell'accesso granulare dell'accesso configurati per il database dell'applicazione verrebbero ignorati.

    Per saperne di più, consulta Valuta la possibilità di utilizzare un database di metadati separato.

  • Poiché un flusso di modifiche in tempo reale contiene una copia separata dei dati delle tabelle e delle colonne monitorate, fai attenzione quando concedi agli utenti l'accesso al flusso di modifiche in tempo reale. I lettori delle modifiche in tempo reale 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 configurare controlli separati per le modifiche in tempo reale e le 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 se revocare anche SELECT sulle modifiche in tempo reale e EXECUTE sulla funzione di lettura associata.

  • Se concedi SELECT su un flusso di modifiche in tempo reale che monitora tutte le tabelle, il beneficiario può visualizzare le modifiche ai dati per tutte le tabelle aggiunte in futuro.

Passaggi successivi