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 no se recomienda, ya que cualquiera 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 convertir en secreta una 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

Deberá asignar variables secretas 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.

    Screenshot of Add variable group button highlighted with red box.

  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.

    Screenshot of saving a variable group.

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

Vincular un almacén de claves de Azure existente a un grupo de variables y asignar secretos de almacén selectivos al grupo de variables.

  1. En la página Grupos de variables, habilite Vincular secretos desde un almacén de claves de Azure como variables. Necesitará un almacén de claves existente que contenga los secretos. Crear un almacén de claves mediante Azure Portal.

    Screenshot of variable group with Azure key vault integration.

  2. Especifique el punto de conexión de la suscripción de Azure y el nombre del almacén que contiene los secretos.

    Asegúrese de que la conexión de servicio de Azure tenga al menos permisos de administración Get y List en el almacén de secretos. Habilite Azure Pipelines para establecer estos permisos; para ello, elija Autorizar junto al nombre del almacén. O bien, establezca los permisos manualmente en el Azure Portal:

    1. Abra Configuración en el almacén y, a continuación, elija Directivas de acceso>Agregar nueva.
    2. Seleccione Seleccionar entidad de servicio y, a continuación, elija la entidad de servicio de la cuenta de cliente.
    3. Seleccione Permisos secretos y asegúrese de que Get y List tengan marcas de verificación.
    4. Seleccione Aceptar para guardar los cambios.
  3. En la página Grupos de variables, seleccione + Agregar para seleccionar secretos específicos del almacén para asignarlos a este grupo de variables.

Administrar secretos del almacén de claves

Consulte la siguiente lista de sugerencias útiles para administrar secretos.

  • Solo los nombres de secreto se asignan al grupo de variables, no a los valores secretos. El valor de secreto más reciente, capturado desde el almacén, se usa en la ejecución de la canalización vinculada al grupo de variables.

  • Cualquier cambio realizado en los secretos existentes en el almacén de claves está disponible automáticamente para todas las canalizaciones en las que se usa el grupo de variables.

  • Cuando se agregan o eliminan nuevos secretos del almacén, los grupos de variables asociados no se actualizan automáticamente. Los secretos incluidos en el grupo de variables se deben actualizar explícitamente para que las canalizaciones que usan el grupo de variables se ejecuten correctamente.

  • Azure Key Vault admite el almacenamiento y la administración de claves criptográficas y secretos en Azure. Actualmente, la integración de grupos de variables de Azure Pipelines solo admite la asignación de secretos del almacén de claves de Azure. No se admiten claves criptográficas ni certificados.

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.

    Add the Azure Key Vault task.

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. Esta 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.

Screenshot of bash variable output.

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