Nesta página, explicamos como o controle de acesso refinado funciona com os fluxo de alterações do Spanner para bancos de dados com dialeto GoogleSQL e PostgreSQL.
Para usuários de controle de acesso refinado, você permite o acesso de leitura aos dados de fluxo de alterações usando as seguintes concessões. As duas concessões são obrigatórias.
Conceda
SELECTno fluxo de alterações.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;
Conceda
EXECUTEna função de leitura que é criada automaticamente para o fluxo de alterações. Use a função de leitura para ler registros de fluxo de alterações.GoogleSQL
GRANT EXECUTE ON TABLE FUNCTION READ_FUNCTION_NAME TO ROLE ROLE_NAME;
PostgreSQL
GRANT EXECUTE ON FUNCTION READ_FUNCTION_NAME TO ROLE_NAME;
Para informações sobre convenções de nomenclatura para funções de leitura de fluxo de alterações e formatação das informações retornadas, consulte os seguintes tópicos:
Visualizações de INFORMATION_SCHEMA para fluxo de alterações
As visualizações a seguir mostram informações sobre papéis e privilégios de banco de dados para fluxos de alterações:
- Bancos de dados de dialeto do GoogleSQL:
INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES - Bancos de dados de dialeto PostgreSQL:
information_schema.change_stream_privileges
As linhas nessas visualizações são filtradas com base nos privilégios atuais do papel do banco de dados em fluxo de alterações. Isso garante que os principais tenham acesso de visualização apenas aos papéis, privilégios e fluxo de alterações aos quais têm acesso.
A filtragem de linhas também se aplica às seguintes visualizações relacionadas a fluxo de alterações:
GoogleSQL
INFORMATION_SCHEMA.CHANGE_STREAMSINFORMATION_SCHEMA.CHANGE_STREAM_TABLESINFORMATION_SCHEMA.CHANGE_STREAM_COLUMNSINFORMATION_SCHEMA.CHANGE_STREAM_OPTIONS
O papel do sistema spanner_info_reader e os membros dele sempre veem um INFORMATION_SCHEMA não filtrado.
PostgreSQL
information_schema.change_streamsinformation_schema.change_stream_tablesinformation_schema.change_stream_columnsinformation_schema.change_stream_options
O papel do sistema spanner_info_reader e os membros dele veem um information_schema não filtrado.
A filtragem de linhas também se aplica às seguintes visualizações de metadados para funções de leitura de fluxo de alterações:
GoogleSQL
PostgreSQL
Advertências
Os fluxos de alterações usam um banco de dados de metadados para manter o estado interno. O banco de dados de metadados pode ser igual ou diferente do banco de dados do aplicativo. Recomendamos que você use um banco de dados diferente. No entanto, para usuários de controle de acesso refinado, o banco de dados de metadados não pode ser o mesmo que o banco de dados do aplicativo. Isso ocorre porque o principal do Identity and Access Management (IAM) que executa o job do Dataflow precisa de acesso de leitura ou gravação no nível do banco de dados para o banco de dados de metadados. Isso substituiria os privilégios de controle de acesso refinado configurados para o banco de dados do aplicativo.
Para mais informações, consulte Considere um banco de dados de metadados separado.
Como um fluxo de alterações contém uma cópia separada dos dados das tabelas e colunas rastreadas, tenha cuidado ao conceder aos usuários acesso ao fluxo de alterações. Os leitores do fluxo de alterações podem ver as mudanças de dados das tabelas e colunas rastreadas, mesmo quando não têm privilégios
SELECTnelas. Embora seja mais flexível configurar controles separados em fluxo de alterações e nas tabelas e colunas rastreadas, há um risco potencial. Portanto, estruture os papéis e privilégios do banco de dados de acordo. Por exemplo, ao revogar o privilégioSELECTem uma tabela de um papel, considere também revogarSELECTno fluxo de alterações e revogarEXECUTEna função de leitura associada.Se você conceder
SELECTem um fluxo de alterações que rastreia todas as tabelas, o beneficiário poderá ver as alterações de dados de todas as tabelas adicionadas no futuro.
A seguir
- Visão geral do fluxo de alterações
- Criar e gerenciar fluxos de alterações
- Visão geral do controle de acesso refinado