0Pricing
Terraform Infrastructure as Code · Lección

Gestión de buckets de S3 e IAM

Aprenda a aprovisionar y configurar buckets de almacenamiento S3 y a gestionar recursos de AWS Identity and Access Management (IAM) con Terraform.

Gestión de buckets de S3 e IAM es una lección gratuita de Terraform Infrastructure as Code en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Terraform Infrastructure as Code, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Terraform Infrastructure as Code incluye 4 lecciones en total.

S3 y Terraform: almacenamiento en la nube

Amazon S3 (Simple Storage Service) ofrece almacenamiento de objetos altamente escalable, duradero y disponible. Es ideal para copias de seguridad, sitios web estáticos y archivado de datos.

Administrar buckets de S3 con Terraform ofrece varias ventajas:

  • Automatización: Cree y configure buckets mediante programación.
  • Control de versiones: Realice un seguimiento de los cambios en las configuraciones de sus buckets.
  • Coherencia: Garantice que todos los entornos tengan configuraciones de S3 idénticas.

Su primer bucket de S3

Definamos un bucket de S3 sencillo. Para ello se utiliza el recurso aws_s3_bucket.

Los nombres de los buckets deben ser únicos globalmente en todas las cuentas de AWS. ¡Elija un nombre único!

Intente ejecutar este ejemplo:

resource "aws_s3_bucket" "my_unique_bucket" {
  bucket = "my-coddykit-unique-bucket-12345" # Replace with a globally unique name
}

output "bucket_id" {
  value = aws_s3_bucket.my_unique_bucket.id
}

Nombres y región del bucket

Al crear un bucket de S3, recuerde estos puntos clave:

  • Unicidad global: Los nombres de los buckets deben ser únicos globalmente en todas las cuentas de AWS.
  • Región: Aunque los nombres son globales, el bucket se encuentra en una región específica de AWS, definida por la configuración de su proveedor de AWS.
  • Reglas de nomenclatura: Los nombres deben estar en minúsculas, tener entre 3 y 63 caracteres y pueden contener guiones.

Elegir una buena convención de nombres es esencial para mantener la organización y la claridad.

Seguridad y funciones de S3

S3 ofrece funciones como el versionado, que permite conservar varias versiones de un objeto, y los bloqueos del acceso público para mejorar la seguridad. Para la mayoría de los buckets, es fundamental bloquear el acceso público de forma predeterminada.

Este ejemplo configura el versionado y garantiza que el acceso público esté bloqueado.

Intente ejecutar este ejemplo:

resource "aws_s3_bucket" "my_versioned_bucket" {
  bucket = "coddykit-versioned-bucket-98765" # Replace with a unique name
}

resource "aws_s3_bucket_versioning" "my_versioned_bucket_versioning" {
  bucket = aws_s3_bucket.my_versioned_bucket.id
  versioning_configuration {
    status = "Enabled"
  }
}

resource "aws_s3_bucket_public_access_block" "my_versioned_bucket_public_access_block" {
  bucket = aws_s3_bucket.my_versioned_bucket.id

  block_public_acls       = true
  block_public_and_cross_account_access = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

output "bucket_name_versioned" {
  value = aws_s3_bucket.my_versioned_bucket.bucket
}

AWS IAM: identidad y acceso

AWS IAM (Identity and Access Management) es un servicio web que le ayuda a controlar de forma segura el acceso a los recursos de AWS. Es fundamental para la seguridad.

Con IAM, puede:

  • Administrar usuarios y su acceso mediante programación o la consola.
  • Conceder permisos detallados para recursos específicos de AWS.
  • Controlar quién puede hacer qué en su cuenta de AWS.

Terraform le permite definir y administrar recursos de IAM igual que los buckets de S3.

Aprovisionamiento de un usuario de IAM

Creemos un usuario de IAM nuevo mediante Terraform. Un usuario de IAM representa a una persona o un servicio que interactúa con AWS.

Este usuario todavía no tendrá permisos; los agregaremos a continuación.

Intente ejecutar este ejemplo:

resource "aws_iam_user" "coddykit_user" {
  name = "coddykit-app-user"
  path = "/system/"
  tags = {
    Department = "DevOps"
  }
}

output "iam_user_name" {
  value = aws_iam_user.coddykit_user.name
}

output "iam_user_arn" {
  value = aws_iam_user.coddykit_user.arn
}

Comprender las políticas de IAM

Las políticas de IAM son documentos que definen permisos. Especifican qué acciones se permiten o se deniegan en qué recursos y bajo qué condiciones.

Las políticas se escriben en JSON y se pueden asociar a usuarios, grupos o roles.

  • Políticas basadas en identidad: Se asocian a una identidad de IAM (usuario, grupo o rol).
  • Políticas basadas en recursos: Se asocian a un recurso, como un bucket de S3 o una cola de SQS.

Concesión de permisos de S3

Ahora creemos una política que conceda a nuestro usuario de IAM acceso de solo lectura a un bucket de S3 específico y asociémosla.

El recurso aws_iam_policy define la política, y aws_iam_user_policy_attachment la vincula al usuario.

Intente ejecutar este ejemplo:

resource "aws_s3_bucket" "policy_target_bucket" {
  bucket = "coddykit-policy-bucket-112233" # Unique name
}

resource "aws_iam_user" "s3_reader_user" {
  name = "coddykit-s3-reader"
}

data "aws_iam_policy_document" "s3_read_only_policy" {
  statement {
    actions = [
      "s3:GetObject",
      "s3:ListBucket"
    ]
    resources = [
      aws_s3_bucket.policy_target_bucket.arn,
      "${aws_s3_bucket.policy_target_bucket.arn}/*"
    ]
  }
}

resource "aws_iam_policy" "s3_read_only" {
  name        = "CoddyKitS3ReadOnlyPolicy"
  description = "Grants read-only access to a specific S3 bucket"
  policy      = data.aws_iam_policy_document.s3_read_only_policy.json
}

resource "aws_iam_user_policy_attachment" "attach_s3_read_only" {
  user       = aws_iam_user.s3_reader_user.name
  policy_arn = aws_iam_policy.s3_read_only.arn
}

output "s3_reader_user_name" {
  value = aws_iam_user.s3_reader_user.name
}

output "s3_read_only_policy_arn" {
  value = aws_iam_policy.s3_read_only.arn
}

Organización mediante grupos de IAM

Para facilitar la administración, especialmente cuando hay muchos usuarios, puede utilizar grupos de IAM. Un grupo es una colección de usuarios de IAM.

En lugar de asociar políticas a usuarios individuales, puede asociarlas a un grupo; todos los usuarios de ese grupo heredarán esos permisos.

Esto simplifica la administración de permisos y facilita el cumplimiento del principio de privilegio mínimo.

Comprobación rápida: S3 e IAM

¿Cuáles de las siguientes afirmaciones sobre la administración de buckets de AWS S3 y usuarios o políticas de IAM con Terraform son VERDADERAS?

Repaso: S3 e IAM

¡Excelente trabajo! En esta lección, ha aprendido a administrar buckets de AWS S3 y recursos de IAM mediante Terraform.

  • Aprovisionamos buckets de S3, configuramos el versionado y bloqueamos el acceso público.
  • Creamos usuarios de IAM y asociamos políticas personalizadas para conceder permisos específicos.
  • Ahora comprende la importancia de S3 para el almacenamiento y de IAM para controlar de forma segura el acceso en AWS, todo definido como código.

A continuación, profundizaremos en técnicas avanzadas de administración del estado.

Preguntas frecuentes

¿La lección «Gestión de buckets de S3 e IAM» es gratis?

Sí — el texto completo de «Gestión de buckets de S3 e IAM» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Terraform Infrastructure as Code, actualiza a CoddyKit PRO. El curso de Terraform Infrastructure as Code incluye 4 lecciones en total.

¿Qué aprenderé en «Gestión de buckets de S3 e IAM»?

Aprenda a aprovisionar y configurar buckets de almacenamiento S3 y a gestionar recursos de AWS Identity and Access Management (IAM) con Terraform. Practicas Terraform Infrastructure as Code con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Terraform Infrastructure as Code?

No se requiere experiencia previa. Terraform Infrastructure as Code en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Gestión de buckets de S3 e IAM»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Terraform Infrastructure as Code?

Sí. Cada lección de Terraform Infrastructure as Code incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Configuración del proveedor de AWS
  2. Aprovisionamiento de instancias EC2
  3. Gestión de buckets de S3 e IAM
  4. Configuración de VPC y redes
← Volver a Terraform Infrastructure as Code