Cómo almacenar la clave de acceso y la clave secreta del usuario de AWS en Jenkins

Puedes almacenar tus claves de AWS de forma segura en las credenciales de Jenkins Si quieres interactuar con AWS desde tu servidor de Jenkins, puedes almacenar tus claves de usuario de AWS IAM de forma segura en Jenkins, en lugar de utilizarlas abiertamente en tu pipeline de Jenkins. El plugin de Jenkins «CloudBees AWS Credentials» permite almacenar las credenciales de usuario de AWS IAM dentro de la API de credenciales de Jenkins. Luego podemos utilizar estas credenciales en nuestro pipeline e inyectarlas en el pipeline con el paso «withAWS». Para utilizar el paso «withAWS», necesitamos instalar el plugin «AWS Steps Plugin».

En este artículo, instalaremos el plugin «CloudBees AWS Credentials» y almacenaremos la clave secreta y la clave de acceso del usuario de AWS IAM en Jenkins utilizando este plugin. Instalaremos el plugin «AWS Steps» para poder utilizar «awsStep» para inyectar la credencial que hemos creado. Realizaremos la operación de carga de objetos S3 y de descarga de objetos desde el pipeline para probar la credencial que hemos creado.

Requisitos previos

  1. Usuario IAM de AWS con su clave de acceso y clave secreta que tenga acceso de lectura/escritura a los Buckets de S3(Haz clicaquí para aprender a crear un usuario IAM en AWS).
  2. Bucket de S3(Haz clicaquí para aprender a crear un Bucket de S3 en AWS).
  3. Servidor Jenkins(Busca «¿Cómo instalar Jenkins utilizando un archivo war en una instancia AWS EC2 Ubuntu?» para aprender a crear un servidor Jenkins)

¿Qué vamos a hacer?

  1. Instalar el pluginCloudbees AWS Credentials.
  2. Almacena las claves de acceso y secretas de AWS en Credenciales de Jenkins.
  3. Instala el plugin dePasos de AWS.
  4. Crea un Pipeline y prueba la credencial que hemos creado.

Instala el plugin de Credenciales de AWS de Cloudbees

Inicia sesión en Jenkins en http://<Jenkins-IP>:8080/jenkins

Aquí tengo http://52.87.233.129:8080/jenkins/

Verás el panel de control de la siguiente manera. Haz clic en «Gestionar Jenkins» en el panel izquierdo.

Panel de control de Jenkins

Aquí, en «Configuración del sistema» haz clic en «Gestionar plugins» para instalar el plugin necesario.

Gestionar Jenkins

Verás 4 pestañas, Actualizaciones, Disponible, Instalado y Avanzado. Haz clic en la pestaña «Disponible» para buscar el plugin.

Gestionar plugins

Busca «cloudbees secret manager» en el cuadro de búsqueda de la pestaña «Disponible». Marca la casilla del resultado del plugin «Cloudbees AWS Credentials» que obtengas y haz clic en «Instalar sin reiniciar» para instalar el plugin sin reiniciar Jenkins.

Plugin de credenciales de AWS de CloudBees

Una vez instalado el plugin, obtendrás el siguiente mensaje de «Éxito».

Instalación exitosa del plugin

Almacenar las claves de acceso y secretas de AWS en las credenciales de Jenkins

Ya estamos preparados para almacenar las credenciales de AWS.

Vuelve al panel principal y haz clic en «Gestionar Jenkins».

Volver al panel de control de Jenkins

Ahora, haz clic en «Gestionar credenciales» en «Seguridad» para almacenar la clave secreta y la clave de acceso de AWS.

Volver a gestionar Jenkins

Haz clic en «global» en «Almacenes asignados a Jenkins» –> «Añadir credenciales».

Gestionar credenciales

En esta página, podrás almacenar los secretos. Haz clic en el desplegable Tipo y selecciona AWS. Especifica un nombre para los secretos, la descripción, el ID de la clave de acceso y la clave de acceso secreta. Haz clic en Aceptar para almacenar los secretos.

Almacenar las credenciales de AWS

Puedes ver que el secreto ya está disponible.

Credenciales guardadas

Instalar el plugin de pasos de AWS

El siguiente paso es instalar el plugin «Pipeline AWS Steps». Vuelve al panel principal, haz clic en Gestionar Jenkins — > Gestionar Plugins.

En la pestaña «Disponible», busca «Pasos de AWS». Selecciona el plugin «Pipeline: AWS Steps» y haz clic en «Instalar sin reiniciar». Esto instalará el plugin sin reiniciar Jenkins.

Plugin AWS Steps

Una vez que el plugin se haya instalado correctamente, aparecerá el siguiente mensaje de éxito.

Instalación exitosa del plugin

Crea un Pipeline y prueba la credencial que hemos creado.

Ahora, vamos a crear un nuevo Trabajo. En este Trabajo, intentaremos utilizar el secreto que hemos creado.

Vuelve al panel principal, haz clic en «Nuevos elementos».

Volver al panel de control de Jenkins

Dale un nombre al Trabajo, y selecciona «Tubería» como tipo de Trabajo.Haz clic en «Aceptar», esto creará un Trabajo de tipo Tubería.

Nuevo trabajo - Jenkins Pipeline

Haz clic en «Crear activadores», desplázate hasta «Tubería», selecciona «Script de tubería» y añade el siguiente código en el cuadro de texto.

Canalización guiada

Se trata de un Pipeline con 1 etapa «probar las credenciales de AWS». En esta etapa, utilizaremos «withAWS» y especificaremos aquí nuestro nombre secreto. Dentro de él, crearemos un archivo de muestra «hello.txt» con un mensaje «hello Jenkins». Este archivo se subirá al bucket S3 «devopslee» de mi cuenta.

Tienes que especificar el nombre de tu cubo en lugar de devopslee.

Para ver si el archivo se ha subido, intentaremos descargarlo como «downloadedHello.txt» e imprimirlo utilizando el comando «cat».

Si todos estos pasos fueron exitosos, significa que pudimos utilizar con éxito nuestra clave secreta y la clave de acceso utilizando la credencial que creamos.

pipeline {
    agent any
    stages {
        stage('test AWS credentials') {
            steps {
                withAWS(credentials: 'jenkins-test-user', region: 'us-east-1') {
                    sh 'echo "hello Jenkins">hello.txt'
                    s3Upload acl: 'Private', bucket: 'devopslee', file: 'hello.txt'
                    s3Download bucket: 'devopslee', file: 'downloadedHello.txt', path: 'hello.txt'
                    sh 'cat downloadedHello.txt'
                }
            }
        }
    }
}

Ahora, para probar la tubería anterior, ve a la tubería y haz clic en «Construir ahora».

Construye la tubería

Haz clic en el Historial de construcción — > Salida de la consola.

Comprueba los registros

Aquí, en la salida de la consola, puedes ver que el archivo fue creado, subido, descargado y leído con éxito.

Esto significa que pudimos autenticar con éxito el cubo de S3 utilizando la clave de acceso y el secreto que almacenamos en las credenciales.

Ejecución exitosa de la tubería

Conclusión

En este artículo, hemos instalado los pluginsCloudbees AWS Credentials yAWS Steps Plugin en Jenkins. Hemos almacenado el secreto del usuario de AWS IAM y las claves de acceso en Jenkins utilizando las Credenciales de Jenkins. También creamos un Pipeline de Jenkins en el que probamos la credencial que creamos subiendo y descargando un objeto al bucket de S3.

También te podría gustar...