Gestión de identidad y acceso (IAM)

Asegurar los recursos en AWS comienza con el uso eficaz del servicio de Gestión de Identidad y Acceso (IAM). Terraform permite la gestión de políticas y roles IAM de forma declarativa, lo que facilita la replicación y administración coherente de permisos.

Por ejemplo, al definir un rol IAM con permisos específicos, es importante asegurarse de que las políticas adheridas sean las mínimas necesarias para los recursos que va a gestionar. A continuación, se muestra un ejemplo de cómo definir un rol IAM que solo permite acciones de lectura en S3:


resource "aws_iam_role" "read_only_s3" {
  name = "read_only_s3"
  assume_role_policy = jsonencode({
    Version = "2012-10-17",
    Statement = [{
      Effect = "Allow",
      Principal = {"Service": "ec2.amazonaws.com"},
      Action    = "sts:AssumeRole"
    }]
  })
}

resource "aws_iam_policy" "read_only_s3_policy" {
  name        = "ReadOnlyS3Policy"
  description = "Policy to provide read-only access to S3 buckets"
  policy = jsonencode({
    Version = "2012-10-17",
    Statement = [{
      Effect = "Allow",
      Action = ["s3:GetObject", "s3:ListBucket"],
      Resource = ["arn:aws:s3:::your-bucket-name", "arn:aws:s3:::your-bucket-name/*"]
    }]
  })
}

resource "aws_iam_role_policy_attachment" "read_only_s3_attach" {
  role       = aws_iam_role.read_only_s3.name
  policy_arn = aws_iam_policy.read_only_s3_policy.arn
}

Cifrado y protección de datos

Implementar el cifrado de datos es una práctica crítica para protegerlos tanto en tránsito como en reposo. Con Terraform, se pueden declarar recursos como S3 y RDS con cifrado habilitado de manera predeterminada.

Por ejemplo, para crear un bucket en S3 con cifrado predeterminado y las mejores prácticas de seguridad, puedes usar:

resource "aws_s3_bucket" "secure_bucket" {
  bucket = "my-secure-bucket"
  
  server_side_encryption_configuration {
    rule {
      apply_server_side_encryption_by_default {
        sse_algorithm = "AES256"
      }
    }
  }
  
  versioning {
    enabled = true
  }

  lifecycle_rule {
    id      = "log"
    enabled = true

    prefix         = "log/"
    transition {
      days          = 30
      storage_class = "GLACIER"
    }

    expiration {
      days = 365
    }
  }
}

Monitoreo y auditoría

Configuar AWS CloudTrail para registrar todas las acciones realizadas en sus cuentas AWS permite monitoreo y auditoría efectivos. Terraform facilita la creación y configuración de este servicio para garantizar que todas las acciones sean registradas y auditables.

Aquí un ejemplo de cómo definir un trail simple en CloudTrail utilizando Terraform:

resource "aws_cloudtrail" "my_cloudtrail" {
  name                          = "my-cloudtrail"
  s3_bucket_name                = aws_s3_bucket.secure_bucket.id
  include_global_service_events = true
  is_multi_region_trail         = true
  enable_logging                = true
}
 

Esta píldora formativa está extraída del Curso online de Fundamentos de Terraform con AWS: automatización y eficiencia en la nube.

¿Te gusta el contenido de esta píldora de conocimiento?

No pierdas tu oportunidad y ¡continúa aprendiendo!

Política de privacidad

ADR Formación utiliza cookies propias y de terceros para fines analíticos anónimos, guardar las preferencias que selecciones y para el funcionamiento general de la página.

Puedes aceptar todas las cookies pulsando el botón "Aceptar" o configurarlas o rechazar su uso pulsando el botón "Configurar".

Puedes obtener más información y volver a configurar tus preferencias en cualquier momento en la Política de cookies