Controllo degli accessi granulare per gli stream di modifiche

Questa pagina spiega come funziona il controllo dell'accesso granulare con gli stream di variazioni di Spanner.

Per gli utenti con controllo dell'accesso granulare, consenti l'accesso in lettura ai dati degli stream di modifiche utilizzando le seguenti concessioni. Entrambi i contributi sono obbligatori.

  • Concedi SELECT nel 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 nella funzione di lettura che viene attivata automaticamente per le modifiche in tempo reale. 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 delle modifiche in tempo reale e sulla formattazione delle informazioni restituite, consulta i seguenti argomenti:

Visualizzazioni INFORMATION_SCHEMA per i flussi di modifiche

Le seguenti visualizzazioni mostrano le informazioni sui ruoli e sui privilegi del database da modificare stream:

Le righe in questa vista vengono filtrate in base al ruolo attuale del database i privilegi sui modifiche in tempo reale. In questo modo le entità possono visualizzare solo ruoli, privilegi e modifiche in tempo reale a cui ha accesso.

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

GoogleSQL

Per il ruolo di sistema spanner_info_reader e i suoi membri viene sempre visualizzato un INFORMATION_SCHEMA.

PostgreSQL

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

I filtri delle righe si applicano anche alle seguenti visualizzazioni di metadati per le modifiche in tempo reale funzioni di lettura:

Limitazioni

  • 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 database diverso. Tuttavia, per per gli utenti con un controllo dell'accesso granulare, il database di metadati non può essere uguale all'applicazione per configurare un database. Questo perché l'entità IAM che esegue Il job Dataflow richiede l'accesso in lettura/scrittura a livello di database per o un database di metadati. In questo modo verranno ignorati i privilegi di controllo dell'accesso granulare che sono stati configurati per il database dell'applicazione.

    Per ulteriori informazioni, consulta l'articolo Valutare l'idea di utilizzare un database di 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 di configurare controlli separati sui modifiche in tempo reale e sulle relative tabelle monitorate colonne, c'è un rischio potenziale, quindi assicurati di strutturare il database i ruoli e i privilegi di conseguenza. Ad esempio, quando revochi SELECT privilegio su una tabella da un ruolo, valuta se revocare anche SELECT nel flusso di modifiche e revoca EXECUTE sulla lettura associata personalizzata.

  • Se concedi l'autorizzazione SELECT su un flusso di modifiche che monitora tutte le tabelle, il beneficiario possono vedere le modifiche ai dati per le tabelle aggiunte in futuro.

Ulteriori informazioni