Ir para o conteúdo principal

SAURON - Atualizar Minhas Informações Pessoais

Data de elaboração 31/01/21
Responsável pelo estudo
  1. João Cícero Romão (Assessor);
  2. 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

  • AD - Active DIrectory - é uma implementação de serviço de diretório no protocolo LDAP.
  • LDAP - Lightweight Directory Access Protocol é um protocolo de aplicação de serviços de informação de diretório distribuído sobre uma rede de Protocolo da Internet.
  • ADAM - Active DIrectory Application Mode - uma aplicação que estende as utilizações do LDAP, também chamada de AD LDS.
  • NOVELL - empresa de TI que possui uma biblioteca para consumo dos dados do AD via LDAP em C#.

1. Introdução

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).

1.1 Resultados esperados

  1. Relatório contendo a análise da causa-raiz do problema relacionado ao retorno do valor inesperado.
  2. Breve explicação sobre a utilização de Diretórios de Usuários (AD).
  3. Análise das propriedades do AD que atendam nossa demanda.
  4. Análise da Documentação da Biblioteca Novell.
  5. Análise da Documentação da Biblioteca DirectoryServices.
2. Desenvolvimento
  1. O Serviço de Diretório de Usuários (AD), apesar de ser parte da SETIC, é gerenciado pelo time de Infraestrutura de TI.
  2. O AD é responsável pelo acesso de todos os usuários que estão na hierarquia da SETIC.
  3. Qualquer informação de acesso e usuário deve ser obtida a partir deste Serviço.

2.1 Active Directory

  • 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).

2.2 Propriedades relevantes

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

    • Descrição: Indica se uma conta está desativada ou ativada.

    • Nome LDAP: msDS-UserAccountDisabled

    • Retorno: Booleano

      • true - Desativado

      • false - Ativado

    • Implementação - Somente ADAM

  • User-Account-Control

    • Descrição: Sinalizadores que controlam o comportamento da conta do usuário.

    • Nome LDAP: userAccountControl

    • Retorno: 4bytes (HEX)

      • 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

2.3 Bibliotecas Auxiliares

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.

2.4 Propostas

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.

2.4.1 Utilização do Serviço ADAM

    • 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.

    2.4.2 Utilização da Propriedade User-AccountControl

      • 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.

      2.4.3 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:

      image.png

        • EXEMPLO 1

          • Usuário: Pedro Henrique de Andrade Gomes

          • userAccountControl: 66048

        image.png

          • EXEMPLO 2

            • Usuário: Raaby Liandry de Souza Teixeira

            • userAccountControl: 512

          image.png

          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:

          image.png

          Para o usuário em questão temos o valor 66050.

          passo - subtraímos 2^ 16 ( DONT_EXPIRE_PASSWORD (65536)) = 514 passo - subtraímos 2^9 ( NORMAL_ACCOUNT (512) ) = 2 passo - subtraímos 2^1 ( ACCOUNTDISABLE (2) ) = 0 Logo, temos certeza que a conta do usuário está desabilitada.

          2.5 Resultados

          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:

          • Complexidade Técnica - dificuldade para entendimento, elucidação e implantação da solução proposta em linhas de código.

          • Configuração - dificuldade de implantação da solução por parte da equipe de infraestrutura de TI.

          • Sustentabilidade - dificuldade de garantia de qualidade e manutenção da solução como um todo.

          • Responsabilidade - quantidade de responsabilidade herdada pela aplicação (Sauron).

          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 (+)

          3. Conclusão

          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”.

          4. Referências

            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