Essas práticas recomendadas refletem as sugestões compartilhadas por uma equipe multifuncional de Lookers experientes. Esses insights são provenientes de anos de experiência trabalhando com clientes do Looker, desde a implementação até o sucesso em longo prazo. As práticas foram elaboradas para funcionar na maioria dos usuários e situações, mas use sempre o bom senso ao implementar.
Nesta página, os administradores de instâncias do Looker têm um exemplo guiado de como configurar controles de acesso ao conteúdo. Vamos analisar o processo de implementação, começando com um novo projeto e continuando com modelos, conjuntos de modelos, conjuntos de permissões, grupos, papéis e atributos de usuários.
Primeiro, uma analogia para entender os principais recursos do Looker nesse contexto:
Um projeto é como uma casa.Um model é um cômodo da casa cheio de conteúdo específico.
Um conjunto de modelos é um grupo de cômodos ou um único cômodo (quartos, cozinha).
Um conjunto de permissões é uma lista de verificação de atividades que especifica o que as pessoas podem fazer em um quarto (comer, brincar, dormir).
Um grupo é uma forma de combinar pessoas com características em comum (adultos, crianças, convidados).
Uma função é como dar a grupos de pessoas listas de verificação de atividade em diferentes conjuntos de salas.
Um atributo do usuário é uma chave que abre itens especiais na casa, como chaleira, ferramentas elétricas.
Cenário
Veja a seguir um exemplo de startup com equipes de finanças, vendas e produtos. A CEO é a nossa única administradora, e ela quer que cada equipe veja apenas o conteúdo relevante, com a exceção de que o VP de cada equipe deve ter acesso ao conteúdo de todas as equipes. Ela quer acesso a recursos diferentes para funcionários padrão, gerentes e VPs.
- Os funcionários padrão devem ser capazes de visualizar e explorar dados nos próprios modelos.
- Os administradores devem ter acesso padrão e também ser capazes de fazer o download e programar o conteúdo.
- Os VPs precisam ter quase todos os privilégios, exceto alguns reservados apenas para o CEO.
O CEO quer que os vendedores possam visualizar os dados de suas próprias atividades, mas não os números de vendas individuais de outros vendedores. No entanto, os gerentes de vendas devem ser capazes de visualizar os números de cada vendedor. 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.
Veja abaixo o organograma:
O gráfico acima mostra a seguinte estrutura organizacional na nossa startup de exemplo:
- CEO
- VP de Finanças
- Gerente financeiro
- Contador
- VP de vendas
- Gerente de vendas Oeste
- Vendedor Oeste
- Gerente de vendas Leste
- Vendedor Leste
- VP de produtos
- Gerente de produtos
- Engenheiro
A implementação dos controles de acesso desejados envolverá as seguintes etapas:
- Criar um projeto:um projeto é o vínculo estrutural entre uma conexão de banco de dados e modelos de dados.
- Adicionar modelos:decida quais dados serão revelados a quais usuários.
- Criar conjuntos de modelos:agrupe os modelos relevantes.
- Criar conjuntos de permissões: defina explicitamente as ações que os usuários podem realizar em um conjunto de modelos.
- Criar grupos:agrupe usuários semelhantes.
- Criar papéis: crie as conexões entre conjuntos de modelos, de permissões e grupos.
- Editar o acesso ao conteúdo:gerencie quais painéis e Looks os usuários podem visualizar por meio de pastas.
- 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, você pode navegar até 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 a criação de um novo projeto, consulte a página de documentação Como criar um novo projeto do LookML.
Na página New Project, criaremos um projeto com as seguintes configurações:
- Na seção Nome, dê um nome ao projeto.
- Na seção Ponto de partida, selecionamos Gerar modelo do esquema de banco de dados.
- No menu suspenso Conexão, selecionamos o nome da nossa conexão de banco de dados.
- Na seção Build Views From, para este exemplo, selecionamos a opção All Tables (Todas as tabelas) para que o gerador do LookML crie um arquivo de visualização para cada tabela do banco de dados.
Depois de definir as configurações desejadas para o novo projeto, selecionamos Criar projeto.
Ao criar um projeto, você vai acessar o modelo LookML gerado automaticamente. Neste ponto, você precisa usar o botão Configurar Git para configurar o controle de versões do projeto. Veja instruções detalhadas sobre a configuração do controle de versões na página de documentação Como configurar e testar uma conexão do Git.
2. Adicionar modelos
Um model de dados é como um portal personalizável no banco de dados. Cada modelo pode expor dados diferentes para os usuários. Em nosso exemplo, nossos vendedores precisam de dados diferentes dos nossos engenheiros, portanto, adicionaremos modelos separados para expor as informações apropriadas do banco de dados para cada tipo de usuário.
No projeto LookML, adicionaremos novos arquivos de modelo LookML com os nomes de cada um dos modelos desejados (finance
, sales
e product
). Defina pelo menos uma Análise em cada arquivo. Isso nos permitirá selecionar o modelo ao criar conjuntos de modelos. Caso contrário, ele nã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 adicionados, os modelos ainda precisam ser configurados. Para configurar os modelos, vamos voltar para a página Projetos na seção Desenvolver, que agora mostra o texto em vermelho "Configuração necessária para uso" com o nome de cada modelo.
Ao lado de cada modelo, selecione Configurar. Vamos ter certeza de que o nome do projeto está correto, junto com as conexões que permitiremos que esse modelo use e, em seguida, salvar.
Depois que todos os modelos estiverem configurados corretamente, as mensagens em vermelho sobre os problemas de configuração encontrados anteriormente não vão mais aparecer.
No Looker, conceder a um usuário a permissão see_lookml
ou develop
em um modelo concede essa permissão a todos os modelos desse projeto. Portanto, crie projetos separados se quiser particionar a permissão para acessar ou desenvolver o LookML. Caso contrário, basta criar um novo modelo. As permissões do modelo são suficientes para garantir que apenas algumas pessoas possam consultar determinados dados.
Para mais informações sobre permissões, confira 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 para cada departamento aos conjuntos de modelos que criarmos. Para criar novos conjuntos de modelos, acesse a página Papéis 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 serão exibidos na seção Conjuntos de modelos da página Papéis, como na captura de tela de exemplo a seguir:
4. Criar conjuntos de permissões
Em seguida, criaremos conjuntos de permissões usando os conjuntos de modelos que acabamos de criar. Como mencionado quando definimos o cenário, queremos quatro níveis de permissões correspondentes aos quatro níveis hierárquicos do organograma, e os níveis mais altos devem incluir as permissões dos níveis abaixo. Em nosso cenário, identificaremos os conjuntos de permissões da seguinte maneira:
- O CEO tem a permissão de 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.
- Funcionários padrão têm a permissão Visualizar e Explorar definida.
Para criar novos conjuntos de permissões, acesse a página Papéis no painel Administrador e selecione Novo conjunto de permissões. Selecionaremos as permissões apropriadas para cada nível de permissão. Em geral, os conjuntos de permissões precisam se sobrepor o mínimo possível, e cada um deles adiciona apenas as permissões específicas que queremos que os usuários com esse conjunto de permissões tenham. Isso ocorre porque daremos a alguns usuários vários conjuntos de permissões e queremos saber exatamente o que cada um deles permite. No entanto, devido à estrutura de árvore, um pouco de sobreposição costuma ser necessário.
No nosso exemplo, queremos definir a permissão Ver e explorar para permitir que os usuários acessem conteúdo, façam perguntas e salvem blocos úteis. Portanto, vamos conceder permissões associadas à visualização de conteúdo (como see_looks
e see_user_dashboards
), explore
e save_content
. As principais exceções são see_lookml
, que podemos querer apenas para desenvolvedores, e see_sql
, que reservamos para aqueles que entendem SQL e são confiáveis para visualizar a estrutura do banco de dados. Todas essas permissões estão estritamente na ramificação access_data
. Não concedemos nenhuma das permissões see
na parte inferior da árvore porque elas são permissões administrativas.
Para o conjunto de permissões Fazer o download e compartilhar, adicionaremos as permissões associadas a download, programação, compartilhamento, criação de Looks públicos (que permite o compartilhamento de Looks com usuários não Looker) e see_schedules
(como eles podem criar programações, é lógico que eles também podem visualizá-los no painel do administrador).
Os únicos campos selecionados ao configurar os conjuntos de permissões Visualizar e Explorar e Fazer o download e compartilhar são as permissões mãe 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 terão a permissão Visualizar e explorar definida, 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, porque 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 inferior da árvore, excluindo os privilégios manage_models
e sudo
que o CEO quer apenas para si. A aparência é assim:
Quando estiver tudo pronto, os conjuntos de permissões vão incluir as seguintes permissões:
- Administrador: o conjunto de permissões de 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
eupdate_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
esend_to_sftp
. - Visualizar e explorar: o conjunto de permissões Ver e explorar inclui as permissões
access_data
,create_table_calculations
,explore
,save_content
,see_drill_overlay
,see_lookml_dashboards
,see_looks
esee_user_dashboards
.
Para visualizar as permissões que pertencem a um conjunto de permissões existente, navegue até a seção Conjuntos de permissões da página de administração de Funções.
5. Criar grupos
A próxima etapa é criar os grupos e os buckets dos usuários. Criaremos grupos para funcionários padrão e gerentes de cada departamento, porque eles eventualmente corresponderão às diferentes funções que criaremos posteriormente. Os VPs estarão em seu próprio grupo e o CEO não precisará de um grupo. Quando concluído, a página Grupos vai listar os seguintes grupos e os IDs de grupo correspondentes, que são gerados automaticamente pelo Looker. Exemplo:
ID | Nome |
---|---|
1 | Todos os usuários |
3 | Finanças |
4 | Vendas |
5 | Product |
7 | Gerente de vendas |
8 | Gerente de produtos |
9 | Gerente financeiro |
10 | Vice-presidente |
Depois de criar os grupos, 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 temos permissões estruturadas, os grupos de nível superior podem ser incluídos nos de nível inferior. Por exemplo, queremos os VPs no grupo Finanças, mas não queremos os gerentes de vendas no grupo Produto. Uma maneira eficiente de fazer isso é começar adicionando usuários aos grupos de nível superior (como VPs) para que possamos adicioná-los como um grupo aos níveis mais baixos.
6. Criar papéis
Agora que já temos os conjuntos de modelos, de permissões e grupos, podemos agrupar todos eles usando papéis. Cada papel tem um único conjunto de permissões e de modelos e pode incluir um ou mais grupos. Como as funções devem incluir um conjunto de modelos, criaremos novamente funções para funcionários padrão e gerentes de cada departamento.
- Papéis padrão: incluem o conjunto de permissões Visualizar e Explorar com o conjunto de modelos correspondente. Atribua funções padrão aos grupos padrão e de gerenciamento do departamento e ao VP. Por exemplo, atribua a função Finanças padrão aos grupos Finanças, Gerente financeira e ao VP de finanças.
- Funções de administrador:as funções de administrador têm o conjunto de permissões Fazer o download e compartilhar com 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 o conjunto de permissões Fazer o download e compartilhar com 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ção VP: a função VP terá as permissões Administrador limitado e o modelo Todos definidos. Esse papel será atribuído 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, e somente ao seu. Este é o layout das pastas na nossa instância de exemplo. Ele pode ser visualizado na página Acesso ao conteúdo no painel do administrador:
O acesso às pastas segue as regras da herança hierárquica. Para mais informações sobre como isso funciona, confira nossa documentação sobre níveis de acesso e controle de acesso e gerenciamento de permissões.
Seguindo as regras para o acesso a pastas, queremos conceder acesso de Visualização a todos os usuários na pasta Compartilhado. Vamos conceder a cada grupo acesso de visualização às pastas mãe na árvore acima das pastas que o grupo vai ter acesso. Dessa forma, ao percorrermos a árvore, se não quisermos que um grupo veja uma pasta, não vamos incluir esse grupo ao conceder acesso.
Podemos conceder o nível de acesso Gerenciar acesso, editar para grupos em uma pasta onde queremos controlar quem pode vê-la. Em nosso exemplo, queremos que apenas o CEO e os VPs tenham essas permissões. As outras pessoas só terão acesso de Visualização às pastas de que precisam.
8. Adicionar restrições de acesso a dados com atributos do usuário
Nesta seção, mostramos métodos para impedir que usuários específicos acessem linhas ou colunas de dados específicas de um modelo a que eles têm acesso. Lembre-se, nosso CEO deseja que os vendedores possam visualizar os dados de suas próprias atividades individuais, mas não de atividades de outros usuários. No entanto, os gerentes de vendas devem ser capazes de visualizar os números de cada vendedor. Para isso, vamos usar os atributos do usuário e o parâmetro sql_always_where
.
Criar atributos do usuário
Primeiro, criaremos um novo atributo de usuário chamado access_level
, que está oculto para os usuários. Isso vai permitir a definição de níveis de acesso para os diferentes grupos que temos. Definimos os seguintes valores ao criar o atributo do usuário:
- Name:
access_level
- Rótulo: nível de acesso
- Tipo de dados: string
- Acesso do usuário: editar
- Ocultar valores: não
No exemplo, deixamos a caixa Definir um valor padrão desmarcada.
Ao criar o campo, configuraremos três níveis de acesso: Básico, Premium e Completo. Atribuiremos esses níveis aos grupos padrão, gerente e VP, respectivamente. Isso é feito na guia Group Values, na mesma seção. Consulte a seção Como 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 inferior. Esse comportamento é explicado com mais detalhes na nossa página de documentação Atributos do usuário.
Como filtrar dados de linhas com atributos do usuário
Vamos imaginar que já existe um Explore sendo criado com todas as informações de vendas. Vamos verificar o nível de acesso do usuário que consulta a Análise. Se o nível de acesso for Basic (que demos a todos os nossos vendedores padrão), sempre filtraremos o Explore pelo nome do usuário, para que somente as próprias linhas do vendedor fiquem acessíveis para ele. Se o nível de acesso for Premium ou Full, a consulta não será filtrada. Por padrão, temos um atributo do usuário chamado Nome, que é o nome do usuário do Looker. O LookML do Explore 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 da coluna 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 dos nossos usuários. Para isso, podemos usar os atributos de usuário que criamos e 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. Assim, somente os usuários com o nível de acesso Completo podem ver os campos de PII.
E terminamos. Concluímos a configuração dos nossos controles de acesso a dados e conteúdo, e todos os usuários estão livres para conhecer o Looker. Ao fazer isso, podemos ter certeza de que eles verão apenas o conteúdo que permitimos que eles vejam.