Guía de Laboratorio: IAM, AWS CLI y Políticas de Seguridad
¡Bienvenido al laboratorio de Seguridad y Gestión de Accesos! En esta práctica aplicarás conceptos fundamentales de AWS Identity and Access Management (IAM).
Objetivos del Laboratorio:
-
Configurar y utilizar la interfaz de línea de comandos (AWS CLI).
-
Asignar permisos a servidores de forma segura utilizando Roles IAM.
-
Demostrar la regla del “Deny Explícito” utilizando Políticas Basadas en Recursos (S3 Bucket Policies).
Práctica 1: Configuración y Acceso por AWS CLI
En esta primera parte, conectaremos tu terminal local con tu cuenta de AWS Academy utilizando credenciales temporales.
Paso 1: Obtener tus credenciales del Learner Lab
-
Ingresa a tu panel de Vocareum (AWS Academy Learner Lab) e inicia tu laboratorio haciendo clic en Start Lab.
-
Haz clic en el enlace AWS Details (arriba a la derecha).
-
En la ventana que aparece, busca la sección AWS CLI y haz clic en Show.
-
Copia todo el bloque de texto que aparece (comienza con
[default]e incluyeaws_access_key_id,aws_secret_access_keyyaws_session_token).
Paso 2: Configurar tu entorno local
-
Abre la terminal de tu computadora (Símbolo del sistema/PowerShell en Windows, o Terminal en Mac/Linux).
-
Busca o crea el archivo de credenciales de AWS:
-
Windows:
%USERPROFILE%\.aws\credentials(Ej.C:\Users\TuUsuario\.aws\credentials) -
Mac/Linux:
~/.aws/credentials
-
-
Abre el archivo con un editor de texto de texto simple (como el Bloc de Notas) y pega el bloque de texto que copiaste en el Paso 1. Guarda el archivo.
Paso 3: Verificar la conexión
-
En tu terminal, ejecuta el comando de verificación de identidad:
aws sts get-caller-identity -
Si la configuración fue exitosa, verás un resultado en formato JSON con tu
UserId,AccountyArn. ¡Ya estás conectado a AWS desde tu computadora!
Práctica 2: Roles IAM (Acceso Seguro sin Llaves)
Vamos a demostrar por qué NUNCA debes guardar tus credenciales de AWS CLI dentro de un servidor EC2, y cómo usar Roles en su lugar.
Paso 1: Crear un recurso de prueba
-
Ve a la consola de AWS, entra a S3 y crea un bucket.
-
Nómbralo algo único, por ejemplo:
lab-roles-bucket-[tu-nombre-y-fecha]. -
Sube cualquier archivo de texto o imagen pequeño a este bucket.
Paso 2: Lanzar una instancia EC2 y probar el error
-
Ve a la consola de EC2 y lanza una nueva instancia usando Amazon Linux 2023 (puedes dejar todos los valores por defecto). IMPORTANTE: No le asignes ningún Rol IAM en este paso.
-
Una vez que la instancia esté en ejecución, selecciónala y haz clic en Conectar usando EC2 Instance Connect (en el navegador).
-
En la terminal de la instancia, intenta listar los archivos de tu bucket ejecutando:
aws s3 ls s3://[NOMBRE-DE-TU-BUCKET]- Resultado esperado: Un error de Access Denied o falta de credenciales. La instancia no tiene permisos.
Paso 3: Crear y asignar el Rol IAM
-
Abre una nueva pestaña, ve a la consola de IAM -> Roles -> Crear rol.
-
Tipo de entidad de confianza: Servicio de AWS. Caso de uso: EC2.
-
En permisos, busca y selecciona:
AmazonS3ReadOnlyAccess. -
Nombre del rol:
Rol-EC2-Lector-S3. Haz clic en Crear rol. -
Regresa a la consola de EC2, selecciona tu instancia -> Acciones -> Seguridad -> Modificar rol de IAM.
-
Selecciona el
Rol-EC2-Lector-S3y haz clic en Actualizar rol de IAM.
Paso 4: Comprobar el acceso
-
Regresa a la pestaña donde tienes abierta la terminal de tu instancia EC2.
-
Vuelve a ejecutar el comando:
aws s3 ls s3://[NOMBRE-DE-TU-BUCKET]- Resultado esperado: ¡Éxito! Ahora verás el archivo que subiste. AWS generó credenciales temporales en segundo plano gracias al Rol.
Práctica 3: Políticas Basadas en Recursos (El Poder del Deny Explícito)
En esta práctica simularemos a dos usuarios con “Acceso Total” a S3. Luego, aplicaremos una política directamente en el bucket que bloquee explícitamente al Usuario 2.
Paso 1: Crear los usuarios en IAM
-
Ve a la consola de IAM -> Usuarios -> Agregar usuarios.
-
Crea el usuario con el nombre:
usuario-1. -
En permisos, selecciona Asociar políticas directamente y elige
AmazonS3FullAccess. -
Repite el mismo proceso para crear un
usuario-2, también conAmazonS3FullAccess.
Paso 2: Obtener Access Keys para los usuarios
-
Entra a los detalles de
usuario-1-> Pestaña Credenciales de seguridad -> Crear clave de acceso. -
Selecciona CLI, confirma y copia el Access Key y el Secret Key. (No cierres la ventana o guárdalos en un bloc de notas temporal).
-
Haz lo mismo para el
usuario-2.
Paso 3: Configurar los perfiles en tu CLI local
En la terminal de tu computadora (la que configuraste en la Práctica 1), vamos a crear perfiles nombrados para probar múltiples cuentas rápidamente.
-
Ejecuta el comando para configurar al usuario 1:
aws configure --profile usuario-1Pega las llaves del usuario 1, usa tu región actual (ej.
us-east-1) y formatojson. -
Ejecuta el comando para el usuario 2:
aws configure --profile usuario-2Pega las llaves del usuario 2.
Paso 4: Crear el Bucket Protegido
-
En la consola de AWS, ve a S3 y crea un nuevo bucket llamado
bucket-protegido-[tu-nombre]. -
Como ambos usuarios tienen
AmazonS3FullAccess, en este momento ambos pueden ver el bucket. Compruébalo en tu terminal:aws s3 ls s3://bucket-protegido-[tu-nombre] --profile usuario-1 aws s3 ls s3://bucket-protegido-[tu-nombre] --profile usuario-2(Ninguno de los dos debería dar error).
Paso 5: Aplicar la Resource Policy (Bucket Policy)
-
En la consola de S3, entra a tu nuevo
bucket-protegido-[tu-nombre]. -
Ve a la pestaña Permisos -> Política del bucket -> Editar.
-
Copia y pega la siguiente política. IMPORTANTE: Debes reemplazar
[TU_ID_DE_CUENTA]por tu número de cuenta de AWS (12 dígitos, sin guiones) y[NOMBRE_DEL_BUCKET]por el nombre real de tu bucket.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PermitirTodoAUsuario1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::[TU_ID_DE_CUENTA]:user/usuario-1"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::[NOMBRE_DEL_BUCKET]",
"arn:aws:s3:::[NOMBRE_DEL_BUCKET]/*"
]
},
{
"Sid": "DenegarTodoAUsuario2",
"Effect": "Deny",
"Principal": {
"AWS": "arn:aws:iam::[TU_ID_DE_CUENTA]:user/usuario-2"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::[NOMBRE_DEL_BUCKET]",
"arn:aws:s3:::[NOMBRE_DEL_BUCKET]/*"
]
}
]
}
- Haz clic en Guardar cambios.
Paso 6: La Prueba Final (¡El Deny Gana!)
Regresa a tu terminal local y prueba el acceso nuevamente.
-
Prueba como
usuario-1:aws s3 ls s3://bucket-protegido-[tu-nombre] --profile usuario-1Resultado: Sin errores. El usuario 1 tiene permiso.
-
Prueba como
usuario-2:aws s3 ls s3://bucket-protegido-[tu-nombre] --profile usuario-2Resultado: ¡Access Denied! Conclusión: Acabas de demostrar la regla más importante de evaluación de políticas en AWS: No importa que el Usuario 2 tenga el pase VIP de
AmazonS3FullAccesspegado a su identidad; si la política del recurso (Bucket Policy) tiene un Deny Explícito, el acceso es denegado rotundamente. ¡ElDenysiempre gana!
Fin del Laboratorio. ¡No olvides eliminar tus instancias EC2 y usuarios de IAM cuando termines para evitar costos innecesarios en tu entorno!