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”.
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).
O Active Directory (AD) é uma ferramenta de gerenciamento de usuários de rede, denominada serviço de diretório. Um diretório nada mais é do que um banco de dados contendo informações dos usuários de uma organização, tais como nome, login, senha, cargo, perfil e etc.
O AD é implementado em protocolo LDAP (Lightweight Directory Access Protocol), que, traduzido ao pé da letra, significa: Protocolo Leve de Acesso a Diretório. Trata-se de um protocolo livre que é conhecido como o padrão do mercado para gerenciamento de informações de diretório distribuído sobre uma rede de Protocolo da Internet (IP).
Através da implementação de serviço LDAP, o Active Directory permite o uso de um único diretório para controle de acesso a todos sistemas e serviços dentro de uma rede corporativa. Isso significa que o colaborador de uma empresa não precisa criar um usuário e senha para cada sistema que tiver acesso, e sim utilizar seu usuário e senhas únicos(as).
Para a atender a demanda, serão analisadas as propriedades relacionadas com a habilitação/desabilitação da conta do usuário no Active DIrectory.
NOVELL
A propriedade “user-AccountControl” é suportada pela biblioteca NOVELL ( LINK ), 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 ( LINK ).
A propriedade “user-AccountControl” é suportada pela biblioteca Directory Services ( LINK ) 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.
EXEMPLO
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.
Para o usuário em questão temos o valor 66050. Subtraindo sempre o maior valor binário disponível temos a seguinte situação:
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 |
|
|
2 |
DEV - 7 INFRA - 2 |
|
|
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”.
Tabela 2. 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 |