top of page

Camunda 7 - Gerenciando acessos de usuários e de grupos através do Camunda Admin (Authorization).


Introdução


A gestão de acessos e permissões é um aspecto crucial para qualquer aplicação empresarial, especialmente quando se trata de sistemas complexos de automação de processos de negócio (BPM). O Camunda, uma das ferramentas BPM mais populares do mercado, oferece um robusto conjunto de funcionalidades para gerenciar autorizações de usuários e grupos, garantindo que apenas pessoas autorizadas possam acessar determinadas partes do sistema ou executar ações específicas. Neste post, vamos entender como utilizar o menu do Camunda Admin para configurar e gerenciar essas autorizações de forma eficaz, proporcionando um controle refinado sobre quem pode fazer o quê dentro da sua infraestrutura de processos.


Cenário:

Para entender a importância desta configuração de acesso, imagine o seguinte cenário:


Suponha que um usuário de negócio, curioso para entender como uma determinada instância de processo está se comportando, decide dar uma olhadinha. Ele navega pelo sistema, mas não está muito familiarizado com todas as funcionalidades. Ao terminar, ele quer sair da visualização daquela instância, e vê um botão com um "X". Ele pensa: "Ah, é só clicar aqui que eu saio". Só que, surpresa! Ao invés de sair, ele acaba de excluir a instância inteira do processo.


Agora, temos um problema enorme nas mãos. Todo o trabalho, dados e progresso daquela instância foram por água abaixo. E tudo isso porque faltou um controle de acesso adequado, que evitasse que um usuário sem o conhecimento necessário tivesse a permissão de excluir algo tão crítico.


É exatamente para evitar situações como essa que o gerenciamento de acessos no Camunda é tão essencial. Com o Camunda Admin, podemos definir permissões granulares, garantindo que apenas quem realmente precisa e sabe o que está fazendo possa acessar e modificar determinadas partes do sistema. Isso significa que os desenvolvedores terão as permissões necessárias para criar e ajustar processos, enquanto os usuários de negócio terão acesso limitado, suficiente para visualizar e interagir de forma segura, sem correr o risco de causar danos inadvertidamente.


Manter esses controles bem ajustados não é apenas uma questão de segurança, mas de manter a integridade e a eficiência do sistema. Vamos entender melhor como configurar essas autorizações e evitar grandes dores de cabeça, para manter tudo funcionando perfeitamente no Camunda.


Passo a Passo


1. Habilitar o "Authorization" no application.yml


Por padrão as autorizações vem desabilitadas no Camunda, ou seja, qualquer usuário criado será considerado um Admin, com acesso a tudo, e mesmo que você modifique as permissões, o mecanismo do Camunda "não irá olhar" para estas permissões... então para que elas funcionem, precisamos configurar e habilitar elas com um passo simples.

Em nosso projeto Camunda / Spring, vamos criar um arquivo application.yml no caminho src / main / resources... em seguida vamos adicionar nele o seguinte código:

Imagem contendo código para habilitar o authorization do Camunda no application.yml

Com isto o Camunda já irá verificar as permissões de acesso, e qualquer usuário que não esteja no grupo de camunda-admin não terá acesso a nada.


ATENÇÃO: A partir desta configuração, todo usuário criado não terá acesso à nada, e precisará ser colocado em algum grupo com acessos definidos, ou definir os acessos deste usuário manualmente no Camunda Admin.

2. Criando um grupo.


Vamos criar um grupo de usuários e precisamos definir o Group ID, o nome do grupo e o group type, podemos colocar qualquer nome que faça sentido para o grupo que estamos criando, a escolha é livre. Neste nosso exemplo, o Group ID será "onlyCockpitReader"... O Group Name será "Cockpit reader"... O Group type será "Business"...


Acesse o menu do Camunda Admin, e depois no menu "Groups", clique em "Create new group".

Imagem com o Groups do Camunda, e uma seta apontando para o Create new group.

Defina o Group ID, o Group Name e o Group Type com algum nome de sua escolha e que faça sentido para o grupo que está criando, neste caso como é um grupo que terá apenas acesso de leitura, e exclusivamente ao Cockpit, definimos conforme abaixo:


Imagem demonstrando a criação de um novo grupo no Camunda Admin.

Com isto, nosso novo grupo está criado e pronto para ser configurado.


3. Adicionando um usuário ao grupo.

Vá até o menu "Users", selecione o usuário que deseja adicionar ao grupo, no menu a esquerda selecion "Groups" e clique em "Add to a group +".


Imagem apontando para um botão de Add to a group +, na tela de usuarios, a qual serve para adicionar os usuarios para um grupo especifico.

Selecione o novo grupo que criamos para adicionar o usuário a este grupo e clique em "Add groups".


Imagem mostrando a tela onde selecionamos o grupo que queremos adicionar nosso novo usuario no Camunda.

Ok! Agora nosso usuário foi adicionado ao grupo "Cockpit reader". Mas ainda precisamos configurar os acessos de nosso novo grupo.


4. Configurando os acessos e autorizações no novo grupo.

4.1 Definindo acesso apenas ao Cockpit:

No Camunda Admin, vá em "Authorizations", e logo em seguida "Manage authorizations".

Imagem mostrando o menu do Camunda Admin, com uma seta apontando para o Authorizations, e para o Manage Authorizations.

Imagem mostrando o menu principal do Manage Authorizations, onde é permitido definir os acessos granulares aos usuarios ou grupos.

Ao acessar o Manage Authorizations, veremos um menu lateral, que permite definir o acesso granular para cada elemento disponível no Camunda. Por exemplo, no "Application", definimos se queremos que o usuário ou grupo acesse o Cockpit, o Admin e o Tasklist, ou apenas o Cockpit. No Process Definition, podemos definir se queremos que o usuário / grupo consiga verificar todos os fluxos de processo, ou apenas algum fluxo específico.

No Process Instance conseguimos permitir acesso somente de leitura das instâncias em execução, ou se queremos que usuário tenha controle total, inclusive de exclusão e modificação das instâncias e das variáveis de processo. Mas como podemos ver, temos como gerenciar acessos de todos os níveis possíveis dentro de nossa aplicação, e isso permite um grande controle e segurança ao definirmos as autorizações corretamente. Mas seguimos com nossa missão... clique no "Application" e vamos definir acesso apenas ao Cockpit, selecionando o grupo e digitando "cockpit" no Resource ID.

Imagem mostrando a configuração para o menu Application.

ATENÇÃO: No campo User / Group, o que precisa ser digitado aqui é o ID que foi definido para o grupo e não o Nome do grupo. ATENÇÃO²: Certifique-se de que o simbolo ao lado do id digitado seja o dos "quadradinhos" que se referem ao grupo e não o do "boneco" que se refere a um usuário único, pois caso não esteja correto, não irá funcionar.


4.2 Definindo acesso apenas de leitura aos Process Definitions (Desenhos de processo).

No menu à esquerda, selecione Process Definition, coloque o nome do grupo que deseja definir o acesso de leitura, clique no ícone do "lápis", e selecione apenas o "READ". Isto permitirá que este grupo específico possa apenas visualizar os fluxos, sem poder fazer retry, nem nada.

Imagem mostrando como configurar o menu de acesso ao Process Definition do Camunda.

Porém no exemplo acima, ele apenas poderá visualizar os desenhos implantados, e não poderá visualizar as instâncias rodando, então precisamos também dar acesso de leitura às instâncias e às variáveis dela, marcando os checkbox de READ, READ_INSTANCE e READ_INSTANCE_VARIABLE.

Imagem mostrando a configuração de permissões de acesso do process definition no Camunda.

4.3 Definindo acesso apenas de leitura aos Process Instances (Instâncias de processo).

Por ultimo, no menu à esquerda selecione Process Instance, e defina o acesso de READ.

Imagem demonstrando como definir acesso somente de leitura ao Process instance.

Pronto! Agora temos um grupo de usuários com permissão apenas de leitura ao Cockpit e aos fluxos de processo, bem como a possibilidade de visualização das instâncias que estão em execução e suas variáveis de processo... sem precisarmos ter medo do usuário excluir algo sem querer, pois ele não terá acesso!



Boas práticas...


Eu particularmente, prefiro sempre definir as autorizações em grupos específicos, e não usuário por usuário, pois facilita o controle de acessos quando precisamos modificar algo.Por exemplo, imagine que temos um usuário de negócio, e queremos dar acesso apenas de leitura para ele, se criarmos um grupo por exemplo "businessUsers" e definirmos o acesso deste grupo apenas como "leitura", todo novo usuário de negócio que entrar podemos incluir neste grupo, que terão o mesmo nível de acesso já configurado. Caso contrário, teríamos que ajustar os acessos para cada usuário individualmente... trabalheira desnecessária, não?


Mas caso tenha algum usuário que você queira definir um acesso exclusivo, você pode definir acesso à nivel de usuário sem problema algum... o Camunda te permite um controle bem granular dos acessos!


Dica:


Em alguns momentos, iremos querer dar acesso à praticamente tudo na aplicação, porém gostaríamos de desabilitar a permissão de apenas um ou dois recursos para um usuário específico, para isto temos a opção "DENY". A opção "ALLOW" é para permitir acesso aos recursos marcados, a opção DENY é para negar acesso ao recurso específico. Então sendo assim, imagine que temos um usuario de ID "william", e este usuário está dentro do grupo de cockpitFullAcess, que garante acesso total às instancias de processo, inclusive DELETAR elas... porém este usuário específico não quero que ele possa excluir as instâncias. Então eu coloco ele no grupo com acesso completo, mas crio uma nova regra para NEGAR a permissão de delete, incluindo a regra de DENY (negar) apenas o DELETE para este usuário, conforme abaixo:

Imagem mostrando como configurar a negação de um usuário unico no Camunda.

Conclusão


Agora você já sabe controlar totalmente as autorizações de acesso de seus usuários no Camunda, sugiro que sempre defina esta etapa com muita atenção pois ela é crucial para a segurança da sua aplicação e dos processos que estão em execução.

LINKS RELACIONADOS: Camunda Documentação oficial - Authorization Service: https://docs.camunda.org/manual/7.21/user-guide/process-engine/authorization-service/ Camunda Documentação oficial - Authorization Management:


Quer conhecer um pouco mais sobre esta ferramenta e outras tecnologias? Nos siga nas redes sociais @gerandocodigo (instagram / youtube / tiktok / facebook).


Comments


bottom of page