Uso seguro de variables y parámetros en la canalización
En este artículo se describe cómo usar de forma segura variables y parámetros para recopilar entradas de los usuarios de la canalización. Si desea obtener más información sobre el uso de variables y parámetros, consulte:
- Definición de variables
- Usar variables predefinidas
- Usar parámetros en tiempo de ejecución
- Uso de tipos de plantilla
Variables
Las variables pueden ser una manera cómoda de recopilar información del usuario por adelantado. También puede usar variables para pasar datos de un paso a otro dentro de una canalización.
Pero use variables con precaución. Las variables recién creadas, ya sean definidas en YAML o escritas por un script, son de lectura y escritura de forma predeterminada. Un paso de bajada puede cambiar el valor de una variable de una manera que no se espera.
Por ejemplo, imagine que el script lee:
msbuild.exe myproj.proj -property:Configuration=$(MyConfig)
Un paso anterior podría MyConfig establecerse en Debug & deltree /y c: .
Aunque este ejemplo solo eliminaría el contenido del agente de compilación, puede imaginar cómo esta configuración podría volverse mucho más peligrosa.
Puede hacer variables de solo lectura.
Las variables del sistema como , las variables de salida de tareas y las variables en tiempo Build.SourcesDirectory de cola siempre son de solo lectura.
Las variables creadas en YAML o creadas en tiempo de ejecución por un script se pueden designar como de solo lectura.
Cuando un script o tarea crea una nueva variable, puede pasar la marca en su comando de registro para que la variable sea isReadonly=true de solo lectura.
En YAML, puede especificar variables de solo lectura mediante una clave específica:
variables:
- name: myReadOnlyVar
value: myValue
readonly: true
Las variables en tiempo de cola se exponen al usuario final que ejecuta manualmente una canalización. Tal y como se diseñó originalmente, este concepto solo era para la interfaz de usuario. La API subyacente aceptaría invalidaciones de usuario de cualquier variable, incluso variables que no se designan como variables en tiempo de cola. Esta disposición era confusa e insegura. Por lo tanto, hemos agregado una configuración que hace que la API acepte solo las variables que se pueden establecer en tiempo de cola. Se recomienda activar esta configuración.
Parámetros
A diferencia de las variables, una canalización no puede cambiar los parámetros de canalización mientras se ejecuta.
Los parámetros tienen tipos de datos como y , y se number pueden restringir a un subconjunto de string valores.
Restringir los parámetros es útil cuando una parte configurable por el usuario de la canalización solo debe tomar un valor de una lista restringida. La configuración garantiza que la canalización no tome datos arbitrarios.
Pasos siguientes
Después de proteger las entradas, también debe proteger la infraestructura compartida.