Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

545
Views
¿Cómo utilizar un nombre de usuario y una contraseña almacenados en AWS Secrets Manager en mi trabajo de Jenkins?

Tengo un canal de Jenkins que ejecuta pruebas Cypress en un contenedor Docker. Las pruebas necesitan un nombre de usuario y una contraseña para iniciar sesión en la aplicación web. Guardé el nombre de usuario y la contraseña en AWS Secrets Manager. Puedo hacer eso cuando ejecuto un comando de shell como un paso de compilación

 USERNAME=$(aws secretsmanager get-secret-value --region us-east-2 --secret-id myID | jq -r .SecretString | jq -r .username) PASSWORD=$(aws secretsmanager get-secret-value --region us-east-2 --secret-id myID | jq -r .SecretString | jq -r .password) docker run -e NO_COLOR=1 -v "$PWD":/workdir -w /workdir --entrypoint=cypress 1.dkr.ecr.us-east-2.amazonaws.com/cypress/included:3.8.3 run --env username="$USERNAME",password="$PASSWORD"

Sin embargo, quiero crear un trabajo de canalización de Jenkins y hacerlo desde JenkinsFile. ¿Cómo puedo leer el nombre de usuario y la contraseña de AWS Secrets Manager en el archivo Jenkins?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Tienes el paso sh .

 steps { script { username = sh (script: "aws secretsmanager get-secret-value --region us-east-2 --secret-id myID | jq -r .SecretString | jq -r .username", returnStdout: true) password = sh (script: "aws secretsmanager get-secret-value --region us-east-2 --secret-id myID | jq -r .SecretString | jq -r .password", returnStdout: true) } }
over 4 years ago · Santiago Trujillo Report

0

También puede usar la API del proveedor de credenciales de Jenkins para lograr esto.

Existen múltiples ventajas al usar la API del proveedor de credenciales en lugar de un paso de guión:

  • Las credenciales en su secuencia de comandos de canalización de Jenkins (el 'qué') están desvinculadas de la lógica que las busca (el 'cómo'), manteniendo sus secuencias de comandos más limpias y portátiles.
  • Puede tener varios proveedores de credenciales cargados si necesita leer las credenciales de varias ubicaciones.
  • Los proveedores de credenciales almacenan en caché metadatos secretos de manera eficiente, al tiempo que garantizan que los valores secretos permanezcan fuera de la memoria hasta el momento en que se necesiten.
  • Jenkins enmascara automáticamente los valores de las credenciales que se imprimen en el registro de compilación, por lo que es más difícil filtrar los valores por accidente.
  • La interfaz de usuario de credenciales de Jenkins y la interfaz de usuario del generador de trabajos le muestran qué credenciales están disponibles, lo que facilita la creación de scripts de trabajo.

Es cierto que existe cierta complejidad inicial en la configuración de un proveedor de credenciales en comparación con un paso de guión. Sin embargo, si está utilizando credenciales en más de 1 o 2 scripts, o si alguna de sus credenciales tendría consecuencias no triviales si se administrara mal o se filtrara (por ejemplo, claves de carga de Artifactory), definitivamente creo que vale la pena asumir ese costo ahora, a cambio para facilitar la gestión y el mantenimiento de las credenciales más adelante.

Ver más información en la documentación de Jenkins .

Ejemplo

Si desea utilizar la API del proveedor de credenciales con los secretos que almacenó en Secrets Manager, debe utilizar el complemento del proveedor de credenciales de AWS Secrets Manager . (Descargo de responsabilidad: soy el mantenedor de ese complemento).

Primero, instalamos el complemento del proveedor de credenciales de AWS Secrets Manager en Jenkins y otorgamos a Jenkins acceso IAM a Secrets Manager.

Luego cargamos un nombre de usuario de Jenkins con una credencial de contraseña llamada 'artifactory' a Secrets Manager, que contiene el nombre de usuario 'joe' (información no confidencial) y la contraseña 'supersecret' (información confidencial).

 aws secretsmanager create-secret \ --name 'artifactory' \ --secret-string 'supersecret' \ --description 'Acme Corp Artifactory user' \ --tags 'Key=jenkins:credentials:username,Value=joe' 'Key=jenkins:credentials:type,Value=usernamePassword'

Luego vinculamos la credencial 'artifactory' en nuestro Jenkinsfile.

 pipeline { agent any environment { ARTIFACTORY = credentials('artifactory') } stages { stage('Foo') { steps { // Three environment variables are now available to use however you want: // // ARTIFACTORY=joe:supersecret // ARTIFACTORY_USR=joe // ARTIFACTORY_PSW=supersecret sh './deploy' } } } }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!