AWS Certified Cloud Practitioner

Post 5 of 25

20%

Complete

Cloud Architecture13 min read

AWS Cloud Practitioner #5: Shared Responsibility Model - ¿Quién es Responsable de Qué?

Comprende el modelo de responsabilidad compartida de AWS: qué gestiona AWS (security OF the cloud) vs. qué gestionas tú (security IN the cloud).

🎯 Lo que Aprenderás Hoy

Al finalizar este post, podrás:

  • Explicar el modelo de responsabilidad compartida de AWS
  • Diferenciar entre "Security OF the cloud" y "Security IN the cloud"
  • Identificar responsabilidades específicas para EC2, S3, RDS, Lambda
  • Responder preguntas del examen sobre responsabilidad de seguridad

El Problema Real

Es lunes por la mañana. Recibes un email de auditoría de seguridad:

"Se encontró un S3 bucket público con datos sensibles de clientes. ¿Quién es responsable?"

Tu CTO pregunta: "¿No es responsabilidad de AWS mantener nuestros datos seguros?"

Spoiler: Depende.

Escenario Real

plaintext
Incidente: Bucket S3 con 100,000 registros de clientes públicamente accesible
 
Análisis:
❌ "Es culpa de AWS"
✅ "Es culpa nuestra"
 
¿Por qué?
- AWS es responsable de: Seguridad DE la plataforma S3
- TÚ eres responsable de: Configurar el bucket como privado

Este es el Shared Responsibility Model en acción.


¿Qué es el Shared Responsibility Model?

El Modelo de Responsabilidad Compartida define quién es responsable de qué en términos de seguridad y compliance en la nube.

Info

Analogía: Es como rentar un apartamento.

Dueño del edificio (AWS):

  • Estructura del edificio
  • Sistemas eléctricos
  • Plomería central
  • Seguridad del edificio

Inquilino (Tú):

  • Cerrar con llave tu puerta
  • No dejar ventanas abiertas
  • Configurar tu alarma
  • Cuidar tus pertenencias

División de Responsabilidades

plaintext
AWS: Security OF the Cloud
     (Infraestructura física y software que corre AWS)
 
CLIENTE: Security IN the Cloud
         (Datos, configuración, accesos)

🔸 AWS: Security OF the Cloud

¿Qué Gestiona AWS?

AWS es responsable de proteger la infraestructura que corre todos los servicios AWS.

Incluye:

1. Hardware físico

plaintext
- Servidores físicos
- Storage devices
- Network equipment
- Cables, racks, refrigeración

2. Facilities (Data Centers)

plaintext
- Seguridad física del edificio
- Control de acceso (biométrico, guardias)
- Vigilancia 24/7
- Energía y refrigeración redundante

3. Network infrastructure

plaintext
- Routers, switches
- Firewalls perimetrales
- DDoS protection
- Network monitoring

4. Virtualization layer

plaintext
- Hypervisor (software de virtualización)
- Isolation entre clientes
- Hardware segregation

5. Managed service operations

plaintext
Para servicios como RDS, Lambda:
- OS patches
- Database updates
- Scaling infrastructure

Ejemplo Práctico

plaintext
Servicio: Amazon RDS (PostgreSQL)
 
AWS gestiona:
✅ Servidores físicos donde corre RDS
✅ Hypervisor que virtualiza recursos
✅ Patches del OS
✅ Patches de PostgreSQL
✅ Backups automáticos (infraestructura)
✅ Multi-AZ replication (infraestructura)
 
Tú NO necesitas:
❌ Preocuparte por seguridad física
❌ Actualizar el OS manualmente
❌ Configurar replicación a nivel de hardware

🔸 CLIENTE: Security IN the Cloud

¿Qué Gestionas Tú?

Eres responsable de TODO lo que pongas EN la nube y cómo lo configures.

Incluye:

1. Data

plaintext
- Proteger datos sensibles
- Encriptar información
- Clasificar datos
- Retención y eliminación

2. Platform, Applications

plaintext
- Código de tu aplicación
- Configuración de aplicaciones
- Dependencies y libraries

3. Identity and Access Management (IAM)

plaintext
- Usuarios y permisos
- MFA (Multi-Factor Authentication)
- Password policies
- Roles y policies

4. Operating System (para EC2)

plaintext
- Patches de OS
- Firewall configuration
- Anti-virus

5. Network Configuration

plaintext
- Security Groups
- Network ACLs
- VPC configuration
- Subnet design

6. Firewall Configuration

plaintext
- Security Group rules
- WAF rules
- Network ACL rules

7. Client-side data encryption

plaintext
- Encriptar antes de subir a AWS
- Gestionar encryption keys

8. Server-side encryption

plaintext
- Habilitar encryption en S3
- Configurar KMS keys
- Encryption at rest configuration

Ejemplo Práctico

plaintext
Servicio: Amazon S3
 
Tú gestionas:
✅ Configurar bucket como privado/público
✅ Configurar policies de acceso (quién puede leer/escribir)
✅ Habilitar versioning
✅ Habilitar encryption
✅ Configurar lifecycle policies
✅ Configurar bucket logging
✅ Contenido que subes al bucket
 
Ejemplo de error común:
❌ Hacer bucket público por accidente
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": "*",  ← ¡Acceso público!
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::mi-bucket/*"
  }]
}
 
✅ Configuración correcta (privado):
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::123456789012:user/juan"
    },
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::mi-bucket/*"
  }]
}

Responsabilidades por Tipo de Servicio

IaaS (Infrastructure as a Service) - EC2

Servicio: Amazon EC2

AWS gestiona:

plaintext
✅ Hardware físico
✅ Hypervisor
✅ Network infrastructure
✅ Physical security

TÚ gestionas:

plaintext
✅ OS (Windows/Linux)
✅ OS patches y updates
✅ Applications
✅ Security Groups
✅ IAM roles
✅ Data encryption
✅ Firewall del OS
✅ Anti-virus

Ejemplo:

bash
# Eres responsable de actualizar el OS
# AWS NO hace esto automáticamente para EC2
 
sudo yum update -y  # Amazon Linux
sudo apt update && sudo apt upgrade -y  # Ubuntu
 
# También eres responsable de configurar firewall
sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp

Nivel de responsabilidad: ALTO (más control, más responsabilidad)


PaaS (Platform as a Service) - RDS

Servicio: Amazon RDS

AWS gestiona:

plaintext
✅ Hardware físico
✅ Hypervisor
✅ OS (no tienes acceso SSH)
✅ OS patches
✅ Database patches
✅ Backups (infraestructura)
✅ Multi-AZ replication (setup)

TÚ gestionas:

plaintext
✅ Database configuration
✅ Database users y passwords
✅ IAM policies para acceso
✅ Security Groups
✅ Data encryption (habilitar)
✅ Backups (retención, scheduling)
✅ Data dentro de la database

Ejemplo:

sql
-- AWS gestiona el engine PostgreSQL
-- Pero TÚ gestionas users, roles, data
 
-- Eres responsable de:
CREATE USER app_user WITH PASSWORD 'secure_password_123';
GRANT SELECT, INSERT ON orders TO app_user;
 
-- También de encriptar datos sensibles
CREATE TABLE customers (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100),
  ssn BYTEA  -- Encriptado a nivel de aplicación ANTES de insertar
);

Nivel de responsabilidad: MEDIO (AWS gestiona más, tú menos)


SaaS (Software as a Service) - WorkMail

Servicio: Amazon WorkMail (email corporativo)

AWS gestiona:

plaintext
✅ TODO el software
✅ TODO el infrastructure
✅ OS, patches, updates
✅ Scaling, availability
✅ Email delivery infrastructure

TÚ gestionas:

plaintext
✅ Usuarios y permisos
✅ Configuración de políticas de email
✅ Data governance
✅ Compliance de contenido

Nivel de responsabilidad: BAJO (AWS gestiona casi todo)


Serverless - Lambda

Servicio: AWS Lambda

AWS gestiona:

plaintext
✅ Hardware
✅ OS
✅ Runtime (Node.js, Python, etc.)
✅ Scaling
✅ High availability

TÚ gestionas:

plaintext
✅ Código de la función
✅ IAM roles/policies
✅ Environment variables
✅ Configuration (memory, timeout)
✅ Dependencies

Ejemplo:

python
# Lambda function
# AWS gestiona: servers, OS, Python runtime
# TÚ gestionas: código, IAM role, environment vars
 
import os
import boto3
 
def lambda_handler(event, context):
    # TU responsabilidad: código seguro
    # No hardcodear credenciales
 
    # ❌ MAL
    # api_key = "sk_live_12345"
 
    # ✅ BIEN
    api_key = os.environ['API_KEY']  # Desde env vars
 
    return {
        'statusCode': 200,
        'body': 'Success'
    }

Responsabilidad por Categoría

1. Data Security

Escenario: Tienes información de tarjetas de crédito en S3

AspectoAWSCliente
Protección física del storage
Encryption en tránsito (HTTPS) disponible
Habilitar encryption en S3
Configurar bucket policies
Clasificar y proteger datos
Cumplir PCI-DSS
bash
# AWS provee la capacidad
# TÚ debes habilitarla
 
# Habilitar encryption
aws s3api put-bucket-encryption \
  --bucket mi-bucket \
  --server-side-encryption-configuration '{
    "Rules": [{
      "ApplyServerSideEncryptionByDefault": {
        "SSEAlgorithm": "AES256"
      }
    }]
  }'

2. Network Security

Escenario: Aplicación web en EC2

AspectoAWSCliente
Network infrastructure
DDoS protection básica
Security Groups configuration
Network ACLs
VPC design
Subnets (public/private)
hcl
# Terraform example
# TÚ eres responsable de configurar Security Groups
 
resource "aws_security_group" "web_sg" {
  name = "web-server-sg"
 
  # ✅ BIEN: Solo permite HTTPS
  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
 
  # ❌ MAL: No abras todos los puertos
  # ingress {
  #   from_port   = 0
  #   to_port     = 65535
  #   protocol    = "tcp"
  #   cidr_blocks = ["0.0.0.0/0"]
  # }
}

3. Compliance

Escenario: Tu app debe cumplir HIPAA (regulación médica USA)

AspectoAWSCliente
Infrastructure compliance (SOC 2, ISO 27001)
HIPAA-eligible services
Firmar BAA (Business Associate Agreement)
Configurar encryption
Configurar logging/auditing
Gestionar accesos (RBAC)
Data retention policies

AWS te da las herramientas, tú debes usarlas correctamente.


Diagrama Visual del Modelo

plaintext
---
config:
  theme: base
---
flowchart TB
    subgraph customer["🔹 CLIENTE (Security IN the Cloud)"]
        data["Client-side Data Encryption<br/>& Data Integrity"]
        platform["Platform, Applications,<br/>IAM"]
        os["OS, Network,<br/>Firewall Config"]
        encryption["Server-side Encryption<br/>(File System/Data)"]
        network["Network Traffic<br/>Protection (VPC, SG)"]
    end

    subgraph aws["🔸 AWS (Security OF the Cloud)"]
        software["Software:<br/>Compute, Storage,<br/>Database, Networking"]
        hardware["Hardware/Infrastructure:<br/>Regions, AZs,<br/>Edge Locations"]
        physical["Physical Security:<br/>Data Centers"]
    end

    data -.-> platform -.-> os -.-> encryption -.-> network
    network -.-> software -.-> hardware -.-> physical

    style customer fill:#FF9900,stroke:#232F3E,color:#000
    style aws fill:#232F3E,stroke:#FF9900,color:#fff
    style data fill:#fff,stroke:#232F3E
    style platform fill:#fff,stroke:#232F3E
    style os fill:#fff,stroke:#232F3E
    style encryption fill:#fff,stroke:#232F3E
    style network fill:#fff,stroke:#232F3E
    style software fill:#fff,stroke:#FF9900,color:#000
    style hardware fill:#fff,stroke:#FF9900,color:#000
    style physical fill:#fff,stroke:#FF9900,color:#000

Concepto clave:

  • Mientras más control tienes (IaaS), más responsabilidad
  • Mientras menos control (SaaS), menos responsabilidad

❌ Errores Comunes

Error 1: "AWS protege todos mis datos automáticamente"

Realidad:

plaintext
Escenario: Base de datos RDS con datos sensibles
 
❌ Pensamiento erróneo:
"AWS gestiona RDS, entonces mis datos están automáticamente:
- Encriptados
- Con backups
- Protegidos de acceso no autorizado"
 
✅ Realidad:
AWS provee las herramientas, TÚ debes:
- Habilitar encryption
- Configurar backups
- Configurar Security Groups
- Gestionar users/passwords
- Configurar IAM policies

Error 2: "No necesito security groups, AWS gestiona la seguridad de red"

Realidad:

bash
# AWS gestiona: Network infrastructure
# TÚ gestionas: Security Groups
 
# ❌ Default security group (NO recomendado para producción)
# Permite TODO el tráfico dentro del VPC
 
# ✅ Security group restrictivo
aws ec2 authorize-security-group-ingress \
  --group-id sg-12345678 \
  --protocol tcp \
  --port 443 \
  --cidr 10.0.0.0/16  # Solo desde tu VPC

Error 3: "AWS hace backups automáticos"

Realidad:

Para EC2:

plaintext
❌ AWS NO hace backups automáticos de EC2 instances
✅ TÚ debes: Configurar snapshots, usar AWS Backup, o third-party solutions

Para RDS:

plaintext
✅ AWS puede hacer automated backups
⚠️ Pero TÚ debes: HABILITAR la feature y configurar retention
bash
# RDS: Habilitar automated backups
aws rds modify-db-instance \
  --db-instance-identifier mydb \
  --backup-retention-period 7 \  # Retener 7 días
  --preferred-backup-window "03:00-04:00"  # 3-4 AM

Matriz de Responsabilidades por Servicio

| Servicio | Tipo | OS | Patches | Config | Data | Network | |----------|------|----|---------||------|---------| | EC2 | IaaS | Cliente | Cliente | Cliente | Cliente | Cliente | | RDS | PaaS | AWS | AWS | Compartido | Cliente | Cliente | | Lambda | Serverless | AWS | AWS | Cliente | Cliente | AWS* | | S3 | Storage | AWS | AWS | Cliente | Cliente | Cliente | | DynamoDB | PaaS | AWS | AWS | Cliente | Cliente | AWS |

*Lambda en VPC: Cliente gestiona network


Casos de Uso Reales

Caso 1: Data Breach en S3

Incidente: 100M de registros expuestos

plaintext
Causa raíz: Bucket S3 configurado como público
 
¿Culpa de AWS? NO
¿Culpa del cliente? SÍ
 
Responsabilidad del cliente:
- Configurar bucket policies correctamente
- No hacer buckets públicos por defecto
- Usar S3 Block Public Access
- Auditar configuraciones regularmente
 
Herramientas AWS (que cliente NO usó):
- S3 Block Public Access (previene buckets públicos)
- AWS Config (detecta configuraciones incorrectas)
- CloudTrail (audita cambios)

Caso 2: EC2 Comprometido

Incidente: Instancia EC2 hackeada, usado para mining de crypto

plaintext
Causa raíz: Faltaron patches de seguridad en OS
 
¿Culpa de AWS? NO
¿Culpa del cliente? SÍ
 
Responsabilidad del cliente (para EC2):
- Aplicar patches de seguridad regularmente
- Configurar Security Groups restrictivos
- Usar IAM roles (no credenciales hardcoded)
- Implementar monitoring/alerting
 
Prevención:
# Automated patching con Systems Manager
aws ssm create-patch-baseline \
  --name "ProductionBaseline" \
  --approval-rules "PatchRules=[{PatchFilterGroup={PatchFilters=[{Key=CLASSIFICATION,Values=[Security]}]},ApproveAfterDays=7}]"

Caso 3: RDS con Datos No Encriptados

Incidente: Auditoría falla por datos sin encriptar

plaintext
¿Culpa de AWS? NO
¿Culpa del cliente? SÍ
 
Responsabilidad del cliente:
- Habilitar encryption at rest para RDS
- Usar SSL/TLS para connections (encryption in transit)
- Gestionar KMS keys
 
AWS provee:
✅ Encryption capability (KMS)
✅ Documentación
 
Cliente debe:
✅ Habilitar encryption
✅ Configurar correctamente
 
# Crear RDS con encryption
aws rds create-db-instance \
  --db-instance-identifier mydb \
  --engine postgres \
  --storage-encrypted \  # ← Cliente debe especificar
  --kms-key-id arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012

📝 Preparación para el Examen

Puntos Clave para Memorizar

Regla de oro: 📌 AWS = Security OF the cloud (infraestructura) 📌 Cliente = Security IN the cloud (datos, configuración, accesos)

Por servicio:

  • EC2: Cliente gestiona TODO desde OS hacia arriba
  • RDS: AWS gestiona OS/patches, cliente gestiona DB config/data
  • Lambda: AWS gestiona servers/OS, cliente gestiona código
  • S3: Cliente gestiona bucket policies, encryption, data

Responsabilidades siempre del cliente:

  • Data encryption (habilitarla)
  • IAM users/policies
  • Security Groups configuration
  • Data classification
  • Compliance de tu industria

Responsabilidades siempre de AWS:

  • Physical security
  • Hardware
  • Network infrastructure (cables, routers físicos)
  • Hypervisor

Preguntas de Práctica

Pregunta 1:

Una empresa almacena datos de salud en S3. Según el Shared Responsibility Model, ¿quién es responsable de encriptar los datos?

A) AWS automáticamente encripta todo B) El cliente debe habilitar encryption C) Es responsabilidad compartida 50/50 D) Nadie, S3 no soporta encryption

Success

Respuesta: B) El cliente debe habilitar encryption

AWS provee la capacidad de encryption (KMS), pero el cliente debe habilitarla y configurarla. Security IN the cloud = responsabilidad del cliente.

Pregunta 2:

¿Quién es responsable de aplicar patches de seguridad al OS en una instancia EC2?

A) AWS automáticamente B) El cliente C) AWS, pero solo con un service plan premium D) Depende del OS (Linux vs. Windows)

Success

Respuesta: B) El cliente

Para EC2 (IaaS), el cliente gestiona el OS, incluyendo patches. AWS gestiona el hypervisor y hardware, pero NO el OS de la instancia.

Nota: Para RDS (PaaS), AWS gestiona OS patches.

Pregunta 3:

¿De qué es responsable AWS según el Shared Responsibility Model?

A) Configurar Security Groups B) Gestionar IAM users C) Physical security de data centers D) Encriptar datos del cliente

Success

Respuesta: C) Physical security de data centers

AWS es responsable de la seguridad DE la infraestructura física: data centers, hardware, facilities. Opciones A, B, D son responsabilidad del cliente (security IN the cloud).


🎓 Resumen

Lo que aprendimos:

  1. Shared Responsibility Model: División clara entre responsabilidades de AWS y cliente
  2. AWS (OF the cloud): Infrastructure, hardware, facilities, hypervisor
  3. Cliente (IN the cloud): Data, configuration, access management, encryption
  4. Varía por servicio: Más control (EC2) = más responsabilidad, Menos control (Lambda) = menos responsabilidad
plaintext
Regla simple:
 
IaaS (EC2):      Cliente gestiona MÁS  (OS, apps, data)
PaaS (RDS):      Cliente gestiona MEDIO (config, data)
SaaS (WorkMail): Cliente gestiona MENOS (solo users, policies)
 
Pero SIEMPRE:
- Cliente gestiona: Data, IAM, Encryption (habilitarla)
- AWS gestiona: Physical infrastructure, hypervisor

Responsabilidades comunes del cliente:

plaintext
✅ Data encryption (habilitar y configurar)
✅ IAM users, roles, policies
✅ Security Groups / Network ACLs
✅ Bucket policies (S3)
✅ Data classification
✅ Compliance con regulaciones de tu industria

Responsabilidades de AWS:

plaintext
✅ Physical security de data centers
✅ Hardware (servers, storage, network)
✅ Hypervisor
✅ Network infrastructure (cabling, routers físicos)
✅ Managed service operations (RDS patches, Lambda scaling, etc.)

⏭️ Próximo Post

En el Post #6 comenzaremos el Módulo 2: Core Services con Amazon EC2:

  • ¿Qué es EC2 y por qué es fundamental?
  • Instance types y familias
  • Pricing models (On-Demand, Reserved, Spot)
  • Casos de uso y best practices

📚 Recursos


Tags: #AWS #CloudPractitioner #Security #SharedResponsibility #Compliance #Certification

Written by Jhonny Lorenzo

Researcher at TrautsLab

Related Articles

Recent Articles

Comments