Migrar 100 usuários manualmente no console da AWS é lento, suscetível a erros e impossível de auditar com precisão. Neste artigo você vai ver como automatizar esse processo usando AWS CLI e Shell Script direto no AWS CloudShell — sem instalar nada localmente.
O resultado final: usuários criados, alocados nos grupos corretos e com MFA obrigatório, tudo em minutos.
O que é o IAM?
O AWS Identity and Access Management (IAM) é o serviço que controla quem pode acessar os recursos da sua conta AWS e o que cada pessoa ou serviço pode fazer.
Com o IAM você gerencia:
| Conceito | Descrição |
|---|---|
| Usuário | Identidade individual com credenciais próprias |
| Grupo | Conjunto de usuários que compartilham as mesmas permissões |
| Política | Documento JSON que define o que é permitido ou negado |
| Role | Identidade temporária assumida por serviços ou usuários |
A boa prática é nunca conceder permissões diretamente a um usuário — sempre use grupos.
Visão geral da solução
O fluxo é simples:
- Criar os grupos IAM no console
- Montar um arquivo CSV com os dados dos usuários
- Rodar um shell script no CloudShell que lê o CSV e cria tudo automaticamente
- Aplicar a política de MFA obrigatório nos grupos
Passo 1 — Criar os Grupos IAM
Antes de importar os usuários, os grupos precisam existir.
No AWS Console, acesse IAM → User groups → Create group e crie um grupo para cada perfil do seu ambiente. Neste exemplo usaremos:
-
RedesAdmin— administradores de rede -
LinuxAdmin— administradores de servidores Linux -
DBA— administradores de banco de dados -
Estagiarios— acesso limitado para estagiários
Nomes de grupos suportam até 128 caracteres (letras, números e
+ = , . @ _ -), são únicos por conta e não diferenciam maiúsculas de minúsculas.
Passo 2 — Montar o arquivo CSV
Crie uma planilha com os dados dos usuários e salve como CSV separado por vírgula (UTF-8). O arquivo deve ter exatamente três colunas: Username, Group e Password.
Username,Group,Password
joao.silva,LinuxAdmin,Senha@2024!
maria.souza,DBA,Senha@2024!
pedro.lima,Estagiarios,Senha@2024!
ana.costa,RedesAdmin,Senha@2024!
carlos.melo,LinuxAdmin,Senha@2024!
Algumas observações importantes:
- O valor em
Groupdeve corresponder exatamente ao nome do grupo criado no Passo 1 - Use senhas que atendam à política da conta AWS (mínimo 8 caracteres, maiúsculas, minúsculas, números e símbolos)
- Se o arquivo foi criado no Excel (Windows), salve como CSV UTF-8 — o script vai precisar do
dos2unixpara converter os caracteres de fim de linha
Passo 3 — O script de criação de usuários
Este é o script que lê o CSV e cria cada usuário no IAM. Salve-o como criar-usuarios-iam.sh:
#!/bin/bash
# Valida se o arquivo CSV foi informado
if [ -z "$1" ]; then
echo "Uso: $0 <arquivo.csv>"
exit 1
fi
CSV_FILE="$1"
# Ignora o cabeçalho e lê linha por linha
tail -n +2 "$CSV_FILE" | while IFS=',' read -r USERNAME GROUP PASSWORD; do
# Remove espaços e caracteres de retorno de carro (Windows)
USERNAME=$(echo "$USERNAME" | tr -d '[:space:]\r')
GROUP=$(echo "$GROUP" | tr -d '[:space:]\r')
PASSWORD=$(echo "$PASSWORD" | tr -d '\r')
echo "──────────────────────────────────────"
echo "Criando usuário: $USERNAME | Grupo: $GROUP"
# Cria o usuário com acesso ao console
aws iam create-user --user-name "$USERNAME"
# Define a senha inicial e exige troca no primeiro login
aws iam create-login-profile \
--user-name "$USERNAME" \
--password "$PASSWORD" \
--password-reset-required
# Adiciona ao grupo
aws iam add-user-to-group \
--user-name "$USERNAME" \
--group-name "$GROUP"
echo "✓ $USERNAME criado e adicionado ao grupo $GROUP"
done
echo ""
echo "Migração concluída."
Passo 4 — Executar no AWS CloudShell
O AWS CloudShell é um terminal no próprio console da AWS com AWS CLI já configurada e autenticada. Não é necessário instalar nada localmente.
4.1 Instalar o dos2unix
sudo yum install dos2unix -y
4.2 Fazer upload dos arquivos
No CloudShell, clique em Actions → Upload file e envie:
criar-usuarios-iam.shListaDeUsuarios.csv
4.3 Preparar e executar
# converter o CSV (necessário se o arquivo foi criado no Windows)
dos2unix ListaDeUsuarios.csv
# tornar o script executável
chmod +x criar-usuarios-iam.sh
# executar
./criar-usuarios-iam.sh ListaDeUsuarios.csv
A saída esperada é uma linha de confirmação para cada usuário criado.
Passo 5 — Validar os usuários criados
Verifique os usuários no console em IAM → Users, ou via CLI:
# listar todos os usuários da conta
aws iam list-users --output table
# verificar os grupos de um usuário específico
aws iam list-groups-for-user --user-name joao.silva
# verificar todos os usuários de um grupo
aws iam get-group --group-name LinuxAdmin --output table
Passo 6 — Aplicar política de MFA obrigatório
Sem essa etapa, os usuários conseguem acessar recursos da AWS sem configurar autenticação multifator. A política abaixo bloqueia qualquer ação enquanto o MFA não estiver ativo.
6.1 Criar a política
Acesse IAM → Policies → Create policy → JSON e cole o conteúdo abaixo:
{
"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"
}
}
}
]
}
Dê o nome EnforceMFAPolicy e salve.
6.2 Anexar as políticas aos grupos
Para cada grupo, adicione as duas políticas abaixo:
-
IAMUserChangePassword— permite que o usuário troque sua própria senha no primeiro acesso -
EnforceMFAPolicy— bloqueia acesso a qualquer recurso enquanto o MFA não estiver configurado
Acesse IAM → User groups → [nome do grupo] → Permissions → Add permissions → Attach policies.
Para aplicar em todos os grupos de uma vez, use a política diretamente:
IAM → Policies → EnforceMFAPolicy → Entities attached → Attach → selecione todos os grupos → Attach
Boas práticas aplicadas
- Mínimo privilégio — cada grupo tem apenas as permissões necessárias para sua função
- MFA obrigatório — nenhum usuário acessa recursos sem segundo fator ativo
-
Troca de senha no primeiro acesso — o parâmetro
--password-reset-requiredgarante que o usuário defina sua própria senha - Automação auditável — o script e o CSV podem ser versionados e revisados
- Nunca usar o usuário root — toda operação deve ser feita com usuários IAM com permissões adequadas
Considerações finais
O mesmo processo funciona para qualquer escala — 10 ou 10.000 usuários. Para ambientes maiores, o próximo passo natural é evoluir para AWS SSO (IAM Identity Center) com integração a um provedor de identidade como Azure AD ou Okta, eliminando a necessidade de gerenciar senhas individuais no IAM.
Referências
- Introdução ao IAM – AWS Docs
- Boas práticas de segurança no IAM
- Gerenciar usuários IAM
- Gerenciar grupos IAM
- Políticas e permissões no IAM
- Tutorial: MFA obrigatório com política IAM
See you later 🤘🏻
Top comments (0)