Neste projeto prático você vai implementar um ambiente IAM completo na AWS: criar grupos com permissões específicas, migrar usuários via script automatizado, configurar MFA obrigatório e aplicar uma política de senhas forte — tudo seguindo as boas práticas de segurança da AWS.
O projeto está dividido em duas partes:
- Parte 1: Criação de grupos, preparação do CSV e automação da criação de usuários
- Parte 2: Boas práticas de segurança — MFA, política de senhas e validação de acesso
Pré-requisitos
- Acesso ao AWS Console com permissões de administrador
- Arquivo CSV com os dados dos usuários (formato explicado abaixo)
Parte 1 — Criação e Migração de Usuários
Passo 1 — Criar os Grupos IAM
No AWS Console, acesse IAM → User groups → Create group e crie os seguintes grupos:
| Grupo | Perfil |
|---|---|
CloudAdmin |
Administradores da conta AWS |
LinuxAdmin |
Administradores de servidores Linux |
RedesAdmin |
Administradores de rede |
DBA |
Administradores de banco de dados |
Estagiarios |
Acesso limitado para estagiários |
Nomes de grupos suportam até 128 caracteres, são únicos por conta e não diferenciam maiúsculas de minúsculas.
Passo 2 — Preparar o arquivo CSV
O script espera um arquivo CSV com exatamente três colunas: usuarios, grupo e senha.
Se você tiver uma planilha Excel com os dados dos usuários, faça os seguintes ajustes antes de exportar:
- Renomeie a coluna de e-mails para
usuariose remova o domínio (ex: remova@empresa.comusando Localizar e Substituir) - Renomeie a coluna de equipes para
grupoe ajuste os valores para bater exatamente com os nomes dos grupos criados na AWS - Adicione a coluna
senhacom uma senha padrão inicial (ex:AlterarSenha@123!) - Salve como CSV separado por vírgula (UTF-8)
O arquivo final deve ter este formato:
usuarios,grupo,senha
joao.silva,LinuxAdmin,AlterarSenha@123!
maria.souza,DBA,AlterarSenha@123!
pedro.lima,Estagiarios,AlterarSenha@123!
ana.costa,RedesAdmin,AlterarSenha@123!
carlos.melo,CloudAdmin,AlterarSenha@123!
Dica: Para validar o processo, comece com 4 ou 5 usuários antes de rodar o arquivo completo.
Passo 3 — O script de criação de usuários
Salve o conteúdo abaixo como aws-iam-cria-usuario.sh:
#!/bin/bash
# Propósito: Automatiza a criação de usuários na AWS
# Utilização: ./aws-iam-cria-usuario.sh <arquivo.csv>
# Formato CSV: usuarios,grupo,senha
# Autor: Luis Cruz
# ------------------------------------------
INPUT=$1
OLDIFS=$IFS
IFS=',;'
[ ! -f "$INPUT" ] && { echo "$INPUT arquivo não encontrado"; exit 99; }
command -v dos2unix >/dev/null || {
echo "Utilitário dos2unix não encontrado. Instale com: sudo yum install dos2unix -y"
exit 1
}
dos2unix "$INPUT"
while read -r usuario grupo senha || [ -n "$usuario" ]; do
if [ "$usuario" != "usuarios" ]; then
echo "──────────────────────────────────────"
echo "Criando: $usuario | Grupo: $grupo"
aws iam create-user --user-name "$usuario"
aws iam create-login-profile \
--password-reset-required \
--user-name "$usuario" \
--password "$senha"
aws iam add-user-to-group \
--group-name "$grupo" \
--user-name "$usuario"
echo "✓ $usuario criado com sucesso"
fi
done < "$INPUT"
IFS=$OLDIFS
echo ""
echo "Migração concluída."
O script:
- Valida se o arquivo CSV foi informado e existe
- Converte o arquivo com
dos2unix(necessário se criado no Windows) - Lê cada linha ignorando o cabeçalho
- Cria o usuário IAM, define a senha inicial com troca obrigatória no primeiro acesso e adiciona ao grupo
Passo 4 — Executar no AWS CloudShell
O AWS CloudShell é um terminal no próprio console da AWS com AWS CLI já configurada. Acesse pelo ícone de terminal no menu superior do console.
Instalar o dos2unix:
sudo yum install dos2unix -y
Fazer upload dos arquivos via Actions → Upload file:
aws-iam-cria-usuario.shusuarios.csv
Preparar e executar:
# verificar os arquivos enviados
ls -la
# tornar o script executável
chmod +x aws-iam-cria-usuario.sh
# verificar o conteúdo do CSV
cat usuarios.csv
# executar
./aws-iam-cria-usuario.sh usuarios.csv
Passo 5 — Validar os usuários criados
No console, acesse IAM → Users e confirme que os usuários foram criados e estão nos grupos corretos.
Ou via CLI:
# listar todos os usuários
aws iam list-users --output table
# verificar grupos de um usuário
aws iam list-groups-for-user --user-name joao.silva
# listar usuários de um grupo
aws iam get-group --group-name DBA --output table
Passo 6 — Permitir troca de senha no primeiro acesso
Antes de testar o login com os usuários criados, anexe a política IAMUserChangePassword a todos os grupos.
Acesse IAM → User groups → [grupo] → Permissions → Add permissions → Attach policies, filtre por IAM e adicione IAMUserChangePassword.
Repita para todos os grupos.
Testando o acesso (Passo a passo)
- Acesse IAM → Dashboard e copie a URL de login da conta
- Abra uma aba anônima no navegador e acesse com a URL copiada
- Faça login com um dos usuários criados (ex:
adolfo.carlos, grupoDBA, senhaAlterarSenha@123!) - Troque a senha quando solicitado
- Tente acessar o DynamoDB e criar uma tabela → o acesso deve ser negado, pois o grupo
DBAtem apenasAmazonRDSFullAccess
Esse teste confirma que o princípio do mínimo privilégio está funcionando corretamente.
Parte 2 — Boas Práticas de Segurança
Passo 1 — Habilitar MFA no usuário Root
O usuário root é a identidade mais poderosa da conta AWS. Proteja-o primeiro.
- Acesse o console com o usuário root
- Clique no nome da conta → Security Credentials
- Em Multi-factor authentication (MFA) → Assign MFA device
- Escolha Authenticator app (ex: Google Authenticator ou Authy)
- Escaneie o QR Code com o aplicativo
- Informe dois tokens consecutivos para confirmar
A partir de agora, além de usuário e senha, o login do root exigirá o token do autenticador.
Passo 2 — Criar e aplicar a política EnforceMFAPolicy
Esta política bloqueia qualquer acesso a recursos da AWS enquanto o usuário não tiver o MFA ativo.
Acesse IAM → Policies → Create policy → JSON, remova o conteúdo existente e cole:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowViewAccountInfo",
"Effect": "Allow",
"Action": [
"iam:GetAccountPasswordPolicy",
"iam:ListVirtualMFADevices"
],
"Resource": "*"
},
{
"Sid": "AllowManageOwnVirtualMFADevice",
"Effect": "Allow",
"Action": [
"iam:CreateVirtualMFADevice"
],
"Resource": "arn:aws:iam::*:mfa/*"
},
{
"Sid": "AllowManageOwnUserMFA",
"Effect": "Allow",
"Action": [
"iam:DeactivateMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:ListMFADevices",
"iam:ResyncMFADevice"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "DenyAllExceptListedIfNoMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
]
}
Clique em Next → Next e defina o nome como EnforceMFAPolicy.
Anexar a política em todos os grupos de uma vez:
Acesse IAM → Policies → EnforceMFAPolicy → Entities attached → Attach → Filter: User groups → selecione todos os grupos → Attach policy.
Passo 3 — Configurar política de senhas da conta
Acesse IAM → Account settings → Password policy → Edit → Custom e ative:
| Configuração | |
|---|---|
| Letra maiúscula (A-Z) | ✅ |
| Letra minúscula (a-z) | ✅ |
| Número (0-9) | ✅ |
Caractere especial ! @ # $ % ...
|
✅ |
| Permitir que usuários troquem a própria senha | ✅ |
| Impedir reutilização de senhas | ✅ |
Clique em Save changes.
Passo 4 — Testar o bloqueio por MFA
- Acesse IAM → Dashboard e copie a URL de login
- Abra uma aba anônima e faça login com um usuário que não tem MFA configurado (ex:
alda.lage, grupoCloudAdmin) - Tente acessar o IAM → o acesso será negado com erro de permissão
- Isso confirma que a
EnforceMFAPolicyestá funcionando
Ativando o MFA como usuário:
- Clique no nome do usuário no canto superior direito → Security Credentials
- Em MFA device → Assign MFA device → Authenticator app
- Escaneie o QR Code e informe dois tokens consecutivos
- Faça Logoff → Login
- Teste novamente o acesso — agora deve funcionar normalmente
Resumo do que foi implementado
| Configuração | Status |
|---|---|
| Grupos IAM com permissões específicas | ✅ |
| Usuários criados via script automatizado | ✅ |
| Troca de senha obrigatória no primeiro acesso | ✅ |
| MFA habilitado no usuário root | ✅ |
| EnforceMFAPolicy aplicada em todos os grupos | ✅ |
| Política de senhas forte na conta | ✅ |
Referências
- Boas práticas de segurança no IAM – AWS Docs
- Gerenciar usuários e grupos com AWS CLI
- Tutorial: MFA obrigatório com política IAM
- Configurar política de senhas da conta
See you later 🤘🏻
Top comments (0)