# SSO, é realmente uma boa ideia?

Ao discutir sobre identidade, SSO é um tema bem recorrente, pela simplicidade gerada ao usuário final e pelos seus "benefícios" de segurança. Mas será que uma implementação de SSO é sempre a melhor escolha? Ou melhor, **será que realmente é seguro**?

---

# O que é o SSO?

![Imagem retirada de: https://frontegg.com/guides/single-sign-on-sso](https://frontegg.com/wp-content/webp-express/webp-images/uploads/2023/04/Inner-graphic_3-1024x528.png.webp align="left")

**SSO** ou ***Single Sign-On***, é o termo que representa uma configuração que pode ser realizada em seu *identity provider* e que permite que aplicações que estão "plugadas" no *IdP* compartilhem a mesma sessão, não havendo a necessidade do usuário realizar múltiplas autenticações.

Essa funcionalidade gera ao usuário mais conforto ao utilizar as aplicações, uma vez que como mencionado, o mesmo não precisará utilizar suas credenciais a cada aplicação que estará acessando.

### Requisitos para implementação do SSO

A peça chave e componente principal para configuração do *SSO* é o *IdP* (*Identity Provider* - Provedor de Identidade). É necessário que as aplicações que devem sofrer o impacto da aplicação da política estejam federadas no mesmo *IdP* e que permitam a configuração do SSO.

Entendido como o *SSO* funciona, vamos discutir e analisar os dois pontos de vista, o do **usuário** e o dos **times de segurança**.

---

# Benefícios do SSO (para o usuário)

É comum que nas grandes organizações, a lista de soluções utilizadas pelos diversos departamentos e áreas chegue às centenas. Os times utilizam uma série de soluções com o propósito de conseguir realizar um trabalho mais efetivo e que entregue mais valor à organização e aos clientes, enquanto a lista de aplicações utilizadas só cresce conforme o tempo. Soluções novas são contratadas, soluções antigas são descontinuadas, e isso ocorre em todas as áreas, então se pensarmos nos períodos entre a contratação de uma nova solução e a desativação de uma solução antiga, a lista de aplicações que são utilizadas pelos usuários é enorme.

Saber que existem áreas que utilizam dezenas de ferramentas diariamente para a realização de atividades triviais nos permite avaliar que exigir aos usuários que iniciem um novo processo de autenticação em cada uma das ferramentas toda vez que forem acessá-las, deixará o trabalho muito mais complicado e cansativo, perdendo uma quantia de tempo valiosa, onde poderiam realizando atividades que geram valor para a organização.

Pensando nessa necessidade dos times de negócio, o SSO se apresenta como uma solução extremamente viável porquê:

* **Simplicidade**: os usuários autenticam em uma das ferramentas e sua sessão será compartilhada com as outras soluções que estiverem plugadas ao mesmo *IdP*;
    
* **Segurança ao usuário**: por "expor" suas credenciais apenas uma vez (no momento da autenticação), a implementação do SSO é considerada segura do ponto de vista do usuário, já que o mesmo corre menos riscos de ter sua senha visualizada e obtida de alguma forma por um agente externo.
    

Os benefícios acima apresentados já nos permitem ter uma ideia do valor que a implementação do SSO pode trazer para a organização. Isso sem nem ter mencionado os benefícios indiretos, como por exemplo:

* **Redução de chamados ao suporte**: boa parcela dos chamados abertos nos suportes das empresas são sobre temas relacionados à senha. Usuários que não precisam lembrar inúmeras senhas para diferentes aplicações, não costumam precisar do suporte para reinicialização das credenciais;
    
* **Custos com equipes de T.I**: optando por adotar uma estratégia moderna e que não necessita de gerenciamento, é possível que sua empresa consiga reduzir o orçamento dos times que costumam dar suporte à essas ferramentas, uma vez que o controle de acesso é tratado de maneira completamente centralizada no *IdP*.
    

Após compreender os benefícios gerados para os usuários, vamos estudar a situação dos times de segurança.

---

# É seguro?

A implantação do *SSO* sempre foi tratada como uma boa prática pelos times de segurança, porém com a evolução das técnicas de ataque, é importante que nós, profissionais de cibersegurança e segurança da informação, não fiquemos "presos" ao que um dia foi senso comum entre os profissionais da área e realizemos novas avaliações de acordo com os cenários existentes.

Um motivo que de um ponto de vista pode ser considerado um benefício, do outro pode ser interpretado como um risco:

* **Entrada única das credenciais**: o uso de apenas 1 conjunto de credenciais para acesso à múltiplos sistemas pode trazer grande perigo aos recursos de uma organização. Caso esse conjunto de credenciais esteja em posse de partes indevidas, o acesso "irrestrito" às aplicações poderá expor a organização a danos extensos se não for identificado rapidamente.
    

Temos uma outra questão, os ***tokens***.

* **Token Theft**: ataques do tipo *token theft* garantem ao atacante acesso aos recursos via obtenção indevida de um *access token*. O atacante utiliza técnicas para capturar o *access token* fornecido ao usuário e o utiliza para se passar pelo receptor original do *token*.
    

Outra questão que agrava possíveis problemas gerados pelo comprometimento das credenciais é o tempo de sessão configurado.

* **Tempo de sessão**: sessões configuradas para durar grandes períodos de tempo possibilitarão ao atacante, em posse de uma credencial ou token roubado, acesso às aplicações que compartilham a mesma sessão pelo período de tempo configurado.
    

Pelo fato das aplicações estarem conectadas em um mesmo componente (*IdP*), todas as preocupações de segurança giram em torno dessa solução.

A existência de preocupações de segurança não elimina a possibilidade de utilizar a solução de maneira segura, aplicando os controles necessários e recomendados pelas equipes de segurança.

---

# Reforçando a segurança

Procurando mitigar (ou pelo menos reduzir a possibilidade) as preocupações descritas anteriormente, algumas soluções são as seguintes:

* **Redução do tempo de sessão**: configurar as sessões para exigir uma re-autenticação dos usuários de maneira mais frequente (mas não tão frequente, pois pode prejudicar as atividades de negócio) possibilita reduzir a efetividade dos ataques de *roubo de credenciais* e *token theft*;
    
* **Monitoramento das atividades**: políticas de análise de atividade auxiliarão os times de segurança a captar atividades suspeitas em suas aplicações, como acessos em localidades atípicas, ataques de *password spray*, entre outras possibilidades (algumas ferramentas como o Entra ID da Microsoft permitem que seja solicitado ao usuário um "reforço" na autenticação caso alguma atividade atípica seja identificada);
    
* **Uso de MFA**: a utilização de uma ferramenta de *multi-factor authentication* possiblita que os usuários realizem a autenticação de maneira mais segura e caso somado à uma implementação da funcionalidade *passwordless*, o perigo gerado pelo roubo das credenciais é minimizado, devido à eliminação de seu uso;
    
* **Token Protection** **(Entra ID)**: funcionalidade existente na solução de IAM da Microsoft, o *token protection* visa mitigar os danos causados por um ataque do tipo *token theft*. Associando o *access token* ao dispositivo para qual foi emitido, os atacantes não consiguirão utilizar o *access token* caso tomem posse do mesmo;
    
* **Seleção das aplicações**: escolher corretamente as ferramentas que devem ter o *SSO* implementado também pode auxiliar na redução de problemas gerados por ataques bem sucedidos. Ferramentas que contém informações de negócio, confidenciais e estratégicas para a organização, devem ter os controles de segurança apresentados acima configurados de maneira mais rígida.
    

Vimos que é possível manter a segurança dos acessos e ao mesmo tempo fornecer conforto aos usuários das aplicações, porém é importante ter em mente a necessidade de avaliar os **benefícios** e os possíveis **males** causados por problemas de segurança não captados e solucionados.

---

# Conclusão

> *SSO* é SIM uma boa prática para o ecossistema de IAM (*Identity and Access Management*), mas isso não quer dizer que não tenha perigos.
> 
> A implementação do ***SSO*** com os devidos controles de segurança pode gerar à organização diversos benefícios, tanto aos times de segurança quanto aos times de negócio!

---

Espero que você tenha gostado do texto e que eu tenha conseguido te fornecer visões diferentes de um tema que por muito tempo foi considerado "unânime" entre os profissionais da área.

Até logo!
