Prática recomendada: proteja suas pastas. Um tutorial de acesso ao conteúdo

Essas práticas recomendadas refletem as recomendações compartilhadas por uma equipe multidisciplinar de profissionais experientes. Esses insights vêm de anos de experiência trabalhando com clientes do Looker, desde a implementação até o sucesso a longo prazo. As práticas foram criadas para funcionar para a maioria dos usuários e situações, mas sempre use seu melhor julgamento ao implementar.

Esta página oferece aos administradores de instâncias do Looker um exemplo guiado de configuração de controles de acesso ao conteúdo. Vamos explicar o processo de implementação, começando com um novo projeto e continuando com modelos, conjuntos de modelos, conjuntos de permissões, grupos, funções e atributos do usuário.

Primeiro, uma analogia para entender os principais recursos do Looker neste contexto:

Um projeto é como uma casa.

Um modelo é um cômodo da casa que tem um conteúdo específico.

Um conjunto de modelos é um grupo de cômodos ou um cômodo único (quartos, cozinha).

Um conjunto de permissões é uma lista de atividades que especifica o que as pessoas podem fazer em um ambiente (comer, brincar, dormir).

Um grupo é uma forma de combinar pessoas com características compartilhadas (adultos, crianças, convidados).

Uma função é como dar a grupos de pessoas as listas de atividades em diferentes conjuntos de salas.

Um atributo de usuário é uma chave que abre itens especiais na casa (bule, ferramentas elétricas).

Cenário

Confira a seguir um exemplo de startup com equipes de finanças, vendas e produtos. O CEO é o único administrador, e ele quer que cada equipe acesse apenas o conteúdo relevante para ela, com a exceção de que o vice-presidente de cada equipe tenha acesso ao conteúdo de todas as equipes. Ela quer diferentes níveis de acesso a recursos para funcionários padrão, gerentes e vice-presidentes.

  • Os funcionários padrão precisam ter acesso aos dados nos próprios modelos.
  • Os administradores precisam ter acesso padrão e também fazer o download e programar conteúdo.
  • Os vice-presidentes precisam ter quase todos os privilégios, exceto alguns reservados apenas para o CEO.

O CEO quer que os vendedores possam acessar os dados das próprias atividades, mas não os números de vendas individuais de outro vendedor. No entanto, os gerentes de vendas precisam ter acesso aos números de todos os vendedores. Por fim, há alguns campos financeiros com informações sensíveis que ela quer mascarar para os funcionários padrão que usam esse modelo.

Este é o organograma:

Organograma da startup neste exemplo.

Este gráfico mostra a seguinte estrutura organizacional da startup de exemplo:

  • CEO
    • Vice-presidente de finanças
      • Gerente financeiro
        • Contador
    • Vice-presidente de vendas
      • Gerente de vendas do Oeste
        • Vendedor do Oeste
      • Gerente de vendas do Leste
        • Vendedor Leste
    • VP de produtos
      • Gerente de produtos
        • Engineer

A implementação dos controles de acesso desejados envolve as seguintes etapas:

  1. Criar um projeto:um projeto é o vínculo estrutural entre uma conexão de banco de dados e modelos de dados.
  2. Adicionar modelos:decida quais dados serão revelados para quais usuários.
  3. Criar conjuntos de modelos:agrupe modelos relevantes.
  4. Criar conjuntos de permissões:defina explicitamente as ações que os usuários podem realizar em um conjunto de modelos.
  5. Criar grupos:agrupe usuários semelhantes.
  6. Criar funções:crie as conexões entre conjuntos de modelos, conjuntos de permissões e grupos.
  7. Editar acesso ao conteúdo:gerencie quais painéis e Looks os usuários podem acessar por pastas.
  8. Adicionar filtros de dados:filtre ainda mais os dados que usuários específicos podem acessar em um modelo.

1. Criar um projeto

A primeira coisa que precisamos é um projeto, que é um contêiner para um ou mais modelos. Se você já tiver um projeto configurado, pule esta etapa. Caso contrário, acesse a página Projetos do LookML selecionando Projetos na seção Desenvolver do Looker e selecionando Novo projeto do LookML para criar um novo projeto. Para instruções mais detalhadas sobre como criar um novo projeto, consulte a página de documentação Como gerar um modelo.

Na página Novo projeto, vamos criar um projeto com as seguintes configurações:

  • Na seção Nome, damos um nome ao projeto.
  • Na seção Ponto de partida, selecionamos Gerar modelo a partir do esquema do banco de dados.
  • No menu suspenso Conexão, selecionamos o nome da conexão do banco de dados.
  • Neste exemplo, na seção Build Views From, selecionamos a opção All Tables para que o gerador do LookML crie um arquivo de visualização para cada tabela no seu banco de dados.

Depois de configurar as configurações desejadas para o novo projeto, selecionamos Criar projeto.

Ao criar um projeto, você vai acessar o modelo do LookML gerado automaticamente. Nesse ponto, você vai precisar usar o botão Configure Git para configurar o controle de versões do projeto. As instruções detalhadas sobre como configurar o controle de versão estão na página de documentação Como configurar e testar uma conexão do Git.

2. Adicionar modelos

Um modelo de dados é como um portal personalizável para o banco de dados. Cada modelo pode expor dados diferentes aos usuários. No nosso exemplo, os vendedores precisam de dados diferentes dos engenheiros. Por isso, vamos adicionar modelos separados para expor as informações adequadas do banco de dados a cada tipo de usuário.

No projeto do LookML, adicionaremos novos arquivos de modelo do LookML com os nomes de cada um dos modelos desejados (finance, sales e product). Defina pelo menos um Explore em cada arquivo de modelo. Isso nos permitirá selecionar o modelo ao criar conjuntos de modelos. Caso contrário, eles não vão aparecer na seleção. Para mais referências sobre como usar o parâmetro explore no arquivo de modelo, consulte a página de documentação Noções básicas sobre arquivos de modelo e visualização.

Depois de adicionar os modelos, ainda precisamos configurá-los. Para configurar os modelos, volte à página Projects na seção Develop, que agora mostra o texto em vermelho "Configuration required for use" com cada nome de modelo.

Ao lado de cada modelo, selecione Configurar. Vamos verificar se o nome do projeto está correto, além das conexões que vamos permitir que esse modelo use e, em seguida, salvar.

Na página "Configurar um modelo", você pode verificar o nome do modelo, o projeto e as conexões permitidas.

Depois que todos os modelos forem configurados corretamente, as mensagens vermelhas de problema de configuração que encontramos anteriormente não vão mais aparecer.

Lembre-se de que, no Looker, conceder a um usuário a permissão see_lookml ou develop em um modelo concede a ele essa permissão para todos os modelos no projeto. Portanto, crie projetos separados se quiser dividir a permissão para visualizar ou desenvolver o LookML. Caso contrário, crie um novo modelo. As permissões do modelo são suficientes para garantir que apenas determinadas pessoas possam consultar determinados dados.

Para mais informações sobre permissões, consulte nossa documentação sobre papéis.

3. Criar conjuntos de modelos

Agora que os modelos de dados de cada departamento foram configurados, vamos adicionar o modelo correspondente a cada departamento nos conjuntos de modelos que criamos. Para criar novos conjuntos de modelos, acesse a página Funções no painel Administrador e selecione Novo conjunto de modelos. Para mais instruções sobre como criar novos conjuntos de modelos, consulte a página de documentação Funções.

Depois que os novos conjuntos de modelos forem criados, eles vão aparecer na seção Conjuntos de modelos da página Funções, como no exemplo a seguir:

Os modelos de finanças, produtos e vendas correspondem aos conjuntos de modelos de finanças, produtos e vendas na página "Conjuntos de modelos".

4. Criar conjuntos de permissões

Em seguida, vamos criar conjuntos de permissões usando os conjuntos de modelos que acabamos de criar. Como mencionado ao configurar o cenário, queremos quatro níveis de permissões correspondentes aos quatro níveis hierárquicos no organograma, e os níveis mais altos devem incluir as permissões dos níveis abaixo. No nosso cenário, vamos identificar os conjuntos de permissões da seguinte maneira:

  • O CEO tem a permissão Administrador definida.
  • Os VPs têm a permissão Administrador limitado definida.
  • Os administradores têm a permissão Fazer o download e compartilhar definida.
  • Os funcionários padrão têm a permissão Visualizar e analisar definida.

Para criar novos conjuntos de permissões, acesse a página Funções no painel Administrador e selecione Novo conjunto de permissões. Para cada nível de permissão, vamos selecionar as permissões adequadas. Em geral, os conjuntos de permissões precisam se sobrepor o mínimo possível, e cada conjunto precisa adicionar apenas as permissões específicas que queremos que os usuários tenham. Isso acontece porque vamos dar a alguns usuários vários conjuntos de permissões e queremos saber exatamente o que cada conjunto permite. No entanto, devido à estrutura em árvore, é comum que haja alguma sobreposição.

No nosso exemplo, queremos que a permissão Visualizar e explorar permita que os usuários acessem o conteúdo, façam perguntas e salvem blocos úteis. Por isso, vamos conceder permissões associadas à visualização de conteúdo (como see_looks e see_user_dashboards), a permissão explore e a save_content. As exceções notáveis aqui são see_lookml, que pode ser usado apenas por desenvolvedores, e see_sql, que reservamos para quem entende de SQL e tem permissão para acessar a estrutura do banco de dados. Todas essas permissões estão estritamente na ramificação access_data. Não estamos concedendo nenhuma das permissões see na parte de baixo da árvore, porque elas são administrativas.

Para o conjunto de permissões Fazer o download e compartilhar, vamos adicionar as permissões associadas ao download, programação, compartilhamento, criação de Looks públicos (que permite o compartilhamento de Looks com usuários que não são do Looker) e see_schedules (como eles podem criar programações, é lógico que também possam visualizá-las no painel de administrador).

Os únicos campos selecionados ao configurar os conjuntos de permissões Ver e explorar e Fazer o download e compartilhar são as permissões principais necessárias para selecionar as permissões filhas adicionadas na ramificação access_data. Portanto, como os usuários com o conjunto de permissões Fazer o download e compartilhar também têm o conjunto de permissões Acessar e explorar, não é necessário incluir permissões como see_lookml_dashboards, see_user_dashboards e explore no conjunto de permissões Fazer o download e compartilhar, já que elas não contêm permissões filhas necessárias para o conjunto de permissões Fazer o download e compartilhar.

Por fim, para o conjunto de permissões de Administrador limitado, vamos adicionar a maioria das permissões administrativas na parte de baixo da árvore, excluindo os privilégios manage_models e sudo que o CEO quer apenas para si. Ela é assim:

Quando terminar, os conjuntos de permissões vão incluir as seguintes permissões:

  • Administrador: o conjunto de permissões Administrador, reservado para o CEO da empresa de exemplo, inclui todas as permissões.
  • Administrador limitado: o conjunto de permissões Administrador limitado inclui as permissões create_prefetches, login_special_email, manage_homepage, manage_spaces, see_alerts, see_datagroups, see_logs, see_pdts, see_queries, see_users e update_datagroups.
  • Fazer o download e compartilhar: o conjunto de permissões Fazer o download e compartilhar inclui as permissões access_data, create_public_looks, download_with_limit, download_without_limit, save_content, schedule_external_look_emails, schedule_look_emails, see_looks, see_schedules, send_outgoing_webhook, send_to_s3 e send_to_sftp.
  • Visualizar e explorar: o conjunto de permissões Visualizar e explorar inclui as permissões access_data, create_table_calculations, explore, save_content, see_drill_overlay, see_lookml_dashboards, see_looks e see_user_dashboards.

Para conferir as permissões que pertencem a um conjunto, acesse a seção Conjuntos de permissões da página de administrador Papéis.

5. Criar grupos

A próxima etapa é criar os grupos e agrupar os usuários. Vamos criar grupos para funcionários padrão e gerentes em cada departamento, porque eles vão corresponder às diferentes funções que vamos criar mais tarde. Os vice-presidentes vão estar em um grupo próprio, e o CEO não precisa de um grupo. Quando terminar, a página Grupos vai listar os grupos a seguir e os IDs correspondentes, que são gerados automaticamente pelo Looker. Exemplo:

ID Nome
1 Todos os usuários
3 Finanças
4 Vendas
5 Produto
7 Gerente de vendas
8 Gerente de produtos
9 Gerente financeiro
10 VPs

Com os grupos criados, precisamos adicionar usuários a eles. Para instruções sobre como adicionar usuários a grupos, consulte a página de documentação Grupos.

Ao adicionar usuários aos grupos que criamos, lembre-se de que, devido à forma como estruturamos as permissões, os grupos de nível superior podem ser incluídos nos grupos de nível inferior. Por exemplo, queremos que os vice-presidentes estejam no grupo Finanças, mas não os gerentes de vendas no grupo Produto. Uma maneira eficiente de fazer isso é começar adicionando usuários aos grupos de nível mais alto (como VPs) para que possamos adicioná-los como um grupo aos níveis mais baixos.

6. Criar funções

Agora que temos conjuntos de modelos, permissões e grupos, podemos colocá-los todos juntos usando funções. Cada função terá um conjunto de permissões e um conjunto de modelos, e poderá incluir um ou mais grupos. Como as funções precisam incluir um conjunto de modelos, vamos criar novamente funções para funcionários padrão e gerentes de cada departamento.

  • Funções padrão: incluem o conjunto de permissões Visualizar e analisar e o conjunto de modelos correspondente. Atribua funções padrão aos grupos padrão e de gerentes desse departamento e ao vice-presidente. Por exemplo, atribua o papel Finanças padrão aos grupos Finanças e Gerente de finanças e ao vice-presidente de finanças.
  • Funções de administrador:as funções de administrador têm a permissão Fazer o download e compartilhar e o conjunto de modelos correspondente. Essas funções devem ser atribuídas ao grupo de gerentes do departamento correspondente e ao vice-presidente do departamento.
  • Funções de administrador:as funções de administrador têm a permissão Fazer o download e compartilhar e o conjunto de modelos correspondente. Essas funções precisam ser atribuídas ao grupo de gerentes do departamento correspondente e ao vice-presidente do departamento.
  • Função de vice-presidente: a função de vice-presidente terá a permissão Administrador limitado e o modelo Todos. Essa função será atribuída ao grupo VPs.

7. Editar acesso ao conteúdo

A próxima etapa é organizar as permissões de acesso às pastas para que cada grupo tenha acesso ao próprio conteúdo. Confira o layout das pastas na nossa instância de exemplo, que pode ser acessada na página Acesso ao conteúdo do painel do administrador:

A pasta "Compartilhada" contém as pastas "Finanças", "Produto" e "Vendas", que contêm pastas para uso dos departamentos.

O acesso a pastas segue as regras de herança hierárquica. Para mais informações sobre como isso funciona, consulte nossa documentação sobre níveis de acesso e controle de acesso e gerenciamento de permissões.

Seguindo as regras de acesso à pasta, queremos conceder acesso de leitura a todos os usuários na pasta Compartilhada. Vamos conceder a cada grupo acesso de leitura às pastas principais na árvore acima das pastas a que o grupo terá acesso. Dessa forma, ao percorrer a árvore, se não quisermos que um grupo tenha acesso a uma pasta, não vamos incluir esse grupo ao conceder o acesso.

Podemos conceder o nível de acesso Gerenciar acesso, editar a grupos em uma pasta em que queremos controlar quem tem acesso a ela. No nosso exemplo, queremos que apenas o CEO e os vice-presidentes tenham essas permissões. Todos os outros usuários terão apenas acesso de leitura às pastas necessárias.

8. Adicionar restrições de acesso a dados com atributos do usuário

Esta seção mostra métodos para impedir que usuários específicos acessem determinadas linhas ou colunas de dados de um modelo a que eles têm acesso. Lembre-se de que o CEO quer que os vendedores possam acessar os dados das próprias atividades, mas não das outras pessoas. No entanto, os gerentes de vendas precisam ter acesso aos números de todos os vendedores. Para isso, vamos aproveitar os atributos do usuário e o parâmetro sql_always_where.

Criar atributos do usuário

Primeiro, vamos criar um novo atributo do usuário chamado access_level, que fica oculto dos usuários. Isso nos permite definir níveis de acesso para os diferentes grupos que temos. Vamos definir os seguintes valores ao criar o atributo do usuário:

  • Nome: access_level
  • Rótulo: nível de acesso
  • Tipo de dado: string
  • Acesso do usuário: edição
  • Ocultar valores: não

No nosso exemplo, vamos deixar a caixa Definir um valor padrão desmarcada.

Ao criar o campo, vamos configurar três níveis de acesso: Básico, Premium e Completo. Vamos atribuir esses níveis aos grupos padrão, gerente e vice-presidente, respectivamente. Isso é feito na guia Valores do grupo na mesma seção. Consulte a seção Atribuir valores a grupos de usuários da documentação Atributos do usuário para mais detalhes.

Como a ordem dessas regras é importante, queremos colocar os valores de acesso mais altos no topo da lista para substituir os valores de acesso mais baixos na parte de baixo. Esse comportamento é explicado na página de documentação Atributos do usuário.

Como filtrar dados de linha com atributos do usuário

Vamos imaginar que já existe uma seção "Explorar" sendo criada com todas as informações de vendas. Vamos verificar o nível de acesso do usuário que consulta a Análise detalhada. Se o nível de acesso for Básico (que foi concedido a todos os nossos vendedores padrão), vamos sempre filtrar a Análise detalhada pelo nome do usuário, para que apenas as linhas de cada vendedor sejam acessíveis. Se o nível de acesso for Premium ou Total, a consulta não será filtrada. Por padrão, temos um atributo de usuário chamado Nome, que é o nome do usuário do Looker. O LookML para o recurso "Explorar" vai ficar assim:

explore: sales_info {
  sql_always_where: {% if {{_user_attributes['access_level']}} == "Basic" %}
    ${sales_info.name} = "{{_user_attributes['name']}}"
    % endif %
  ;;
}

Como filtrar dados de colunas com atributos do usuário

Por fim, há algumas colunas de PII (informações de identificação pessoal) no modelo financeiro que também queremos ocultar de alguns usuários. Para fazer isso, podemos usar os atributos de usuário que criamos, junto com as instruções para aplicar permissões no nível do banco de dados no Looker na página de documentação Atributos do usuário, para que apenas os usuários com o nível de acesso Total possam acessar os campos de PII.

Pronto. Terminamos de configurar os controles de acesso a conteúdo e dados, e todos os nossos usuários podem usar o Looker. Assim, podemos garantir que eles só vão ter acesso ao conteúdo que permitimos.