Descrição do Problema
Os recursos da AWS estão disponíveis para usuários que fazem login na conta da AWS da sua empresa por meio do AWS Management Console. Portanto, atividades não autorizadas dentro da sua conta da AWS, por exemplo, podem danificar seu processo de P&D ou causar contas de nuvem imprevisíveis.
A melhor prática de segurança é remover as senhas do AWS Management Console quando os usuários saem da organização, não precisam mais delas ou apenas usam chaves de acesso (uma combinação de uma ID de chave de acesso e uma chave de acesso secreta) para acessar a conta da AWS.
Encerrando o acesso do usuário ao AWS Management Console removendo sua senha não afeta a oportunidade de acessar o console usando uma função ou permissões assumidas. Se o usuário tiver chaves de acesso ativas, elas continuarão a funcionar e permitirão acesso aos recursos da AWS.
Nossas recomendações ajudarão você a aumentar a segurança das contas da AWS identificando usuários inativos com senhas de console. Em nosso artigo, recomendamos desabilitar senhas de console que não estejam ativas por 90 dias ou mais, no entanto, você pode ajustar um período de tempo especificado com base em seus requisitos.
Por favor, encontre as recomendações sobre o encerramento de contas de usuários inativas do IAM em nosso artigo anterior.
Recomendações
Encontre todos os usuários que têm acesso ao console ativado, mas não o utilizam há mais de 90 dias.
Restante
Se o usuário tiver acesso ao console e não o estiver usando por mais de 90 dias e tiver chaves de acesso ativas e não o estiver usando por mais de 90 dias também, é outra categoria de usuários. Veja a postagem do blog sobre usuários inativos.
Passo 1
Liste todos os usuários que foram criados há mais de 90 dias e que o último login no console da AWS foi há mais de 90 dias ou que não foi usado.
Comando AWS CLI:
aws iam list-users --query 'Usuários[?(CreateDate <= `2021-12-26` && (PasswordLastUsed <= `2021-12-26`) || !not_null(PasswordLastUsed))].UserName' --texto de saída
Mais informações podem ser encontradas aqui:
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-users.html
Passo 2
Filtrar os usuários sem acesso ao console
aws iam get-login-profile --nome-de-usuário "$user" 2>/dev/null
Observe que, caso o usuário não tenha acesso ao console, este comando gerará uma exceção.
2>/dev/nulo
é necessário para pular esse usuário e não mostra mensagens de erro.
Mais informações podem ser encontradas aqui:
https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html
etapa 3
Para cada usuário nesta lista, devemos verificar todas as chaves de acesso.
Comando AWS CLI:
aws iam list-access-keys --user-name "$user" --query 'AccessKeyMetadata[].AccessKeyId' --texto de saída
Mais informações podem ser encontradas aqui:
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-access-keys.html
Passo 4
Para cada chave de acesso, devemos verificar LastUsedDate. Caso uma chave de acesso tenha sido usada há pelo menos 45 dias, tal usuário deve ser ignorado, caso contrário, o usuário pode ser marcado como o usuário alvo.
Comando AWS CLI:
aws iam get-access-key-last-used --access-key-id "$access_key" --query 'AccessKeyLastUsed.LastUsedDate >= `2022-02-09`' --texto de saída
Mais informações podem ser encontradas aqui:
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-access-key-last-used.html
Otimização de custo de nuvem gratuita. Vida
Nota 1
Nos comandos usamos datas 2021-12-26 e 2022-02-09 que são datas relativas iguais (agora – 90 dias) e (agora – 45 dias). Você deve usar sua própria data relativa.
Nota 2
O AWS cli tem um mecanismo de paginação para grandes quantidades de dados na saída. Se você tiver muitos usuários em uma conta, o script fornecido processará apenas a primeira página. Considere usar algo mais poderoso do que o AWS cli.
Como resultado, um comando de linha:
para usuário em $(aws iam list-users --query 'Usuários[?(CreateDate <= `2021-12-26` && (PasswordLastUsed <= `2021-12-26`) || !not_null(PasswordLastUsed))].UserName' --texto de saída); faça para access_key em $(aws iam list-access-keys --nome-do-usuário "$user" --query 'AccessKeyMetadata[].AccessKeyId' --texto de saída); faça se [[ "$(aws iam get-access-key-last-used --access-key-id "$access_key" --query 'AccessKeyLastUsed.LastUsedDate >= `2022-02-09`' --texto de saída)" == True ]]; então continue 2; fi; feito; eco "$user"; feito
Como resultado, este comando fornecerá uma lista de nomes de usuários.
👆🏻 O acesso não autorizado a ambientes internos de TI não atende aos padrões de segurança da empresa. O encerramento do acesso para usuários inativos visa reduzir o risco de acesso descontrolado aos seus recursos.
💡 Descubra 3 etapas fáceis para encontrar todos os usuários inativos em sua conta AWS para gerenciamento de acesso e melhorias de segurança → https://hystax.com/3-easy-steps-to-find-all-inactive-users-in-your-aws-account-for-access-management-and-security-improvements