Cómo crear un rol IAM en AWS utilizando Terraform
En este artículo veremos cómo crear un Rol IAM. Antes de continuar, asumo que estás familiarizado con los fundamentos de Terraform y los Roles IAM de AWS. Si quieres saber más sobre los Roles IAM haz clic aquí.En este artículo crearemos un rol y le asignaremos permisos de administrador.
Requisitos previos
- Conocimientos básicos de Terraform.
- Terraform instalado en tu sistema.
- Cuenta AWS (Crea si no tienes una).
- ‘access_key’ & ‘secret_key’ de un Usuario IAM de AWS. (Haz clic aquí para aprender a crear un usuario IAM con ‘access_key’ & ‘secret_key’ en AWS, )
Qué haremos
- Escribir archivos de configuración Terraform para crear un Rol IAM.
- Crear un Rol IAM utilizando los archivos de configuración de Terraform.
- Eliminar el Rol IAM creado utilizando Terraform.
Escribir archivos de configuración Terraform para IAM Role.
Crea un directorio dedicado donde puedas crear los archivos de configuración de Terraform.
Utiliza el siguiente comando para crear un directorio y cambiar a él tu directorio de trabajo actual.
mkdir terraform
cd terraform/
Estoy utilizando «vim» como editor para escribir en los archivos, puedes utilizar un editor de tu elección y copiar y pegar las siguientes configuraciones para crear variables.tf, terraform.tfvars y main.tf
Crea ‘main.tf’ que es responsable de crear un Rol IAM en AWS. Este main.tf leerá los valores de las variables de variables.tf y terraform.tfvars.
vim main.tf
provider "aws" { region = "${var.region}" access_key = "${var.access_key}" secret_key = "${var.secret_key}" } data "aws_iam_policy_document" "cross_account_assume_role_policy" { statement { effect = "Allow" principals { type = "AWS" identifiers = var.principal_arns } actions = ["sts:AssumeRole"] } } resource "aws_iam_role" "cross_account_assume_role" { name = var.name assume_role_policy = data.aws_iam_policy_document.cross_account_assume_role_policy.json } resource "aws_iam_role_policy_attachment" "cross_account_assume_role" { count = length(var.policy_arns) role = aws_iam_role.cross_account_assume_role.name policy_arn = element(var.policy_arns, count.index) }
Significado de los argumentos utilizados en la configuración anterior:
- política_asumir_rol – (Obligatorio) La política que concede a una entidad permiso para asumir el rol.
- política_arn (Obligatorio) – El ARN de la política que quieres aplicar
Crea ‘variables.tf’ que contiene la declaración y definición de las variables.
Aquí
la variable «principal_arns» contiene el Número de Cuenta AWS que debe tener permiso para asumir el uso de este rol. Incluso puedes pasar aquí una lista de Números de Cuenta.
La variable «policy_arns» contiene el ARN de la política que necesitamos adjuntar al Rol que vamos a crear. Incluso puedes pasar aquí una lista de ARNs de Política.
vim variables.tf
variable "access_key" { description = "Access key to AWS console" } variable "secret_key" { description = "Secret key to AWS console" } variable "region" { description = "Region of AWS VPC" } variable "name" { default = "myrole" type = "string" description = "The name of the role. " } variable "principal_arns" { default = ["123456789012"] type = list(string) description = "ARNs of accounts, groups, or users with the ability to assume this role." } variable "policy_arns" { default = ["arn:aws:iam::aws:policy/AdministratorAccess"] type = list(string) description = "List of ARNs of policies to be associated with the created IAM role" }
Una vez que hayas creado «variables.tf», no olvides cambiar los valores asignados a las variables. Debes cambiar los valores resaltados, ya que son específicos de mi entorno. Puedes mantener el resto de variables tal y como están. Si no quieres asignar el acceso de administrador al rol que estás creando, puedes cambiarlo definiendo el ARN de la política que elijas.
Crea ‘terraform.tfvars’ que contiene la definición de las variables access_key y secret_key definidas en el archivo anterior. Hemos guardado la declaración de estas 2 variables en el archivo ‘terraform.tfvars’ junto con la región.
Para crear un Rol IAM no necesitamos específicamente una región en particular, sólo he mantenido esta variable aquí para que puedas tener una comprensión de esta variable región y puedas utilizarla en tus otros archivos de creación de recursos.
Las siguientes claves deben cambiarse con las claves de tu usuario IAM. Antes de especificar estas claves, debes crearlas desde la consola de AWS y no compartirlas con nadie.
vim terraform.tfvars
region = "eu-west-3" access_key = "AKIAQ6GAIA5XFLXF6HOV" secret_key = "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"
Ahora deberías tener 3 archivos, a saber, variables.tf, terraform.tfvars y main.tf
Crea un Rol IAM utilizando los archivos de configuración de Terraform
Antes de ejecutar los siguientes comandos asegúrate de que has configurado la access_key y la secret_key válidas.
El primer comando a utilizar es ‘terraform init’. Este comando descarga e instala los plugins de los proveedores utilizados en la configuración. En nuestro caso es AWS.
terraform init
El segundo comando a utilizar es ‘terraform plan’. Este comando se utiliza para ver los cambios que se producirán en la infraestructura.
terraform plan
El comando «terraformar aplicar» creará los recursos en AWS mencionados en el archivo main.tf. Se te pedirá que proporciones tus datos para crear los recursos.
terraformar aplicar
Cuando ejecutes el comando anterior, una vez completado con éxito, podrás ver que se han añadido nuevos recursos y se han destruido 0.
Puedes ir a la consola de AWS IAM en Rol para verificar si el Rol IAM está creado o no.
Eliminar el Rol IAM creado utilizando Terraform
Si ya no necesitas los recursos que creaste utilizando la configuración mencionada en el archivo main.tf, puedes utilizar el comando «terraform destroy» para eliminar todos esos recursos.
terraform destruir
Conclusión
En este artículo hemos visto los pasos para crear un Rol IAM con privilegios de administrador. También hemos visto cómo se puede eliminar el Rol IAM con un solo comando.