AWS Módulo 0: Setup Seguro de Cuenta (Zero to Architect)

Published: (December 11, 2025 at 08:33 PM EST)
5 min read
Source: Dev.to

Source: Dev.to

Introducción

Este tutorial te guía paso a paso para configurar una cuenta AWS de forma segura desde cero, con énfasis en:

  • Seguridad: proteger la cuenta contra accesos no autorizados.
  • Control de costos: evitar sorpresas en la facturación.
  • Mejores prácticas: configuración profesional desde el día 1.

IMPORTANTE: El tutorial asume que trabajarás con repositorios públicos. Toda la configuración está diseñada para NUNCA exponer secretos.

Conceptos Fundamentales

ElementoUso recomendadoComentario
Root UserSolo para el setup inicialAcceso absoluto; riesgo crítico si se compromete.
IAM UserTrabajo diarioPermisos limitados según el principio de Least Privilege.
MFAObligatorio para Root, altamente recomendado para IAMAñade una capa extra de seguridad (contraseña + código temporal).

Paso 1 – Asegurar el Root User

  1. Accede a la consola e inicia sesión con el usuario Root.
  2. En la esquina superior derecha haz clic en tu nombre → Security credentials.
  3. En la sección Multi-factor authentication (MFA), elige Assign MFA device y selecciona:
    • Authenticator app (recomendado para empezar)

    • Security key (YubiKey u otro)

    • Escanea el código QR con Google Authenticator, Authy o Microsoft Authenticator.

    • Introduce dos códigos MFA consecutivos (espera 30 s entre cada uno).

  4. Guarda los códigos de recuperación en un lugar físico seguro.

Crear un Alias de Cuenta

  1. En la misma pantalla, busca Account Alias.
  2. Crea un alias memorable (p. ej., mi-startup-prod o personal-aws).
  3. El alias permite una URL de login más amigable: https://<alias>.signin.aws.amazon.com.

A partir de ahora, NUNCA uses el Root User para trabajo diario.

Paso 2 – Crear un Usuario IAM

  1. En la consola, busca IAMUsersCreate user.
  2. Configura:
    • User name: juan-admin (o el nombre que prefieras).
    • Access type: marca Provide user access to the AWS Management Console.
    • Console password: elige Custom password (fuerte) o Auto‑generated.
    • Desmarca “Users must create a new password at next sign‑in” (para simplificar el tutorial).
  3. Asignar permisos:
    • En Attach policies directly, busca y marca AdministratorAccess (para aprendizaje).
    • Para producción, asigna permisos más granulares (p. ej., AmazonS3FullAccess, AWSLambdaFullAccess, etc.).
  4. Haz clic en NextCreate user.
  5. Descarga el archivo CSV con las credenciales y guárdalo en un gestor de contraseñas (1Password, Bitwarden, etc.).
  6. Configura MFA para el nuevo usuario IAM siguiendo el mismo proceso que para el Root User (sección “Multi‑factor authentication (MFA)”).
  7. Cierra sesión del Root User y vuelve a iniciar sesión con el alias de cuenta y el nuevo IAM User.

Paso 3 – Configurar Alertas de Facturación

  1. Con sesión Root, ve a AccountBilling preferencesEdit.
  2. Activa:
    • Receive Free Tier Usage Alerts
    • Receive Billing Alerts
  3. Introduce tu email y guarda los cambios.
  4. Con el IAM User, abre AWS Budgets (o Billing → Budgets) → Create budget.
    • Template: Zero spend budget (recomendado).
    • Budget name: Alerta-Costo-Minimo
    • Period: Monthly
    • Budgeted amount: 0.01 USD
    • Scope: All AWS services
  5. Configura alertas:
    • Alert 1 – Costo Real: Threshold Actual costs – 100% (cuando alcances $0.01).
    • Alert 2 – Pronóstico (opcional): Threshold Forecasted costs – 80%.
  6. Añade tu email a cada alerta. AWS enviará notificaciones cuando estés cerca de superar los límites del Free Tier o cuando los superes.

Paso 4 – Instalar AWS CLI

macOS

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /

Linux

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Windows

  1. Descarga el instalador MSI.
  2. Ejecuta el instalador.

Verificar la instalación

aws --version
# Expected output: aws-cli/2.x.x Python/3.x.x ...

Nota: Instala la CLI solo para tu IAM User, nunca para el Root.

Paso 5 – Blindar tu Repositorio

5.1 Crear Access Key para la CLI

  1. En la consola AWS (IAM User) → Users → tu usuario → Security credentials.
  2. En Access keys, haz clic en Create access key.
  3. Marca “I understand…” → Next y (opcional) añade una descripción (CLI-Local-DevMachine).
  4. Descarga el CSV (solo se muestra una vez).

5.2 Configurar el perfil de la CLI

aws configure --profile mi-proyecto

Introduce los valores del CSV:

  • AWS Access Key ID
  • AWS Secret Access Key
  • Default region name (p. ej., us-east-1)
  • Default output format (json o dejar vacío)

Los archivos se guardan en:

  • macOS/Linux: ~/.aws/credentials y ~/.aws/config
  • Windows: C:\Users\<user>\.aws\credentials

5.3 Variable de entorno para el perfil

Bash/Zsh

echo 'export AWS_PROFILE=mi-proyecto' >> ~/.zshrc
source ~/.zshrc

Fish

echo 'set -gx AWS_PROFILE mi-proyecto' >> ~/.config/fish/config.fish
source ~/.config/fish/config.fish

PowerShell

[System.Environment]::SetEnvironmentVariable('AWS_PROFILE', 'mi-proyecto', 'User')

Verificar la identidad

aws sts get-caller-identity

Salida esperada:

{
    "UserId": "AIDAXXXXXXXXXX",
    "Account": "123456789012",
    "Arn": "arn:aws:iam::123456789012:user/juan-admin"
}
  • Arn contiene :user/ → todo correcto.
  • Arn contiene :root → estás usando el Root (MAL).

5.4 .gitignore (crítico)

En la raíz del proyecto crea un archivo .gitignore con el siguiente contenido mínimo:

# === SECRETOS AWS Y TERRAFORM ===
*.tfvars
*.tfstate
*.tfstate.*
.terraform/
.terraform.lock.hcl

# === CREDENCIALES ===
.env
.env.*
*.pem
*.key
aws_credentials.txt
credentials.json
config.json

# === GOLANG ===
*.exe
*.dll
*.so
*.dylib
*.test
*.out
vendor/
go.work

# === SISTEMA ===
.DS_Store
Thumbs.db

# === EDITORES ===
.vscode/
.idea/
*.swp
*.swo
*~

Ejecuta git status y verifica que no aparezcan archivos como .tfstate, .env, .pem, .key o el directorio .terraform/.

5.5 Pre‑commit Hook (opcional pero recomendado)

Instala pre-commit:

# macOS
brew install pre-commit

# Linux / Windows
pip install pre-commit

Crea el archivo .pre-commit-config.yaml:

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.5.0
    hooks:
      - id: check-added-large-files
      - id: detect-aws-credentials
      - id: detect-private-key

  - repo: https://github.com/antonbabenko/pre-commit-terraform
    rev: v1.83.5
    hooks:
      - id: terraform_fmt
      - id: terraform_validate

Activa el hook:

pre-commit install

Verificación Final

  • Root User tiene MFA activado.
  • Root User NO se usa para trabajo diario.
  • IAM User creado con permisos AdministratorAccess (para aprendizaje).
  • IAM User tiene MFA activado.
  • Alertas de facturación configuradas y probadas.
  • AWS CLI configurada con perfil seguro.
  • .gitignore protege todos los archivos sensibles.
  • (Opcional) Pre‑commit hooks activos.

Recursos Adicionales

  • Documentación oficial de AWS IAM
  • Guía de MFA en AWS
  • AWS Budgets
  • AWS CLI Reference
  • Pre‑commit hooks for Terraform
Back to Blog

Related posts

Read more »