Controle de acesso granular para fluxo de alterações

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 refinados, você permite o acesso de leitura para alterar dados de streams 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 criada automaticamente para o fluxo de alterações. A função de leitura é usada para ler os 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 do fluxo de alterações e sobre 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 os papéis do banco de dados e informações de privilégios para fluxos de mudança:

As linhas nessa visualização são filtradas com base nos privilégios do papel de banco de dados atual 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 eles têm acesso.

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

GoogleSQL

O papel do sistema spanner_info_reader e os respectivos membros sempre veem um INFORMATION_SCHEMA não filtrado.

PostgreSQL

A função do sistema spanner_info_reader e os respectivos membros veem um information_schema não filtrado.

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

Advertências

  • Os streams de alteração 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 refinados, o banco de dados de metadados não pode ser igual ao banco de dados do aplicativo. 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 substituiria os privilégios de controle de acesso refinados que foram 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 visualizar as mudanças de dados das tabelas e colunas rastreadas, mesmo quando não têm privilégios SELECT nas tabelas e colunas. Embora seja mais flexível configurar controles separados nos fluxo de alterações e nas tabelas e colunas rastreadas, há um risco em potencial. Portanto, estruture os papéis e privilégios do banco de dados adequadamente. Por exemplo, ao revogar o privilégio SELECT em uma tabela de um papel, considere também se você quer revogar SELECT no fluxo de alterações e revogar EXECUTE 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 nos dados de qualquer tabela adicionada no futuro.

Mais informações