Saltar al contenido

¿Cómo aplicar el principio de mínimo privilegio para que una instancia EC2 acceda a S3?

0

¿Cuál es la mejor práctica para aplicar el principio de mínimo privilegio a una instancia EC2 que solo necesita acceder a un bucket S3 específico? ¿Es preferible utilizar un IAM Role en lugar de credenciales de un usuario IAM?

1 Respuesta
0

Sí. Para una instancia EC2, la práctica recomendada es utilizar un IAM Role asociado a la instancia en lugar de crear un usuario IAM y almacenar sus Access Keys dentro del servidor.
AWS recomienda que las cargas de trabajo utilicen credenciales temporales mediante IAM Roles. De esta forma, no es necesario guardar AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY en archivos de configuración, variables de entorno o código fuente.
https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html

Por ejemplo, si la instancia EC2 solo necesita leer objetos de un bucket específico, puedes asociar al IAM Role una política como esta:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ListSpecificBucket",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::example-bucket"
    },
    {
      "Sid": "ReadObjects",
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::example-bucket/*"
    }
  ]
}

Con esta política, la aplicación que se ejecuta en EC2 podrá:

  • listar los objetos de example-bucket;
  • leer o descargar los objetos de ese bucket.
    No podrá subir, modificar ni eliminar objetos porque no se conceden permisos como s3:PutObject o s3:DeleteObject.
    La arquitectura recomendada sería:
    EC2 → IAM Role / Instance Profile → S3
    Las credenciales temporales del Role son proporcionadas automáticamente a la instancia mediante el servicio de metadatos de EC2 (IMDS). AWS CLI y los AWS SDK normalmente las detectan y utilizan automáticamente, por lo que no es necesario administrar Access Keys manualmente.
    Además, para seguir aplicando el principio de mínimo privilegio, conviene:
  • limitar Resource únicamente al bucket necesario;
  • conceder solo las acciones realmente requeridas;
  • si solo necesita una carpeta/prefijo concreto, restringir también el acceso a dicho prefijo;
  • revisar periódicamente los permisos utilizando IAM Access Analyzer.
    Por tanto, para este caso, IAM Role es preferible a un usuario IAM con credenciales permanentes.
EXPERTO

respondido hace un mes

No has iniciado sesión. Iniciar sesión para publicar una respuesta.

Una buena respuesta responde claramente a la pregunta, proporciona comentarios constructivos y fomenta el crecimiento profesional en la persona que hace la pregunta.