Agora que as empresas estão a adotar a computação em nuvem como parte do seu modelo de negócio, uma grande percentagem está a optar por ligar o seu ambiente do Active Directory local ao seu equivalente na nuvem, o Azure Active Directory da Microsoft. Ao estender o seu AD local para o Azure AD, tem duas opções quanto à forma como pretende que os utilizadores locais se autentiquem no serviço na nuvem: federação de identidades e autenticação direta com o Azure AD. Embora a autenticação direta seja, tecnicamente, o método mais simples dos dois, requer a ativação de uma funcionalidade conhecida como sincronização de palavras-passe. E penso que a sincronização de palavras-passe é uma funcionalidade bastante mal compreendida que merece uma explicação mais aprofundada.
A Microsoft oferece duas formas de gerir a autenticação no Azure AD: a federação de identidades ou a autenticação direta através do próprio Azure AD. A federação de identidades com um serviço de federação, como o AD FS ou o PingFederate, proporciona o início de sessão único no Azure AD, redirecionando os utilizadores do serviço na nuvem de volta para o seu AD local para autenticação. A outra opção, a autenticação direta no Azure AD, requer que o nome de utilizador e a palavra-passe do utilizador sejam armazenados localmente no serviço na nuvem. Para as empresas, isto deve ser feito com a funcionalidade de sincronização de palavras-passe do serviço AD Connect da Microsoft; nenhum fornecedor externo oferece uma funcionalidade equivalente.
O que é a sincronização de hash de palavra-passe e porquê utilizá-la?
Na sua forma mais simples, ao nível de um esboço num guardanapo de festa, a sincronização de hash de palavras-passe (uma descrição mais precisa, que explicarei abaixo) copia a palavra-passe do utilizador do AD para o Azure AD a cada dois minutos. Isto permite que os utilizadores iniciem sessão no Azure AD com o mesmo ID de utilizador e palavra-passe que utilizam para iniciar sessão no AD. A Microsoft denomina este padrão «same sign-on». É diferente do «single sign-on», porque, com a sincronização de hash de palavra-passe, os utilizadores serão solicitados a iniciar sessão no Azure AD, para além de qualquer início de sessão corporativo que já tenham efetuado.
Por que razão se quereria utilizar a sincronização de hashes de palavras-passe? Principalmente porque é mais simples de implementar do que um serviço de federação. A Microsoft precisava de disponibilizar uma forma fácil de integrar utilizadores do AD local com o Azure AD, e a sincronização de hashes de palavras-passe faz isso sem a necessidade de um serviço de federação de alta disponibilidade com vários servidores.
E a solução mais simples provou ser popular; cerca de 50% das organizações que sincronizam com o Azure AD utilizam a sincronização de hash de palavra-passe. Desses 50%, metade são organizações de pequena e média dimensão. A sincronização de hash de palavra-passe fornece um caminho suave para que estas organizações passem para uma infra-estrutura de TI baseada na nuvem ou apenas na nuvem, porque os utilizadores já estão a autenticar directamente com o serviço do Azure AD.
Outra vantagem da sincronização de hashes de palavras-passe é que, ao contrário da federação, não depende de um serviço de federação externo para processar as autenticações. Na verdade, a Microsoft disponibiliza a sincronização de hashes de palavras-passe para além da federação, para que possa ser utilizada como alternativa caso o seu serviço de federação fique indisponível.
Quão segura é a sincronização de hash de palavras-passe?
Note-se que descrevo esta funcionalidade como «sincronização de hashes de palavras-passe» – e não como «sincronização de palavras-passe». Trata-se de uma distinção importante. As palavras-passe em texto simples não são sincronizadas entre o AD DS e o Azure AD. Não só não é uma boa ideia, como nem sequer é tecnicamente possível, porque o Active Directory não dispõe das palavras-passe em texto simples. Quando um utilizador cria ou atualiza a sua palavra-passe no AD, esta é armazenada como um hash MD5 unidirecional nos controladores de domínio (DCs) do domínio. É este hash que é sincronizado com o Azure AD e armazenado no repositório de credenciais do serviço.
Como é que isto funciona, exatamente? Reuni os passos seguintes a partir da publicação no blogue de Alex Simon intitulada «AAD Password Sync, Encryption, and FIPS Compliance» e de algumas outras fontes:
- As palavras-passe de utilizador são armazenadas como um hash não reversível nos Controladores de Domínio (DCs) do Active Directory do Windows Server. Quando o agente de sincronização de palavras-passe no AD Connect tenta sincronizar o hash da palavra-passe, o DC encripta o hash. A encriptação é efectuada com uma chave derivada da chave de sessão RPC através da salga da mesma. A derivação da chave é a seguinte [onde SaltedEncryptionKey = MD5 (chave de sessão RPC, sal aleatório de 128 bits)]. O CD também passa o sal para o agente de sincronização utilizando o protocolo de replicação.
- O hash da palavra-passe original é replicado (utilizando o protocolo de replicação do CD) do CD para o Password Sync Agent.
- O Password Sync Agent desencripta o hash encriptado derivando a chave conforme descrito acima. O agente de sincronização de palavras-passe utiliza o MD5 para efectuar a derivação da chave, uma vez que a derivação tem de ser idêntica à derivação que o DC efectuou (quando encriptou os dados). E o MD5 é o nível mais elevado disponível para esta acção no protocolo de replicação do CD das implementações existentes do Active Directory do Windows Server.
- Uma vez efectuada a desencriptação, o agente de sincronização pega no hash da palavra-passe original resultante e transforma-o num hash SHA256 utilizando o algoritmo de derivação de chaves PKDF2, tal como definido no RFC 2898.
- Em seguida, o Password Sync Agent sincroniza esse hash de palavra-passe com hash SHA256 através do cabo (um Service Bus relay encriptado dedicado ao inquilino do Azure AD) para o Azure AD.
- Quando a cópia com hash SHA256 do hash da palavra-passe original chega ao Azure AD, o Azure AD encripta o hash com o algoritmo AES antes de o armazenar na base de dados na nuvem.
A única coisa que atravessa o fio no caminho para o Azure AD é uma cópia com hash SHA256 do hash da palavra-passe original. O uso de MD5 pelo agente de sincronização de senhas é estritamente para compatibilidade do protocolo de replicação com o DC e só é usado, no local, entre o DC e o agente de sincronização de senhas.
Desvantagens da sincronização de hash de palavra-passe
Do ponto de vista do utilizador, a desvantagem mais óbvia é que este tem de introduzir as suas credenciais empresariais uma segunda vez, independentemente de estar ligado à rede da empresa ou fora dela, numa rede pública. No entanto, é possível reduzir estes inícios de sessão marcando a caixa de seleção «Manter-me ligado» (KMSI). Ao marcar esta opção, é definido um cookie de sessão que contorna a autenticação durante um curto período. A sua equipa de segurança deverá avaliar esta questão, e o comportamento do KMSI pode ser ativado ou desativado pelo administrador do Azure AD.
Do ponto de vista do profissional de identidade, o problema com a sincronização do hash da palavra-passe é que se está a distribuir a palavra-passe por mais do que um local para fins de autenticação. Em contrapartida, a federação redireciona todos os pedidos de autenticação de volta para o fornecedor de identidade. A Microsoft envidou todos os esforços para garantir que o processo seja seguro, mas é legítimo colocar questões sobre o ciclo de vida da palavra-passe.
Quando deve utilizar a sincronização de hash de palavra-passe?
Há um caso de utilização em que tem de utilizar a sincronização de hash de palavra-passe: se optar por implementar os Serviços de Domínio do Azure AD. Esta funcionalidade cria um controlador de domínio como um serviço que as aplicações do Azure (tais como VMs que executam aplicações dependentes do AD) podem utilizar. No entanto, para que estes DCs sejam funcionalmente equivalentes aos DCs locais, têm de ter hashes de palavra-passe de utilizador e, por isso, necessitam de sincronização de hash de palavra-passe para os colocar no Azure.
A sincronização de hashes de palavras-passe é uma solução popular para integrar as suas identidades locais com o Azure AD. Não é tão elegante como utilizar a federação de identidades, mas é mais simples. Tal como acontece com qualquer decisão de conceção, certifique-se de que ponderou bem os pontos fortes e fracos desta solução e como estes se aplicam à sua situação.
