Nesta página, explicamos como o controle de acesso detalhado funciona com os fluxo de alterações do Spanner.
Para usuários de controle de acesso refinado, permita o acesso de leitura a dados de fluxo de alterações usando as concessões a seguir. As duas concessões são obrigatórias.
Conceda
SELECT
no 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
EXECUTE
na função de leitura que é criada automaticamente para o fluxo de alterações. Use a função de leitura para ler os registros do 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 sobre a formatação das informações retornadas, consulte os seguintes tópicos:
INFORMATION_SCHEMA
visualizações dos fluxo de alterações
As visualizações a seguir mostram informações de papéis e privilégios de banco de dados para fluxos de alteração:
- Bancos de dados do dialeto GoogleSQL:
INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES
- Bancos de dados do dialeto PostgreSQL:
information_schema.change_stream_privileges
As linhas nessa visualização são filtradas com base nos privilégios do papel atual do banco de dados nos fluxo de alterações. Isso garante que os principais possam visualizar apenas os papéis, privilégios e fluxo de alterações a que têm acesso.
A filtragem de linhas também se aplica às seguintes visualizações relacionadas aos fluxo de alterações:
GoogleSQL
INFORMATION_SCHEMA.CHANGE_STREAMS
INFORMATION_SCHEMA.CHANGE_STREAM_TABLES
INFORMATION_SCHEMA.CHANGE_STREAM_COLUMNS
INFORMATION_SCHEMA.CHANGE_STREAM_OPTIONS
O papel do sistema spanner_info_reader
e os respectivos membros sempre veem um INFORMATION_SCHEMA
não filtrado.
PostgreSQL
information_schema.change_streams
information_schema.change_stream_tables
information_schema.change_stream_columns
information_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 de aplicativos. Recomendamos que você use outro banco de dados. No entanto, para usuários de controle de acesso refinados, o banco de dados de metadados não pode ser igual ao banco de dados de aplicativos. Isso ocorre porque o principal do IAM que executa o job do Dataflow precisa de acesso de leitura/gravação no nível do banco de dados para o banco de dados de metadados. Isso modificaria os privilégios refinados de controle de acesso configurados para o banco de dados do aplicativo.
Para mais informações, consulte Considerar 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 a ele. Os leitores do fluxo de alterações podem visualizar as alterações de dados das tabelas e colunas rastreadas, mesmo quando não têm privilégios
SELECT
nelas. Configurar controles separados nos fluxo de alterações e nas tabelas e colunas rastreadas dos fluxos de alterações é mais flexível, mas há um risco potencial. Por isso, estruture os papéis e privilégios do banco de dados adequadamente. Por exemplo, ao revogar o privilégioSELECT
em uma tabela de um papel, considere também revogarSELECT
no fluxo de alterações eEXECUTE
na função de leitura associada.Se você conceder
SELECT
em um fluxo de alterações que rastreia todas as tabelas, o beneficiário poderá ver as alterações de dados de qualquer tabela adicionada no futuro.
Mais informações
- Sobre os fluxos de alterações
- Criar e gerenciar fluxos de alterações
- Sobre o controle de acesso detalhado