Esta página explica como o controlo de acesso detalhado funciona com os fluxos de alterações do Spanner para bases de dados com dialeto GoogleSQL e bases de dados com dialeto PostgreSQL.
Para utilizadores com controlo de acesso detalhado, permite o acesso de leitura aos dados de streams de alterações através das seguintes concessões. Ambas as concessões são obrigatórias.
Conceda
SELECT
na stream 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 criada automaticamente para o fluxo de alterações. Usa a função de leitura para ler registos 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 obter informações sobre as convenções de nomenclatura para funções de leitura de streams de alterações e a formatação das informações que devolvem, consulte os seguintes tópicos:
INFORMATION_SCHEMA
visualizações para streams de alterações
As vistas seguintes mostram informações sobre as funções e os privilégios da base de dados para streams de alterações:
- Bases de dados com dialeto GoogleSQL:
INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES
- Bases de dados com dialeto PostgreSQL:
information_schema.change_stream_privileges
As linhas nestas vistas são filtradas com base nos privilégios da função da base de dados atual em streams de alterações. Isto garante que os principais só podem ver as funções, os privilégios e as streams de alterações aos quais têm acesso.
A filtragem de linhas também se aplica às seguintes visualizações relacionadas com streams de alterações:
GoogleSQL
INFORMATION_SCHEMA.CHANGE_STREAMS
INFORMATION_SCHEMA.CHANGE_STREAM_TABLES
INFORMATION_SCHEMA.CHANGE_STREAM_COLUMNS
INFORMATION_SCHEMA.CHANGE_STREAM_OPTIONS
A função do sistema spanner_info_reader
e os respetivos membros veem sempre um resultado não filtradoINFORMATION_SCHEMA
.
PostgreSQL
information_schema.change_streams
information_schema.change_stream_tables
information_schema.change_stream_columns
information_schema.change_stream_options
A função do sistema spanner_info_reader
e os respetivos membros veem um feed não filtrado
information_schema
.
A filtragem de linhas também se aplica às seguintes vistas de metadados para funções de leitura de streams de alterações:
GoogleSQL
PostgreSQL
Advertências
As streams de alterações usam uma base de dados de metadados para manter o estado interno. A base de dados de metadados pode ser igual ou diferente da base de dados da aplicação. Recomendamos que use uma base de dados diferente. No entanto, para os utilizadores com controlo de acesso detalhado, a base de dados de metadados não pode ser igual à base de dados de aplicações. Isto deve-se ao facto de o principal do IAM que executa a tarefa do Dataflow precisar de acesso de leitura ou escrita ao nível da base de dados para a base de dados de metadados. Isto substitui os privilégios de controlo de acesso detalhado que foram configurados para a base de dados da aplicação.
Para mais informações, consulte o artigo Considere uma base de dados de metadados separada.
Uma vez que uma stream de alterações contém uma cópia separada dos dados das tabelas e colunas monitorizadas, tenha cuidado ao conceder aos utilizadores acesso à stream de alterações. Os leitores da stream de alterações podem ver as alterações de dados das tabelas e colunas monitorizadas, mesmo quando não têm privilégios nas tabelas e colunas.
SELECT
Embora seja mais flexível configurar controlos separados em streams de alterações e nas respetivas tabelas e colunas monitorizadas, existe um risco potencial. Por isso, certifique-se de que estrutura as funções e os privilégios da base de dados em conformidade. Por exemplo, quando revogar o privilégioSELECT
numa tabela de uma função, pondere se também deve revogarSELECT
no fluxo de alterações e revogarEXECUTE
na função de leitura associada.Se conceder
SELECT
num fluxo de alterações que monitoriza todas as tabelas, o beneficiário pode ver as alterações de dados de quaisquer tabelas adicionadas no futuro.
O que se segue?
- Vista geral da alteração de streams
- Crie e faça a gestão de streams de alterações
- Vista geral do controlo de acesso detalhado