Controle de acesso granular para fluxo de alterações

Nesta página, explicamos como o controle de acesso detalhado funciona com o Spanner fluxo de alterações.

Para usuários de controle de acesso refinados, você permite acesso de leitura para alterar dados de fluxos ao usando as seguintes concessões. Ambas as 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 é automaticamente criada para o fluxo de alterações. Você usa a função read para ler nos registros de fluxo de alteração.

    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 mais informações sobre convenções de nomenclatura para funções de leitura do fluxo de alterações e sobre a formatação das informações retornadas, consulte os seguintes tópicos:

INFORMATION_SCHEMA visualizações para fluxo de alterações

As visualizações a seguir mostram as funções do banco de dados e as informações de privilégios para alteração. streams:

As linhas nessa visualização são filtradas com base no papel atual do banco de dados privilégios em fluxo de alterações. Isso garante que os principais possam visualizar apenas o funções, privilégios e fluxo de alterações aos quais eles têm acesso.

A filtragem de linhas também se aplica às seguintes visualizações relacionadas aos fluxo de alterações:

GoogleSQL

A função do sistema spanner_info_reader e os participantes dela sempre veem um valor não filtrado INFORMATION_SCHEMA.

PostgreSQL

A função do sistema spanner_info_reader e os participantes dela veem uma entrada information_schema.

A filtragem de linhas também se aplica às seguintes visualizações de metadados do fluxo de alterações funções de leitura:

Advertências

  • Os streams de alteração usam um banco de dados de metadados para manter o estado interno. O o banco de dados de metadados pode ser igual ou diferente do banco de dados no seu banco de dados. Recomendamos usar outro banco de dados. No entanto, para usuários de controle de acesso granular, o banco de dados de metadados não pode ser igual ao do aplicativo no seu banco de dados. 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 no banco de dados de metadados. Isso substituiria os privilégios de controle de acesso granular que configuradas 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 do tabelas e colunas rastreadas, tenha cuidado ao conceder aos usuários acesso fluxo de alterações. Os leitores do fluxo de alterações podem visualizar alterações de dados de as tabelas e colunas rastreadas, mesmo quando elas não têm SELECT nas tabelas e colunas. Embora ele seja mais flexível para configurar controles separados sobre fluxo de alterações e suas tabelas rastreadas e colunas, há um risco potencial, portanto, certifique-se de estruturar o banco de dados as funções e os privilégios necessários. Por exemplo, ao revogar a SELECT privilégio de um papel em uma tabela. Considere também se você quer revogar SELECT no fluxo de alterações e revogar EXECUTE no fluxo de leitura função.

  • Se você conceder SELECT em um fluxo de alterações que rastreia todas as tabelas, o beneficiário possa ver as alterações nos dados de qualquer tabela adicionada no futuro.

Mais informações