Compartir vía


Establecimiento de variables secretas

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Las variables secretas son variables cifradas que se pueden usar en canalizaciones sin exponer su valor. Las variables secretas se pueden usar para información privada, como contraseñas, identificadores y otros datos de identificación que no desea exponer en una canalización. Las variables secretas se cifran en reposo con una clave RSA de 2048 bits y están disponibles en el agente para tareas y scripts que se van a usar.

Las formas recomendadas de establecer variables secretas están en la interfaz de usuario, en un grupo de variables y en un grupo de variables de Azure Key Vault. También puede establecer variables secretas en un script con un comando de registro, pero este método no se recomienda, ya que cualquier persona que pueda acceder a la canalización también puede ver el secreto.

Las variables de secreto establecidas en la interfaz de usuario de configuración de una canalización se limitan a la canalización donde se establecen. Puede usar grupos de variables para compartir variables secretas entre canalizaciones.

Variables secretas en la interfaz de usuario

Puede establecer variables secretas en el editor de canalización al editar una canalización individual. Para cifrar y crear un secreto de variable de canalización, seleccione el icono de bloqueo.

Las variables secretas se establecen de la misma manera para YAML y Clásico.

Para establecer secretos en la interfaz web, siga estos pasos:

  1. Vaya a la página Canalizaciones, seleccione la canalización adecuada y, después, seleccione Editar.
  2. Busque las Variables de esta canalización.
  3. Agregue la variable o actualícela.
  4. Seleccione la opción de Mantener el secreto de este valor para almacenar la variable de forma cifrada.
  5. Guarde la canalización.

Las variables de secreto se cifran en reposo con una clave RSA de 2048 bits. Los secretos están disponibles en el agente para que los usen las tareas y los scripts. Tenga cuidado con quién tiene acceso para modificar la canalización.

Importante

Hacemos un esfuerzo por enmascarar los secretos para que no aparezcan en la salida de Azure Pipelines, pero debe tomar precauciones. Nunca haga eco de secretos como salida. Algunos sistemas operativos registran los argumentos de la línea de comandos. Nunca pase secretos en la línea de comandos. En su lugar, se recomienda asignar los secretos a variables de entorno.

Nunca enmascaramos las subcadenas de los secretos. Si, por ejemplo, se establece "abc123" como secreto, "abc" no se enmascara en los registros. El objetivo de esto es no enmascarar los secretos de un modo demasiado pormenorizado, que haría los registros ilegibles. Por este motivo, los secretos no deben contener datos estructurados. Si, por ejemplo, se establece "{ "foo": "bar" }" como secreto, "bar" no se enmascara en los registros.

A diferencia de una variable normal, no se descifran automáticamente en variables de entorno para scripts. Debe asignar explícitamente variables secretas.

Uso de una variable secreta en la interfaz de usuario

Debe asignar una variable secreta como variables de entorno para hacer referencia a ellas en canalizaciones YAML. En este ejemplo, hay dos variables secretas definidas en la interfaz de usuario SecretOne y SecretTwo. El valor de SecretOne es foo y el valor de SecretTwo es bar.

steps:
- powershell: |
      Write-Host "My first secret variable is $env:FOO_ONE"
      $env:FOO_ONE -eq "foo"
  env:
    FOO_ONE: $(SecretOne)
- bash: |
    echo "My second secret variable: $FOO_TWO"
    if [ "$FOO_TWO" = "bar" ]; then
        echo "Strings are equal."
    else
        echo "Strings are not equal."
    fi
  env:
    FOO_TWO: $(SecretTwo) 

Las salidas de la canalización:

My first secret variable is ***
True
My second secret variable: ***
Strings are equal.

Nota:

Azure Pipelines realiza un esfuerzo para enmascarar secretos al emitir datos a registros de canalización, por lo que es posible que vea variables adicionales y datos enmascarados en los registros y de salida que no están establecidos como secretos.

Para obtener un ejemplo más detallado, consulte Definición de variables.

Establecimiento de una variable secreta en un grupo de variables

Puede agregar secretos a un grupo de variables o vincular secretos desde una instancia de Azure Key Vault existente.

Creación de nuevos grupos de variables

  1. Seleccione Biblioteca>de canalizaciones> + Grupo de variables.

    Captura de pantalla del botón Agregar grupo de variables resaltado con un cuadro rojo.

  2. Escriba un nombre y una descripción para el grupo.

  3. Opcional: mueva el botón de alternancia para vincular secretos desde un almacén de claves de Azure como variables. Para obtener más información, consulte Usar secretos de Azure Key Vault.

  4. Escriba el nombre y el valor de cada variable que se va a incluir en el grupo y elija + Agregar para cada una.

  5. Para proteger la variable, elija el icono de "bloqueo" al final de la fila.

  6. Cuando haya terminado de agregar variables, seleccione Guardar.

    Captura de pantalla de guardar un grupo de variables.

Los grupos de variables siguen el modelo de seguridad de la biblioteca.

Puede crear grupos de variables y vincularlos a un almacén de claves de Azure existente, lo que le permite asignar secretos almacenados en el almacén de claves. Solo los nombres de secreto se asignan al grupo de variables, no a los valores secretos. Las ejecuciones de canalización que se vinculan al grupo de variables obtienen los valores secretos más recientes del almacén. Para más información, consulte Vinculación de un grupo de variables a secretos en Azure Key Vault.

Uso de la tarea Azure Key Vault

Puede usar la tarea Azure Key Vault para incluir secretos en la canalización. Esta tarea permite que la canalización se conecte a Azure Key Vault y recupere secretos para usarlos como variables de canalización.

  1. En el editor de canalizaciones, seleccione Mostrar asistente para expandir el panel asistente.

  2. Busque vault y seleccione la tarea Azure Key Vault.

    Agregue la tarea Azure Key Vault.

La opción Hacer que los secretos estén disponibles para todo el trabajo no se admite actualmente en Azure DevOps Server 2019 y 2020.

Para más información sobre la tarea Azure Key Vault, consulte Uso de secretos de Azure Key Vault en Azure Pipelines.

Establecimiento de una variable secreta en un script con comandos de registro

Puede usar el comando de registro task.setvariable para establecer variables en scripts de PowerShell y Bash. Este método es la forma menos segura de trabajar con variables secretas, pero puede ser útil para la depuración. Las formas recomendadas de establecer variables secretas están en la interfaz de usuario, en un grupo de variables y en un grupo de variables de Azure Key Vault.

Para establecer una variable como script con un comando de registro, debe pasar la marca issecret.

Cuando issecret se establece en true, el valor de la variable se guardará como secreto y se enmascarará en los registros.

Nota:

Azure Pipelines realiza un esfuerzo para enmascarar secretos al emitir datos a registros de canalización, por lo que es posible que vea variables adicionales y datos enmascarados en los registros y de salida que no están establecidos como secretos.

Establezca la variable secreta mySecretVal.

- bash: |
    echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"

Obtenga la variable secreta mySecretVal.

- bash: |
    echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
- bash: |
    echo $(mySecretVal)

Salida de variable secreta en Bash.

Captura de pantalla de la salida de la variable de Bash.

Obtenga más información sobre cómo establecer y usar variables en scripts.