Grafana: [Solicitação de recurso] Estendendo o modelo de organização para incluir usuários e (sub) grupos de painel

Criado em 3 mai. 2016  ·  3Comentários  ·  Fonte: grafana/grafana

Fundo

Fonte de dados: InfluxDB, potencialmente PostgreSQL para dados alterados com pouca frequência.

Esta solicitação de recurso é uma extensão geral das discussões que acontecem em:

2132, # 2777, # 1611

Ele é baseado no slack post: Grafana Cloud Hosting Best Practices que criei em 20/04/2016 no canal grafana em raintank.slack.com .

Para os curiosos:
Para descobrir o que é um sistema fora da rede ou híbrido, verifique este documento bastante acessível:

Sistemas híbridos de energia baseados em energias renováveis (fonte: Alliance for Rural Electrification )

O desafio

Abaixo está um exemplo de um dos meus casos de uso mais complexos do Grafana.

├── Off-Grid manufacturer 1
│   └── Technical staff
│   └── Finance staff
│   └── Investors
│   └── Public (i.e. demo dashboards)
│   │
│   └── Plant hire company 1.1
│   │   ├── Finance staff
│   │   ├── Technical staff
│   │   └── Investors
│   │   └── Public (i.e. demo dashboards)
│   │   │
│   │   └── Building company 1.1.1
│   │   │   ├── Technical staff
│   │   │   ├── Finance staff
│   │   │   └── Investors
│   │   │   └── Public (i.e. demo dashboards)
│   │   .
│   │   .
│   │   └── Building company 1.1.n
│   .
│   .
│   └── Plant hire company 1.n
.
.
└── Off-Grid manufacturer n

Observe que preciso lidar não apenas com várias organizações, mas também com várias organizações com algumas camadas de profundidade.

Dentro de Off-Grid manufacturer 1 existem 5 grupos diferentes de usuários, a saber:

• Equipe técnica
• Equipe de finanças
• Investidores
• Público
• Clientes (ou seja, empresas de aluguel de plantas; essencialmente, uma suborganização)

Cada um desses grupos tem necessidades muito diferentes em termos de visualização de dados e seria fantástico poder configurar painéis padrão aplicáveis ​​a cada grupo. Alguns grupos, como o pessoal da tecnologia, quero conceder acesso total para criar seus próprios painéis e poder representar graficamente qualquer coisa. O grupo público que quero bloquear completamente, enquanto todos os outros grupos estão em algum lugar entre esses dois extremos. Não quero que os grupos se intrometam ou tenham acesso aos painéis ou fontes de dados uns dos outros.

Off-Grid manufacturer 1 precisa ser capaz de acessar todos os dados de todas as empresas abaixo dele, enquanto Plant hire company 1.1 precisa ser capaz de acessar todas as empresas abaixo dele, mas não ser capaz de acessar os dados de outras empresas contratadas empresas no mesmo nível que ela ou quaisquer organizações acima dela.

Um exemplo um tanto extremo eu sei, mas essa é a minha realidade!

A Solicitação de Recurso

Para simplificar o acesso ao painel, seria ótimo ter grupos de usuários e grupos de painel dentro das organizações e ser capaz de conceder direitos de visualização / edição aos painéis para cada usuário ou grupo de usuários. Subgrupos (ou suborganizações) com a capacidade de atribuir funções de administrador a determinados usuários dentro de um determinado grupo, com os direitos de administrador limitados a esse subgrupo (ou suborganização), também seriam úteis 😈

Se você tivesse que desenhar uma única organização, seria algo assim:

users     :  u1   u2    u3   u4   u5 |
              \ /    \ /     /   /   |
               |      |     /   /    |
user      :   ug1    ug2   /   /     |
groups    :    |   /  |   /   /      |
               |  /   |  /   /       |>- organisation
               | /    | /   /        |
dashboard :   dg1    dg2   /         |
groups    :    |      |   /          |
              / \    / \ /           |
dashboards:  d1 d2  d3 d4            |
                                   --

Observação:

  • O usuário 1 ( u1 ), por meio do grupo de usuários 1 ( ug1 ), só tem acesso aos painéis 1 e 2 ( d1 & d2 ).
  • O usuário 2 ( u2 ) pertence a ambos os grupos de usuários e, portanto, tem acesso a todos os 4 painéis.
  • Qualquer usuário pertencente ao grupo de usuários 2 ( ug2 ) tem acesso a ambos os grupos do painel e, portanto, também tem acesso a todos os 4 painéis.
  • O usuário 4 ( u4 ) pertence diretamente ao grupo de painel 2 ( dg2 ), não por meio de um grupo de usuários.
  • O usuário 5 ( u5 ) só tem permissão para visualizar o painel 4 ( d4 ). Pelo que entendi, este é o modelo de permissão atual em vigor nas organizações?

Uma organização com várias suborganizações seria mais ou menos assim:

                                  | sub-users     :  su1 su2  su3 su4
                                  |                    \ /     \ /  
                                  |                     |       |   
             sub-organisation 1 -<| sub-user      :    sug1    sug2 
            /                     | groups        :     |  \    |   
organisation                      |                     |   \   |   
            \                     |                     |    \  |  
     sub-organisation 2           | sub-dashboard :    sdg1    sdg2  
                                  | groups        :     |       |   
                                  |                    / \     /  \  
                                  | sub-dashboards:  sd1   sd2    sd3
                                   --

Observação:

  • o subpainel 2 ( sd2 ) pertence a ambos os grupos do subpainel e, portanto, está acessível a todos os 4 usuários.
  • sub-organisation 1 não tem acesso a nenhum dado pertencente a sub-organisation 2 ou a dados pertencentes a organisation , exceto seus próprios.

Cenários da vida real

Aqui está um cenário de uso para pintar um quadro de como eu vejo isso funcionando na realidade:

Tenho um cliente, Off-Grid manufacturer 1 , que constrói e vende sistemas fora da rede para empresas de aluguel de plantas, que por sua vez os contratam para empresas de construção que precisam de eletricidade em seus locais de construção (nota: 4 níveis de organização).

Off-Grid manufacturer 1 adquire um novo cliente, Plant hire company 1.2 , que deseja monitorar todos os sistemas fora da rede que compram de Off-Grid manufacturer 1 . Plant hire company 1.2 tem dois clientes, Building companies 1.2.1 & 1.2.2 , que desejam gerenciar seus próprios direitos de acesso de usuário.

Off-Grid manufacturer 1 criou um conjunto padrão de painéis para cada sistema fora da rede ao qual eles desejam dar acesso a todos os seus clientes.

Exemplo de administração de organizações:

  • Eu crio uma nova organização chamada Off-Grid manufacturer 1
  • Eu crio um único usuário dentro desta organização e concedo a ele direitos de administrador.

    Exemplo de administração de grupos:

  • O usuário administrador da organização Off-Grid manufacturer 1 cria 2 painéis.

    • Painel 1: mostra dados financeiros sensíveis para os contadores
    • Painel 2: mostra a tensão da bateria para os técnicos
  • O usuário administrador cria um novo grupo chamado "Finanças" e concede a ele acesso ao painel 1.
  • O usuário administrador cria um novo grupo denominado "Técnicos" e concede a ele acesso ao painel 2.

    Exemplo de administração de usuários:

  • O usuário administrador da organização Off-Grid manufacturer 1 cria um novo usuário (por exemplo, finance_user_1 ).

  • finance_user_1 é adicionado ao grupo "Finanças" (eles têm acesso imediato ao painel 1)

    Administradores de subgrupo / suborganização

  • O usuário administrador da organização Off-Grid manufacturer 1 cria um novo grupo ou suborganização (por exemplo, hire_company_1.2 ).

  • O usuário administrador cria um novo usuário chamado hire_company_1.2_admin .
  • hire_company_1.2_admin pode:

    • criar novos usuários (que são automaticamente limitados ao grupo hire_company_1.2 .

    • criar grupos de subusuários

    • atribuir subusuários a grupos de subusuários

    • criar painéis

    • criar grupos de subpainéis

    • atribuir painéis a grupos de subpainéis

typfeature-request

Comentários muito úteis

Eu sugeriria isolar as fontes de dados também e permitir que os administradores dos grupos gerenciem as suas próprias com segurança.

Todos 3 comentários

Eu sugeriria isolar as fontes de dados também e permitir que os administradores dos grupos gerenciem as suas próprias com segurança.

Proposta para grupos de painel e um modelo de permissões: https://github.com/grafana/grafana/issues/1611#issuecomment -287742633

feito na v5 por meio das pastas Equipes e Painel

Esta página foi útil?
0 / 5 - 0 avaliações