Cómo crear la política de AWS IAM usando Terraform

Cómo crear la política de AWS IAM usando Terraform
En AWS, el servicio IAM se utiliza para controlar el acceso a los servicios y recursos de AWS. Necesita un conocimiento muy profundo para configurar las políticas de IAM para asegurar privilegios mínimos a los sistemas y recursos de AWS.

Construido para el propósito de la infraestructura como solución de código (IAC), Terraform admite múltiples proveedores de servicios en la nube. Es una herramienta de código abierto desarrollada por Hashicorp. Usando IAC, podemos administrar la configuración de infraestructura con archivos de configuración. Por ejemplo, podemos implementar, actualizar y administrar nuestra infraestructura definiendo los recursos requeridos.

En esta guía, veremos cómo podemos crear un usuario de AWS y adjuntarle una política utilizando Terraform. Primero comencemos con la instalación de Terraform en Ubuntu 20.04.

Instalación de Terraform

Hashicorp proporciona el paquete oficial de Terraform para Ubuntu/Debian, Centos/Rhel, Fedora y Amazon Linux. Además de esto, también mantiene binario precompilado y también se puede compilar de la fuente. Para esta guía, estamos utilizando el paquete predeterminado proporcionado por el repositorio de paquetes Debian para instalar Terraform en Ubuntu 20.04.

Paso 1. Instale paquetes Gnupg, Software-Properties-Common y curl para verificar la firma GPG de Hashicorp e instalar el repositorio requerido:

$ sudo apt-get actualización && sudo apt-get install -y gnupg software-properties-common curl

Paso 2. Agregue la tecla Hashicorp GPG usando el comando:

$ curl -fssl https: // apt.lanzamientos.Hashicorp.com/gpg | sudo apt-key agregar -

Paso 3. Continuar agregando el repositorio requerido.

$ sudo apt-add-repository "Deb [arch = amd64] https: // apt.lanzamientos.Hashicorp.com $ (lsb_release -cs) principal "

Etapa 4. Ejecute el comando de actualización para agregar el repositorio e instalar Terraform.

$ sudo apt-get actualización && sudo apt-get install terraform

Paso 5. Verifique si se instala Terraform ejecutando el comando:

$ Terraform -version

Nuestro Terraform está instalado en nuestra máquina local, para que podamos continuar nuestra tarea de trabajar con AWS. Como se mencionó anteriormente, Terraform utiliza varios archivos de configuración para aprovisionar recursos. Cada uno de estos archivos debe residir en su respectiva carpeta/directorio de trabajo. Creemos un directorio para este propósito.

Haga una carpeta para contener sus archivos de configuración y cambie el directorio a esta carpeta:

$ mkdir linuxhint-teraform && cd linuxhint-terraform

1. Creación de usuarios de IAM usando Terraform

Tenemos solo un usuario de IAM en este momento:

Ahora haremos un 'user_create.TF'Archivo que se utilizará para crear nuestro' Amouser 'de nuestro usuario:

$ nano user_create.TF

Ahora coloque la siguiente configuración dentro:

Terraform
requerido_providers
AWS =
fuente = "Hashicorp/AWS"
versión = "~> 3.27 "


requerido_version = "> = 0.14.9 "

Proveedor "AWS"
región = "US-East-1"
access_key = "your_access_key_for_current_user"
secret_key = "your_secret_key_for_current_user"

recurso "aws_iam_user" "new_user"
nombre = "Amouser"

recurso "aws_iam_access_key" "acck"
usuario = AWS_IAM_USER.Nuevo Usuario.nombre

salida "secret_key"
valor = aws_iam_access_key.Accidente.secreto
sensible = verdadero

salida "access_key"
valor = aws_iam_access_key.Accidente.identificación

Crear una política y adjuntarla al usuario de IAM utilizando Terraform

Crearemos una lista de S3 en todas las políticas de cubos y la adjuntaremos a nuestro usuario de IAM. Ahora agregue el archivo anterior con este código:

recurso "aws_iam_user_policy" "iam"
nombre = "prueba"
usuario = AWS_IAM_USER.Nuevo Usuario.nombre
Política = <
"Versión": "2012-10-17",
"Declaración": [

"Efecto": "Permitir",
"Acción": "S3: ListAllMyBuckets",
"Recurso": "*"

]

EOF

Este archivo contiene toda la configuración que se implementará utilizando Terraform. Simplemente reemplace el texto en negrita con sus propios detalles de configuración. Exploremos cada una de las secciones utilizadas en el archivo anterior:

  • Terraform: define la configuración de Terraform. El 'Proveedores requeridos' Define el proveedor para usar con Terraform y la 'fuente' es un parámetro opcional para el nombre de host, un espacio de nombres y el tipo de proveedor. En el código anterior, la fuente se define como 'Hashicorp/AWS ' que, como todos los proveedores, se instala desde el Registro de Terraform. El proveedor anterior apunta a 'registro.terraformado.IO/Hashicorp/AWS '.

El atributo de la versión define la versión del proveedor que desea usar.

  • Proveedor: esto realmente especifica con qué plataforma en la nube va a interactuar (AWS, Azure, GCP, etc.). Esto también controla la región que está implementando sus recursos y las credenciales de seguridad para su usuario.
  • Recurso: comprende componentes que crean una infraestructura como bases de datos, almacenamiento, red, etc. La primera cadena, aquí "AWS_Instance", Define el tipo de recurso y el segundo define un nombre personalizado que desea utilizar. Estos dos se combinan para formar una identificación única para un recurso, para E.gramo. aquí 'AWS_IAM_ACCESS_KEY.Accidente.secreto' es un identificador de recursos (ID). De la misma manera, también podemos incluir tamaños de máquina, nombres de imágenes de disco o ID de VPC.

Para validar o verificar su configuración, use el comando:

$ Terraform Validate

Inicializando el directorio de Terraform

Para descargar e instalar el proveedor que definimos en nuestra configuración y otros archivos, necesitamos inicializar el directorio que contiene este archivo:

$ Terraform init

Como puede ver en la imagen de arriba, nuestro comando init es exitoso y hay algunos archivos nuevos también creados aquí. También hay un comando más: 'Plan Terraform'. Aunque no es obligatorio usarlo, tiene algunos beneficios. Por ejemplo.:

1. Puedes ver las acciones que Terraform va a realizar.

2. Puede señalar errores sintácticos en sus archivos de configuración.

Terraform no menciona este comando en su documentación porque cuando ejecuta el comando 'Terraform Aplice', el mismo plan se presentará nuevamente.

Construyendo la infraestructura

Para construir nuestra infraestructura, use el comando:

$ Terraform se aplica

Esto generará primero el plan de ejecución que describe las tareas que Terraform realizará para llevar el estado de su infraestructura a la definida en su archivo de configuración. Después de esto, se detendrá y le pedirá que confirme el plan para continuar. Si todo está configurado como lo desea, escriba 'Sí' para continuar:

Si está listo para continuar, escriba 'Sí'. Tenga en cuenta que completar el proceso lleva algún tiempo. Cuando se complete este proceso, aparecerá el siguiente mensaje:

Para ver sus credenciales de seguridad, abra el 'Terraform.archivo de tfstate 'y busque el atributo de valor en el "secret_key" y "access_key":

En su consola de administración de AWS IAM, el usuario de IAM se enumerará allí:

Para verificar qué política se adjunta a este usuario de IAM, haga clic en el nombre del usuario de IAM. De la siguiente captura de pantalla, podemos ver que o 'Amouser' tiene una política de 'prueba' adjunta con el mismo permiso que adjuntamos anteriormente en el archivo de Terraform.

Verificar la política

Para ver si nuestra política adjunta funciona como se esperaba, conéctese al usuario de IAM y ejecute el comando:

$ AWS S3 LS

Si todo se ha configurado correctamente, verá la lista de sus cubos aquí:

Destruyendo los recursos

Cuando haya terminado y ya no necesite los recursos de AWS que creó, simplemente puede eliminarlos usando el comando:

$ Terraform Destro

Conclusión

En esta guía, hemos aprendido sobre adjuntar una política de IAM a un usuario de AWS utilizando Terraform. También puede intentar adjuntar diferentes políticas a un usuario o papel de la misma manera.