Protección de secretos en Azure Pipelines
En este artículo se proporcionan procedimientos recomendados para proteger secretos en Azure Pipelines. Un secreto es todo aquello cuyo acceso desea controlar de forma estricta, como las claves API, las contraseñas, los certificados o las claves criptográficas.
Azure Pipelines no genera valores secretos. Sin embargo, es posible que tenga que agregar un secreto a una canalización para almacenar datos confidenciales como una clave de API. Para más información sobre cómo establecer variables secretas, consulte Establecimiento de variables secretas.
No use secretos si hay otro método disponible
El mejor método para proteger un secreto es, en primer lugar, no tenerlo. Compruebe si la canalización puede usar un método diferente al de usar un secreto para realizar una tarea.
- Use conexiones de servicio. Por ejemplo, si tiene como destino Azure u otro servicio que usa una conexión de servicio, debe usar la conexión de servicio en lugar de administrar secretos en variables. Para más información, consulte Administración de conexiones de servicio y Conexión a Microsoft Azure con una conexión de servicio ARM.
- Prefiera identidades administradas en lugar de usar secretos.
- Servicios de Azure que pueden usar identidades administradas para acceder a otros servicios
- ¿Qué son las identidades administradas de recursos de Azure?
- Si usa la tarea de la CLI de Azure, puede usar la configuración
addSpnToEnvironment
para acceder a los detalles de la entidad de servicio en el script. - Uso de entidades de servicio e identidades administradas
Uso de variables secretas
Los valores confidenciales nunca se deben almacenar como texto no cifrado en un archivo .yml de Azure Pipelines.
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. La manera recomendada de establecer variables secretas es con Azure Key Vault. También puede establecer variables secretas en la interfaz de usuario o en un grupo de variables. No se recomienda utilizar un comando de registro para establecer una variable secreta. Cuando se establece un secreto con un comando de registro, cualquiera que pueda acceder a su canalización también podrá ver el secreto.
Las variables secretas son variables cifradas que se pueden usar en canalizaciones sin exponer su valor. Aunque sus valores no se exponen, nunca vuelva a generar secretos como salida y no pase secretos en la línea de comandos. En su lugar, se recomienda asignar los secretos a variables de entorno.
Al crear un secreto, siga las instrucciones de nomenclatura de variables y asegúrese de que el nombre del secreto no divulga información confidencial.
Limitación del acceso a variables secretas
Para limitar el acceso a secretos en Azure DevOps, puede hacer lo siguiente:
- Almacene los secretos en Azure Key Vault. Con Azure Key Vault, puede usar el modelo de control de acceso basado en rol de Azure para limitar el acceso a un secreto o grupo de secretos.
- Establezca variables secretas en la interfaz de usuario de una canalización. Las variables secretas establecidas en la interfaz de usuario de configuración de canalización de una canalización se limitan a la canalización donde se establecen. De esta manera, puede tener secretos que solo sean visibles para los usuarios con acceso a esa canalización.
- Establezca secretos en un grupo de variables. Los grupos de variables siguen el modelo de seguridad de la biblioteca. Puede controlar quién puede definir nuevos elementos en una biblioteca y quién puede usar un elemento existente.
No escriba secretos en los registros
Siempre que sea posible, Azure Pipelines intenta borrar los secretos de los registros. Este filtrado se realiza de la mejor manera posible y no puede detectar todas las formas de filtración de los secretos. Evite reproducir secretos en la consola, usarlos en parámetros de la línea de comandos o registrarlos en archivos. Por ejemplo, algunos comandos de la CLI de Azure proporcionan información de salida que debe proteger. Si llama a la CLI de Azure desde la canalización, use el formato de salida Ninguno y, si necesita recuperar un secreto de una llamada de la CLI de Azure, use formato de salida ninguno y recupere la información de seguridad a una variable secreta.
No usar datos estructurados como secretos
Los datos estructurados pueden causar que la redacción de secretos dentro de las bitácoras falle, ya que la redacción depende ampliamente de encontrar una coincidencia exacta para el valor específico del secreto. Por ejemplo, no use un blob de JSON, XML o YAML (o similar) para encapsular un valor secreto, incluidos caracteres de control como el retorno de carro (\r
) y el salto de línea (\n
), ya que esto reduce significativamente la probabilidad de que los secretos se redacten correctamente. En vez de esto, crea secretos individuales para cada valor sensible.
Auditar cómo se controlan los secretos
Audita cómo se utilizan los secretos para ayudarte a garantizar que se manejan como lo esperas. Para ello, revise el código fuente del repositorio que hospeda la canalización y compruebe las tareas que se usan en ella. Por ejemplo, verifica que no se estén enviando a hosts no deseados, o que no se estén imprimiendo explícitamente en la salida de una bitácora.
Vea los registros de ejecución de la canalización después de probar entradas válidas o no válidas, y compruebe que los secretos están correctamente redactados o que no se muestran. No siempre es obvio cómo un comando o herramienta que está invocando emitirá errores y los secretos podrían acabar más tarde en los registros de errores. Siempre que sea posible, Azure Pipelines intenta borrar los secretos de los registros. Este filtrado se realiza de la mejor manera posible y no puede detectar todas las formas de filtración de los secretos. Como resultado, se recomienda revisar manualmente los registros de canalización después de probar entradas válidas y no válidas.
Auditoría y rotación de secretos
Revise periódicamente los secretos registrados que usan las canalizaciones para confirmar que siguen siendo necesarios y quite los que ya no lo sean.
Rote periódicamente los secretos para reducir el período de tiempo durante el que un secreto en peligro es válido.
Los tipos de secretos usados por las canalizaciones pueden incluir:
Pasos siguientes
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de