Controlo de acesso detalhado para streams de alterações

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:

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

A função do sistema spanner_info_reader e os respetivos membros veem sempre um resultado não filtradoINFORMATION_SCHEMA.

PostgreSQL

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:

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égio SELECT numa tabela de uma função, pondere se também deve revogar SELECT no fluxo de alterações e revogar EXECUTE 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?