es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Creando usuario IAM con opción de cambio de contraseña al iniciar sesión utilizando Terraform.

Estoy tratando de crear un usuario IAM a través de Terraform con la opción de cambiar la contraseña al iniciar sesión. Estoy obteniendo una clave pública PGP codificada en base 64, pero no sé cómo descifrarla. He intentado usar la fuente de datos “pgp_decrypt”, pero no funciona. Quiero que esto funcione sin instalar/usar Keybase. ¿Alguien podría indicarme el proceso paso a paso para lograr esto?
Adjunto mi código a continuación para referencia.

recurso "aws_iam_user" "test_users" {
  nombre = "testuser"
}

recurso "pgp_key" "pgp_gen" {
  nombre    = "krishna"
  email   = "mxxxxxxa@xxxxxx.com"
  comentario = "Generated PGP Key for"
}

recurso "aws_iam_user_login_profile" "user_password_gen" {
  usuario = "testuser"
  pgp_key = pgp_key.pgp_gen.public_key_base64
  se_requiere_restablecer_contraseña = true
  depends_on = [aws_iam_user.test_users]
}

data "pgp_decrypt" "decrypt_private_key" {
  texto_cifrado  = aws_iam_user_login_profile.user_password_gen.password_encriptada
  clave_privada = pgp_key.pgp_gen.private_key
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para descifrar la clave pública de PGP, puedes utilizar el origen de datos “pgp_decrypt” en Terraform. Aquí tienes un proceso paso a paso para lograrlo:

    1. Primero, asegúrate de tener instalado el origen de datos “pgp_decrypt” verificando tu versión de Terraform ejecutando terraform -v.
    2. En tu código de Terraform, utiliza el recurso pgp_key para generar una nueva clave PGP.

    3. Crea el recurso aws_iam_user para definir el usuario IAM que deseas crear.

    4. Utiliza el recurso aws_iam_user_login_profile para crear el perfil de inicio de sesión del usuario IAM con cifrado PGP. Establece la propiedad pgp_key en la clave pública PGP codificada en base-64 generada por el recurso pgp_key. Además, establece la propiedad password_reset_required en true para asegurarte de que el usuario debe cambiar su contraseña al iniciar sesión por primera vez.

    5. Por último, utiliza el origen de datos pgp_decrypt para descifrar la propiedad encrypted_password del recurso aws_iam_user_login_profile. Establece la propiedad ciphertext en la propiedad encrypted_password del recurso aws_iam_user_login_profile y la propiedad private_key en la clave privada del recurso pgp_key como pgp_key.pgp_gen.private_key.

    Aquí tienes una versión actualizada de tu código con estos pasos incluidos:

    resource "aws_iam_user" "test_users" {
      name = "testuser"
    }
    
    resource "pgp_key" "pgp_gen" {
      name    = "krishna"
      email   = "mxxxxxxa@xxxxxx.com"
      comment = "Generated PGP Key for"
    }
    
    resource "aws_iam_user_login_profile" "user_password_gen" {
      user                     = aws_iam_user.test_users.name
      pgp_key                  = pgp_key.pgp_gen.public_key_base64
      password_reset_required  = true
      depends_on               = [aws_iam_user.test_users]
    }
    
    data "pgp_decrypt" "decrypt_private_key" {
      ciphertext   = aws_iam_user_login_profile.user_password_gen.encrypted_password
      private_key  = pgp_key.pgp_gen.private_key
    }
    
    output "decrypted_password" {
      value = data.pgp_decrypt.decrypt_private_key.plaintext
    }
    

    Después de ejecutar terraform apply, la contraseña descifrada estará disponible como una variable de salida llamada decrypted_password. Puedes acceder a ella ejecutando terraform output decrypted_password.

Comments are closed.