0Pricing
Terraform Infrastructure as Code · Lección

Gestión segura de credenciales

Implemente buenas prácticas para gestionar de forma segura las credenciales de los proveedores cloud y los datos confidenciales en sus pipelines automatizados de Terraform.

Gestión segura de credenciales 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.

Protección de credenciales en CI/CD

Al automatizar la infraestructura con Terraform en una canalización de CI/CD, su canalización necesita acceder a cuentas de proveedores de nube. Gestionar estas credenciales de forma segura es fundamental para evitar accesos no autorizados y filtraciones de datos.

Imagine que le da a un robot las llaves de su casa. Quiere asegurarse de que solo el robot adecuado tenga las llaves correctas y de que esas llaves estén protegidas.

Evite codificar secretos directamente

Un error común consiste en insertar información confidencial, como claves de API o contraseñas, directamente en los archivos de configuración de Terraform o en los scripts de CI/CD. Esto se denomina codificación directa.

  • Riesgo de seguridad: Los secretos pasan a formar parte del historial del código fuente (por ejemplo, Git).
  • Exposición: Cualquier persona con acceso al repositorio puede verlos.
  • Mantenimiento: Cambiar un secreto requiere modificar el código y volver a implementar.

Variables de entorno (básico)

Para el desarrollo local o situaciones básicas, las variables de entorno son una forma sencilla de proporcionar credenciales sin codificarlas directamente. Debe configurarlas en su shell antes de ejecutar Terraform.

Aunque es mejor que codificarlas directamente, esta opción no es ideal para canalizaciones de CI/CD compartidas, ya que los secretos aún pueden ser visibles en los registros o en las listas de procesos si no se gestionan con cuidado.

export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="abcdef..."
terraform plan

Administradores de secretos de plataformas de CI/CD

Las plataformas modernas de CI/CD ofrecen funciones integradas de gestión de secretos. Estas permiten almacenar datos confidenciales de forma segura dentro de la propia plataforma, separados del repositorio de código.

Cuando se ejecuta la canalización, estos secretos se inyectan en el entorno de compilación como variables de entorno o archivos, pero nunca se exponen en los registros ni se almacenan en el repositorio.

Ejemplo de secretos de GitHub Actions

GitHub Actions proporciona una sección específica para los secretos del repositorio. Puede añadirlos mediante Settings > Secrets and variables > Actions > New repository secret.

Después, en el archivo de flujo de trabajo, puede hacer referencia a estos secretos mediante el contexto secrets. Se ocultan automáticamente en los registros.

name: Deploy Infra
on: [push]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Configure AWS Credentials
      uses: aws-actions/configure-aws-credentials@v1
      with:
        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        aws-region: us-east-1
    - name: Terraform Init
      run: terraform init

Roles de IAM de nube para canalizaciones

El enfoque más seguro para la autenticación de CI/CD consiste en usar roles de Identity and Access Management (IAM) o cuentas de servicio proporcionados por su proveedor de nube.

En lugar de claves de acceso de larga duración, su canalización de CI/CD asume un rol temporal con permisos específicos, a menudo mediante OpenID Connect (OIDC) para establecer relaciones de confianza. Esto elimina por completo la necesidad de almacenar credenciales estáticas.

Ejemplo de rol de AWS IAM + OIDC

En AWS, puede configurar un rol de IAM que el flujo de trabajo de GitHub Actions pueda asumir directamente mediante OIDC. ¡Esto significa que no se almacenan claves de acceso de AWS en ningún lugar!

Debe definir una política de confianza para el rol que permita al proveedor de OIDC de GitHub asumirlo basándose en condiciones específicas (por ejemplo, el repositorio o la rama).

resource "aws_iam_role" "github_actions_role" {
  name = "github-actions-oidc-role"
  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Effect = "Allow"
        Principal = {
          Federated = "arn:aws:iam::123456789012:oidc-provider/token.actions.githubusercontent.com"
        }
        Action = "sts:AssumeRoleWithWebIdentity"
        Condition = {
          StringEquals = {
            "token.actions.githubusercontent.com:aud" : "sts.amazonaws.com"
          }
          StringLike = {
            "token.actions.githubusercontent.com:sub" : "repo:your-org/your-repo:*"
          }
        }
      }
    ]
  })
}

Salidas confidenciales de Terraform

A veces, las salidas de Terraform pueden contener datos confidenciales, como contraseñas de bases de datos o claves privadas. Debe marcar estas salidas como sensitive.

Cuando una salida se marca como confidencial, Terraform oculta su valor en la salida de la CLI y en el archivo de estado cuando se muestra, lo que ayuda a evitar exposiciones accidentales.

output "database_password" {
  value       = aws_db_instance.main.password
  description = "The database root password."
  sensitive   = true
}

Comprobación de credenciales seguras

¿Qué método se considera generalmente el más seguro para que las canalizaciones de CI/CD se autentiquen con proveedores de nube, eliminando la necesidad de almacenar credenciales estáticas de larga duración?

Repaso: credenciales seguras

Ha aprendido estrategias fundamentales para gestionar datos confidenciales en sus canalizaciones de CI/CD de Terraform:

  • Evite la codificación directa: No inserte nunca secretos directamente en el código.
  • Aproveche los secretos de CI/CD: Use administradores de secretos específicos de la plataforma para las credenciales estáticas.
  • Adopte roles de IAM/OIDC: Para obtener la máxima seguridad, use roles de IAM del proveedor de nube con OIDC para asumir permisos temporales sin almacenar claves.
  • Marque las salidas como confidenciales: Proteja los datos confidenciales expuestos por las salidas de Terraform.

Estas prácticas son fundamentales para mantener una infraestructura sólida y segura.

Preguntas frecuentes

¿La lección «Gestión segura de credenciales» es gratis?

Sí — el texto completo de «Gestión segura de credenciales» 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 segura de credenciales»?

Implemente buenas prácticas para gestionar de forma segura las credenciales de los proveedores cloud y los datos confidenciales en sus pipelines automatizados de 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 segura de credenciales»?

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. Terraform en pipelines de CI/CD
  2. Automatización de `plan` y `apply`
  3. Gestión segura de credenciales
  4. GitOps y automatización de pull requests
← Volver a Terraform Infrastructure as Code