A password do administrador local é o segredo melhor partilhado de uma rede Windows. O técnico carrega a mesma imagem em sessenta máquinas, do balcão ao escritório, e todas ficam com o mesmo código. Quando um atacante toma o PC do balcão e recolhe essa password, obtém a chave de todas as restantes. O movimento lateral não precisa de falhas novas, apenas dessa credencial repetida.

O Windows LAPS existe para apagar este cenário. A função, nativa e actualizada no Windows 10, Windows 11 e Server 2019/2022/2025 desde as actualizações de Abril de 2023, rotaciona automaticamente a password do administrador local de cada máquina com um código aleatório e distinto, e guarda-o no Active Directory ou no Microsoft Entra ID, visível só a quem tem permissão para o ler.

AD ou Entra ID — decidir antes da política

O LAPS grava a password num único destino, definido pela política BackupDirectory. O valor 2 aponta para o Active Directory, o 1 para o Entra ID e o 0 desliga o backup. Máquinas só-domínio vão para o AD, só-Entra para o Entra, e híbridos escolhem um lado.

Critério LAPS no AD LAPS no Entra ID
Ponto de partida Domínio AD com DFL 2016+ para cifrar Dispositivo Entra-joined (o registado não serve)
Aplicação da política GPO com o modelo LAPS.admx LAPS CSP no Intune ou configuração local
Leitura da password Get-LapsADPassword Get-LapsAADPassword sobre o Microsoft Graph
Quem autoriza Delegação por OU (Set-LapsADReadPasswordPermission) A app registada precisa de DeviceLocalCredential.Read.All no Graph. Quem lê (portal ou Graph) passa por papéis Entra — ou papel personalizado com microsoft.directory/deviceLocalCredentials/password/read
Password em repouso Atributo ms-LAPS-* com cifra opcional Propriedade do dispositivo, com auditoria
Escolhe este quando Controlo local e delegações por OU O parque vive na cloud, sem domínio

Num domínio clássico, o AD fica sob controlo local: delegações por OU e cifra no atributo. Sem servidor nenhum, o Entra ID é a única porta e o Intune trata da política.

Activar o LAPS por GPO

No AD, o LAPS precisa de três ajustes antes da primeira política: o esquema, o direito de escrita da máquina e as permissões de leitura.

Preparar o Active Directory

Update-LapsADSchema
Set-LapsADComputerSelfPermission -Identity OU-Balcao
Set-LapsADReadPasswordPermission -Identity OU-Balcao -AllowedPrincipals @("kbase\G-LapsLeitura")
Set-LapsADResetPasswordPermission -Identity OU-Balcao -AllowedPrincipals @("kbase\G-LapsRotacao")
Find-LapsADExtendedRights -Identity OU-Balcao

O Update-LapsADSchema estende o esquema da floresta com os atributos ms-LAPS-* e corre uma única vez. O Set-LapsADComputerSelfPermission deixa a máquina actualizar a própria password. As delegações separam quem lê de quem força a rotação. O Find-LapsADExtendedRights lista quem pode ler atributos confidenciais: o resultado saudável é NT AUTHORITY\SYSTEM e Domain Admins.

Comprimento, complexidade e cadência

A política vive em Computer Configuration\Policies\Administrative Templates\System\LAPS. O modelo LAPS.admx já vem no Server 2025 e no Windows 11 actual, e merece uma cópia para o Central Store.

Definição Valor recomendado Efeito
BackupDirectory 2 grava no AD (1 = Entra, 0 = desliga)
AdministratorAccountName vazio o alvo é a built-in, identificada pelo RID
PasswordLength 14 de 8 a 64 caracteres
PasswordComplexity 4 maiúsculas + minúsculas + números + especiais
PasswordAgeDays 30 cadência máxima: Entra ID mínimo 7 dias, AD mínimo 1 dia (máximo 365 nos dois)
ADPasswordEncryptionEnabled 1 cifra o atributo, exige DFL 2016+
PostAuthenticationActions 3 roda e termina sessões após uso
PostAuthenticationResetDelay 24 horas de tolerância (0 desliga)

O LAPS processa a política de hora em hora. Para a aplicar já, corre Invoke-LapsPolicyProcessing na máquina. A gravação tem confirmação por destino: o 10018 quando o backup vai para o AD, o 10029 quando vai para o Entra ID — e a 10023 acusa uma política LAPS legada em cima.

Ler a password ao precisar dela

No Active Directory

Com a delegação de leitura, um cmdlet devolve a password e o prazo de validade.

Get-LapsADPassword -Identity PC-BALCAO01 -AsPlainText
# resultado esperado
ComputerName : PC-BALCAO01
Password : tR7@qQ+rkXEM0B29l3z
ExpirationTimestamp : 12/2/2026 10:14:02
Source : EncryptedPassword
DecryptionStatus : Success
AuthorizedDecryptor : KBASE\Domain Admins

O campo Source mostra EncryptedPassword e o DecryptionStatus confirma a descodificação pelo principal autorizado. Sem -AsPlainText, a password chega em SecureString, formato certo para scripts.

No Microsoft Entra ID

A leitura corre pelo Microsoft Graph. Primeiro, activa o LAPS nas device settings do tenant: por predefinição o Entra ID recusa gravações novas. Depois, um registo de aplicação com Device.Read.All e DeviceLocalCredential.Read.All, a permissão que entrega a password em claro. A variante ReadBasic.All fica-se pelos metadados.

Install-Module Microsoft.Graph -Scope AllUsers
Connect-MgGraph -TenantId <id-do-tenant> -ClientId <id-da-app>
Get-LapsAADPassword -DeviceIds PC-BALCAO01 -IncludePasswords -AsPlainText
# resultado esperado
DeviceName : PC-BALCAO01
Password : qX2!vG@7Rt#9LzW4u
PasswordExpirationTime : 12/2/2026 11:34:39

O -DeviceIds aceita nome ou ID. Com nomes duplicados no tenant, o cmdlet falha e o ID resolve.

Emergências — forçar a rotação

Suspeita de comprometimento manda tirar a password do ar já. Um cmdlet expira do lado do AD, o outro actua no dispositivo.

Set-LapsADPasswordExpirationTime -Identity PC-BALCAO01
# Status: PasswordReset (expirada no AD)
# no dispositivo, acelera o ciclo
Invoke-LapsPolicyProcessing
# no dispositivo, rotação imediata
Reset-LapsPassword

O Reset-LapsPassword manda o LAPS rodar de imediato no dispositivo, expirada ou não, e funciona nos dois destinos. O Set-LapsADPasswordExpirationTime só serve ao AD: põe a expiração no presente e o ciclo seguinte grava a password nova — o Entra ID não suporta expirar a password por timestamp, a rotinação forçada corre pelo Reset-LapsPassword no dispositivo. A confirmação chega pelo canal de eventos.

Armadilhas

  • Cadência não é rotação. Mudar PasswordAgeDays nada faz à password em curso: condiciona a próxima rotação e não dispara nenhuma. Para rodar já, os comandos da secção anterior.
  • Ler não é expirar. As permissões vivem separadas por predefinição. O Set-LapsADReadPasswordPermission entrega a password. O Set-LapsADResetPasswordPermission expira a credencial à distância, forçando a rotação sem a revelar. No Entra, a fronteira fica no Graph: ReadBasic.All dá metadados e Read.All dá a password.
  • LAPS antigo não é LAPS novo. O legacy usa o módulo AdmPwd.PS e o atributo ms-Mcs-AdmPwd sem cifra. O LAPS actual usa os atributos ms-LAPS-*, cifra opcional e cmdlets diferentes. Desde o Windows 11 23H2 o legacy está deprecado e o MSI deixa de instalar. Na migração, o modo de emulação honra as políticas antigas.
  • O Entra não recebe GPO. Máquinas unidas apenas ao Entra ID não processam GPO nenhuma. A política corre pelo LAPS CSP, de preferência via Intune, ou por configuração local sem MDM. Sem a activação de tenant, o backup nem arranca.

Cenário — a auditoria descobre a mesma password em 60 máquinas

A auditoria testa a credencial de administrador local numa amostra e acerta em 60 máquinas, do balcão ao servidor de impressão. A password andava numa folha Excel do helpdesk e o técnico novo usava-a há três meses. Quem toma uma máquina ganha as sessenta.

A resposta cabe num dia. Aplica o esquema, as permissões e a GPO pela OU das máquinas, e a primeira passagem do LAPS grava password nova e distinta em cada uma. Em seguida, o Get-LapsADPassword em dez amostras devolve dez passwords diferentes, e o Find-LapsADExtendedRights confirma que ninguém além do SYSTEM e dos Domain Admins lê atributos confidenciais. A password partilhada deixa de abrir qualquer máquina: quem a extraiu fica com o balcão e nada mais.

Fontes