Épico 40837 - Identidade: Grupos de usuários
Descrição
Pai: Vitor
Definições NEPS
Desenho do serviço - Identididade - Autenticação - Autorização - Grupos
1. Descrição da ideia (O quê)
Permitir organizar os usuários em grupos para associar com regras do controle (autorização) de serviço fornecido pelo firewall De imediato para aplicação o WEBFILTER e no futuro outros módulos, como o Firewall, podem usar também. (Nosso concorrente Sophos já tem regras de Firewall por usuário)
2. Por que implementar? (O porquê)
Gerar praticidade ao cliente para gerenciar regras que são aplicadas a um conjunto de usuários. No cenário atual do produto ele tem de cadastrar vários usuários na mesma regra, ou criar várias regras. É prático para ambientes com poucos usuários, mas é limitante em ambientes com muitos usuários ou que tem um autenticação centralizada.
3. Situações contextuais
Cliente tem grupos de usuários cadastrados e organizados do Windows Active Directory (Acessível via LDAP). Deseja liberar os usuários pertencentes ao “Grupo: Financeiro” para uma acesso através de uma regra do Webfilter, assim todos usuários pertencentes do grupo respeitam essa regra.
- Exemplo: Liberar sites de banco para todos usuários do “Grupo: Financeiro”
- Sem a necessidade de cadastra usuário por usuário na regra do Webfilter
- Depois de configurada o grupo + link com grupo externo, associado a regra de controle, não há necessidade de entrar na Interface de Administração do Firewall para adicionar usuário no grupo
- A equipe de apoio suporte N1 do cliente, que tem acesso ao gerenciamento do Windows Active Directory, consegue cadastras os usuários no grupo correto sem precisar ter acesso de administrador no FW
Cliente tem um grupos de usuários desorganizados no LDAP, e quer aplicar bloquear alguns sites para um conjunto de usuários selecionados que estão no ‘Grupo Operação’
- Exemplo: Bloquear sites de jogos para alguns usuários que estão abusando
- Deseja selecionar usuário por usuário, para criar o Grupo no Firewall
Cliente com cadastro de usuários locais no Firewall
- Exemplo: Que liberar sites do governo para a contabilidade criando um grupo local: Contabilidade e adicionando os usuários locais dentro
- Gostaria permitir administração limitada ao FWFLEX ao N1, só para gerenciar os grupos, sem acesso as regras / políticas do Webfilter.
4. Problema que resolve
- Praticidade no gerenciamento de conjunto de usuários
- Depois do usuário autenticado o firewall, começa a integrar mais com o ambiente existente, com enfoque de controle de IDENTIDADE (Identificação do usuário) para autorização.
- Separação da configuração das políticas/regras X conjunto de usuários que será aplicado
5. Clientes afetados
Parceiros e cliente final
6. Expectativas dos clientes
- Praticidade para gerenciar controles de autorização, menos trabalho do que ter de adicionar usuário por usuário.
- Sincronismo automático dos usuários e membros do grupo quando os grupos estão linkados com fontes externas ou internas
- Possibilidade de gerenciar usuários membros dos grupos em diretório externo (Quando tem), e não no firewall
- Possibilidade de criar grupos locais, com usuários selecionados.
- Limitar o acesso ao suporte N1 ao gerenciamento aos grupos, e não as políticas
8. Restrições e limitações
- Risco alto de impactar na performance do serviço
- É uma verificação adicional, pode impactar na performace do webfilter.
- Recomendado avaliar e documentar a definição da arquitetura do motor
9. Critério de sucesso
- Permitir usar o conceito de grupos de usuários no futuro em outros módulos, como no Firewall (baseado no IP / sessão SSO)
- Performance na consulta dos membros para não impactar no serviço de infra provido
- Consulta do grupo não impactar na autenticação SSO
- Capacidade da interface mostrar que grupo usuário faz parte
Requisitos e especificações de infra
1. Laboratório
Não será realizado laboratório.
A parte técnica relacionada à consulta de usuários no LDAP e usuários locais já está em funcionamento no módulo “Fontes de Autenticação”, o Épico consiste no motor para agrupar os usuários e autorizá-los dentro dos módulos.
2. Caso de uso
Atualmente trabalhamos somente com o módulo “Fontes de Autenticação” para realizar a criação de usuários, autenticação no LDAP e agrupamento destes usuários.
Cada Fonte de autenticação pode ser associada com os módulos SSO e os usuários também podem ser utilizados nas regras do Webfilter.
Porém, além de não ser prático, o módulo Fontes de Autenticação está relacionado à autenticação do usuário. Que é basicamente validar usuário e senha com algum banco de informações.
Os grupos têm a função de além de agrupar usuários, fazer a autorização deles. Então a ideia é poder agrupar vários usuários (seja selecionando usuários de várias fontes, selecionando somente alguns usuários de uma fonte, etc) e depois utilizar o grupo dentro dos módulos para autorizar alguma ação (Webfilter, SSO, regras de firewall).
Fluxo de uso
- Desenho do fluxo de uso > Expectativas de uso > Cadastro de Grupos
Criar nova tela com o cadastro de Grupos. Sugestão inicial: Administração > Grupos
O usuário irá adicionar novo grupo e terá dois Steps:
- Step1 : Nome, Método de usuários e Fontes de autenticação
Método de usuários: Todos, Selecionados ou Exceção. O funcionamento de cada um está descrito no mind.
Fontes de autenticação: Flags para associar as fontes de autenticação ao grupo. Podem ser vinculadas mais de uma fonte e de modos diferentes (LDAP ou Local) ao mesmo grupo.
- Step2 : Usuários
Mostra usuários encontrados nas fontes de autenticação e formato para incluir ao grupo. Dependendo do Método escolhido, a exibição nesse step será diferente.
Todos: Busca todos os usuários das fontes de autenticação e exibe como usuários que fazem parte do grupo de forma somente leitura.
Selecionados: Busca todos os usuários das fontes da autenticação e exibe como “Usuários”, e em outro campo/coluna com os selecionados. Obs: O fato de colocar em campos/colunas separadas facilita depois para vermos os que fazem parte do grupo. Se fizermos somente um select do lado do usuários e tivermos 200 usuários, fica ruim de ver os que estão selecionados. Seguindo essa lógica, seria legal poder selecionar vários e mover pro campo/coluna de Selecionados.
Exceção: Busca todos os usuários da fonte de autenticação e exibe como “Usuários”, e em outro campo/coluna com os excluídos do grupo. Obs: É uma lógica invertida do “Selecionados”, mas seria legal se os campos/colunas seguissem a mesma lógica visual. Exemplo: Na esquerda são os que não fazem parte e na direita os que fazem parte, então no método Exceção todos os usuários seriam colocados na direita e o usuário moveria pra esquerda os que não quer que façam parte do grupo.
Relação com outros módulos
- Dentro da instância SSO, será necessário ajustar para utilizar os grupos e não mais as fontes de autenticação.
- Dentro do Webfilter, será necessário adicionar a opção “Grupo” na Origem das regras dentro da política.
- Validar se há outro módulo que interage diretamente com as Fontes de Autenticação.
3. Requisitos e regras de negócio
- O motor de autenticação deve efetuar a validação da permissão (autorização) antes de realizar a autenticação nas fontes.
- Atualizar usuários grupo a cada X tempo ou criar botão para para atualizar os usuários do grupo. Ao adicionar ou remover usuários na fonte de autenticação, eles devem aparecer no grupo ou desaparecer. Podemos analisar a estratégia mais prática para tratar esta atualização inicialmente.
- No step de Usuários, validar a possibilidade de “separar” os campos/colunas de acordo com as fontes de autenticação. Ex: Se forem selecionadas 3 fontes de autenticação, separar cada fonte em uma seção. Assim o usuário consegue saber melhor “de onde veio” o usuário.
- Exibir os usuários conforme o cadastro na tela de detalhes do grupo.
- Ordena os usuários da aba “Usuários” de forma alfabética.
- Possibilidade de filtrar/pesquisar os usuários dentro das listas de campos/colunas. Ex: Se for selecionada uma fonte de autenticação com 300 usuários e o cliente quer encontrar um usuário específico para selecionar.
- As configurações do grupo não podem “sumir” caso haja perda de comunicação da fonte de autenticação LDAP com o servidor de destino.
4. Expectativas de testes
- Criar um grupo de usuários e selecionar duas fontes de autenticação (Uma local e uma LDAP), utilizando e alternando entre os 3 métodos possíveis.
- Associar grupos de usuários em uma instância SSO e testar a autenticação do usuário. Adicionar o usuário ao grupo e tirar para validar o funcionamento.
- Criar regras do webfilter colocando o grupo de usuários como origem. Autenticar no SSO com o usuário e realizar testes de acesso casando com a regra criada.
- Apagar grupo de usuário que foi criado e associado para ver o que acontece nos módulos onde houve associação.
- Criar novo usuário na fonte de autenticação (Local e LDAP) e ver como o grupo irá ser comportar nos 3 métodos. Validar pontos: como irá ficar na interface do produto e autenticação.
- Excluir um usuário da fonte de autenticação e ver como o grupo irá ser comportar nos 3 métodos.
- Validar performance da utilização do webfilter com usuários autenticados.
5. Referências de outras ferramentas
Como outras ferramentas trabalham para resolver o problema?
- Sophos Firewall: Group membership behavior with Active Directory Já estão aplicando em regras de firewall, previsto para gente mais para frente
Definições para desenvolvimento
1. Telas
Novas:
- Listagem de grupos de usuários;
- Detalhes de grupos de usuário;
- Form Grupos de detalhes.
OBS: Ao deletar uma fonte de autenticação, remover associação com o grupo
Alterações:
- Alterar cadastro instância SSO - De fontes de autenticação -> grupos de usuário; (detalhes/lista/form)
- Alterar cadastro instância OpenVPN - De fontes de autenticação -> grupos de usuário; (detalhes/lista/form)
- Adicionar nas regras do webfilter grupos de usuários;
2. Praticidade para implantação/wizard
Não precisa estar no wizard. Fontes de autenticação são cadastradas após o wizard.
3. Banco
- Nova tabela: Grupos de Autenticação;
- Nova tabela: Usuários selecionados do Grupo de Autenticação;
- Migração Instâncias OpenVPN; (lista JSON no banco)
- Migração Intâncias SSO; (lista JSON no banco)
- Adicionar índice na tabela
sso_logins
.
Otimizar os índices
Para migrar as fontes de autenticação das instâncias:
- Utilizar selecionando as fontes de autenticação já cadastradas/relacionadas com a instância e utilizar o método TODOS para incluir todos os usuários das fontes selecionadas.
- Alterar a relação da instância com o grupo. https://git.itflex.com.br/itflex/itflex/-/blob/master/server/backend/itflex_openvpn/instances/templates/openvpn_instance_client_auth.j2
4. Conf
Nada a alterar.
5. Prov
- Alterar script de autenticação OpenVPN para ser por Grupos em vez de Fontes;
6. Motor
- Adicionar validação por grupos de usuários a validação das regras por grupo no Webfilter.
- Alteração no login das instâncias SSO. (validação pelos grupos em vez das fontes)
- Sincronização de usuários LDAP com os usuários do grupo.
-
- Tem que ter os usuários locais.
7. Serviços (INFRA)
- Integração com LDAP / AD;
8. Módulos relacionados
- OpenVPN
- SSO
- Webfilter