| Data de elaboração | 31/01/21 |
| Responsável pelo estudo | João Cícero Romão (Assessor); Raaby Liandry (Assessora). |
| Equipe do estudo | Guardiões da Galáxia |
| Alvo | Sauron |
| Origem | Implementação: Descrever o processo de análise e indicar a melhor alternativa para implantação da USER STORY “Eu como SETIC , preciso que o Sauron informe ao usuário que ele está bloqueado no AD”. |
| Objetivo | Verificar a melhor alternativa para que o Sauron informe ao usuário que ele está bloqueado no AD |
| Observações | Foi identificado com o estudo as possíveis formas para que o Sauron consiga informar ao usuário se ele está bloqueado no AD |
GLOSSÁRIO
Após realização de diversas reuniões com o time da Infra, o time de desenvolvimento identificou que as consultas atualmente utilizadas pela aplicação Sistema de Autenticação do Estado de Rondônia - SAURON, em determinados cenários, estão retornando um valor inesperado, impossibilitando o gerenciamento automatizado do grupo de usuários desabilitados do Diretorio de Usuários (AD).
Para a atender a demanda, serão analisadas as propriedades relacionadas com a habilitação/desabilitação da conta do usuário do AD.
ms-DS-User-Account-Disabled
true - Desativado
false - Ativado
Implementação - Somente ADAM
User-Account-Control
0x00000002 - ADS_UF_ACCOUNTDISABLE - conta desativada.
0x00000010 - ADS_UF_LOCKOUT - conta bloqueada
0x00000200 - ADS_UF_NORMAL_ACCOUNT - conta normal
0x00800000 - ADS_UF_PASSWORD_EXPIRED - senha expirada
Implementação - Windows 2000, 2003(R2), 2008 (R2) e 2012
NOVELL
A propriedade “user-AccountControl” é suportada pela biblioteca NOVELL ( https://www.novell.com/documentation/idm35drivers/ad/data/bp8d4f4.html ), não sendo necessárias alterações na estrutura atual de código. Quanto a propriedade “ms-Ds- UserAccountDisabled”, a documentação da Biblioteca orienta o pareamento da informação fornecida pela primeira propriedade para obter o valor desejado ( https://www.novell.com/coolsolutions/trench/8558.html )
DIRECTORY SERVICES
A propriedade “user-AccountControl” é suportada pela biblioteca Directory Services ( https://support.microsoft.com/pt-br/help/305144/how-to-use-useraccountcontrol-to-
manipulate-user-account-properties ) não sendo necessárias alterações na estrutura atual de código.
A seguir são descritas duas abordagens possíveis para a implantação, sendo destacadas quais as ações associadas são necessárias para a implantação da User Story, seguidas de um estudo da complexidade envolvida com o processo de desenvolvimento de cada uma dessas ações. Os valores de complexidade foram atribuídos após reunião entre os participantes.
AÇÕES ASSOCIADAS
Alinhamento com a equipe de Infraestrutura de TI (1 Ponto - CADA)
Análise da Viabilidade de Implantação por parte da Infra (2 Pontos - INFRA)
Instalação, Configuração e Disponibilização (se viável) (3 Pontos - INFRA)
Pareamento no Código (1 Ponto - DEV)
Testes realizados (1 Ponto - DEV)
COMPLEXIDADE - constante para cada questão adicionada.
Considerando C(n) = (Σ P_INFRA + Σ P_DEV) = 9 pontos de complexidade, sendo 6 pontos para a equipe de Infraestrutura de TI e 3 pontos para a equipe DEV.
AÇÕES ASSOCIADAS
Alinhamento com a equipe de Infraestrutura de TI (1 Ponto - CADA)
Identificação dos Cenários para Calculo Binário ( 1 Ponto - CADA)
Pareamento no Código (1 Ponto - DEV)
Calculo do valor pareado de acordo com cenários (3 Pontos - DEV)
Testes realizados (1 Ponto - DEV)
COMPLEXIDADE - constante para cada questão adicionada.
Considerando C(n) = (Σ P_INFRA + Σ P_DEV) = 9 pontos de complexidade, sendo 2 pontos para a equipe de Infraestrutura de TI e 7 pontos para a equipe DEV.
Para exemplificar o calculo binário da propriedade “user-AccountControl”, realizaremos o calculo para dois usuários do nosso AD, comparando os resultados com a tabela em anexo, no fim deste documento. Para este experimento utilizaremos a aplicação Microsoft ADExplorer com as credenciais da aplicação Sauron, como demonstrado a seguir:



Para o Exemplo 1, onde o valor obtido foi 66048, ao calcularmos as propriedades do usuário a partir da tabela presente no anexo 1, temos:
NORMAL_ACCOUNT (512) + DONT_EXPIRE_PASSWORD (65536) = 66048
Logo, o usuário possui uma conta normal, com a opção de não expiração de senha ativada.
Para o exemplo 2, onde o valor obtido é 512 temos:
NORMAL_ACCOUNT (512)
Sabendo que a propriedade ACCOUNTDISABLE (2) logo, ao subtrair 2 da propriedade se subtrairmos apenas valores que são potências de 2, do maior para o menor possível e chegarmos no valor 0, então o usuário possui uma conta desativada.
Um exemplo para consolidação é o exemplo a seguir:

Para o usuário em questão temos o valor 66050.
1º passo - subtraímos 2^ 16 ( DONT_EXPIRE_PASSWORD (65536)) = 514 2º passo - subtraímos 2^9 ( NORMAL_ACCOUNT (512) ) = 2 3º passo - subtraímos 2^1 ( ACCOUNTDISABLE (2) ) = 0 Logo, temos certeza que a conta do usuário está desabilitada.
Na Tabela 1 é apresentado um comparativo entre as alternativas propostas para a resolução da User Story em questão. Para cada opção é considerado os pontos de
complexidade para o time de desenvolvedores e para o time de infraestrutura de TI. São levados em conta quatro diferentes aspectos descritos a seguir:
Tabela 1. Comparativo da complexidade ( C(n) ), pontos fortes e fracos das opções analisadas.
| OP | C(n) | PONTOS FORTES | PONTOS FRACOS |
| 1 | DEV - 3, INFRA - 6 | complexidade técnica (-); sustentabilidade (+); responsabilidade (-) | configuração (+) |
| 2 | DEV - 7, INFRA - 2 | configuração (-) | complexidade técnica (+), sustentabilidade (-), responsabilidade (+) |
Após análise da documentação das bibliotecas e serviços, foi identificado que a propriedade “ms-DS-User-Account-Disabled “ não retorna nenhum valor pois necessita da ativação do serviço ADAM, atualmente indisponível. Será verificado junto a equipe de Infraestrutura de TI a viabilidade da ativação deste serviço a partir da disponibilização do AD LDM (ADAM) e, caso negado, faremos o pareamento da propriedade “User-Account-Control”.
Apêndice 1 - Tabela de Conversão da Propriedade «User-AccountControl»
Tabela 1. Relação dos Valores em HEX e Decimal
| UserAccountControl Flag | HEX Value | Decimal Value |
| SCRIPT (Running the logon script) | 0x0001 | 1 |
| ACCOUNTDISABLE (The account is disabled) | 0x0002 | 2 |
| HOMEDIR_REQUIRED (The home folder is required) | 0x0008 | 8 |
| LOCKOUT (The account is locked) | 0x0010 | 16 |
| PASSWD_NOTREQD (No password is required) | 0x0020 | 32 |
| PASSWD_CANT_CHANGE (Prevent user from changing password) | 0x0040 | 64 |
| ENCRYPTED_TEXT_PWD_ALLOWED (Store password using reversible encryption) | 0x0080 | 128 |
| TEMP_DUPLICATE_ACCOUNT (An account of a user, whose primary account is in another domain) | 0x0100 | 256 |
| NORMAL_ACCOUNT (A default account, a typical active account) | 0x0200 | 512 |
| INTERDOMAIN_TRUST_ACCOUNT | 0x0800 | 2048 |
| WORKSTATION_TRUST_ACCOUNT | 0x1000 | 4096 |
| SERVER_TRUST_ACCOUNT | 0x2000 | 8192 |
| DONT_EXPIRE_PASSWORD (user accounts with passwords that don’t expire) | 0x10000 | 65536 |
| MNS_LOGON_ACCOUNT | 0x20000 | 131072 |
| SMARTCARD_REQUIRED (To log on to the network, the user needs a smart card) | 0x40000 | 262144 |
| TRUSTED_FOR_DELEGATION | 0x80000 | 524288 |
| NOT_DELEGATED | 0x100000 | 1048576 |
| USE_DES_KEY_ONLY | 0x200000 | 2097152 |
| DONT_REQ_PREAUTH (Kerberos pre-authentication is not required) | 0x400000 | 4194304 |
| PASSWORD_EXPIRED (The user password has expired) | 0x800000 | 8388608 |
| TRUSTED_TO_AUTH_FOR_DELEGATION | 0x1000000 | 16777216 |
| PARTIAL_SECRETS_ACCOUNT | 0x04000000 | 67108864 |