Disponibilidad general de la federación de identidades de carga de trabajo para las conexiones de servicio de Azure Resource Manager
Nos complace anunciar que la federación de identidades de carga de trabajo ya está disponible con carácter general en Azure Pipelines. Puede disfrutar de una experiencia simplificada sin necesidad de administrar secretos y certificados en las conexiones de servicio de Azure.
Con esta actualización, también estamos previsualizar una nueva característica como parte de nuestra integración mejorada de GitHub con Azure Boards. Ahora puede vincular directamente a las solicitudes de incorporación de cambios o confirmaciones de GitHub. No más cambiar entre ventanas o copiar o pegar. Simplemente seleccione el repositorio que desee, busque la solicitud de incorporación de cambios o confirme que necesita y vincúlela.
Consulte las notas de la versión para obtener más información sobre estas características.
General
- Aviso final de desuso de credenciales alternativas
- Rotación de secretos de autoservicio de OAuth de Azure Devops
GitHub Advanced Security para Azure DevOps
- Fragmentos de código disponibles ahora en la vista de detalles de alertas
- Secretos truncados que se muestran en información general de alertas
- Se han agregado más gravedades de alerta para las alertas de examen de código.
- Suscripción de Azure vinculada necesaria para la habilitación de GitHub Advanced Security para Azure DevOps
- Actualizaciones avanzadas de API para seguridad
- Ahora se muestran permanentemente los permisos de Seguridad avanzada
Azure Boards
- Adición de un vínculo a la confirmación o solicitud de incorporación de cambios de GitHub (versión preliminar)
- Nuevas mejoras del concentrador de paneles
- Controles de desarrollo e implementación
Azure Pipelines
- La federación de identidades de carga de trabajo para las conexiones de servicio de Azure Resource Manager ya está disponible con carácter general.
- Instalación fuera de banda del ejecutor de tareas de Node 6
- Aprobación diferida
- Comprobaciones y aprobaciones de secuenciación
- Validar y guardar de forma predeterminada al editar canalizaciones de YAML
Azure Repos
Azure Artifacts
- La compatibilidad con Crates de Rust está disponible con carácter general
- Compatibilidad de Azure Artifacts con la auditoría de npm
General
Aviso final de desuso de credenciales alternativas
Las credenciales alternativas estaban formalmente en desuso en marzo de 2020, pero algunos usuarios existentes estaban en el abuelo con el uso continuo de sus credenciales alternativas existentes. A partir de enero de 2024, hemos dejado de usar todas las credenciales alternativas. Para evitar posibles interrupciones, cambie a uno de los mecanismos de autenticación disponibles que proporcionamos, como tokens de acceso personal o identidades administradas.
Rotación de secretos de autoservicio de OAuth de Azure Devops
Cada cinco años, es esencial actualizar el secreto de cliente de la aplicación OAuth de Azure DevOps para garantizar la generación continua de tokens de acceso y actualización necesarios para usar las API de Azure DevOps. A medida que el secreto de cliente se aproxima a la expiración, ahora puede generar uno nuevo de forma independiente, lo que proporciona a su equipo la libertad de administrarlo sin depender del servicio de atención al cliente. Esta flexibilidad en la programación de la rotación de secretos minimiza el tiempo de interrupción potencial para los clientes que esperan un reemplazo debido a un secreto expirado.
Busque esta nueva funcionalidad en cada una de las páginas de la aplicación de Azure DevOps a las que se puede acceder a través de su perfil aquí. Obtenga más información sobre este nuevo paso en nuestra guía de OAuth de Azure DevOps.
GitHub Advanced Security para Azure DevOps
Fragmentos de código disponibles ahora en la vista de detalles de alertas
La página de detalles de alertas para el análisis de código y las alertas de análisis de secretos ahora muestra fragmentos de código que marcan las líneas de código en las que se produjo la alerta. Para ir al archivo original en el repositorio de Azure DevOps, haga clic en el nombre de archivo situado encima del fragmento de código.
Secretos truncados que se muestran en información general de alertas
Los seis últimos caracteres truncados de los secretos detectados ahora se muestran en la pantalla de información general de alertas de secretos. Esta característica es útil si tiene varias exposiciones secretas del mismo tipo de secreto, lo que le permite identificar rápidamente dónde residen determinados secretos.
Se han agregado más gravedades de alerta para las alertas de examen de código.
Ahora existen nuevas gravedades de alerta para los resultados de las alertas de las consultas CodeQL quality
como Error
gravedades , Warning
y Note
. Cada gravedad de alerta de calidad tiene su propio distintivo y color para indicar las gravedades de escalado. También puede filtrar por cada una de estas gravedades, similar a la low
critical
escala de gravedad para las alertas de seguridad.
Suscripción de Azure vinculada necesaria para la habilitación de GitHub Advanced Security para Azure DevOps
Si previamente ha habilitado Advanced Security para repositorios en una organización de Azure DevOps sin una suscripción de Azure vinculada, puede observar que Advanced Security se deshabilitó automáticamente en esos repositorios. Para volver a habilitar Advanced Security, agregue una suscripción de Azure asociada a la organización. Para más información sobre cómo agregar o cambiar la suscripción, consulte Cambio de la suscripción de Azure.
Actualizaciones avanzadas de API para seguridad
Varias actualizaciones de advanced API para seguridad enviadas recientemente:
- La API get Alerts ahora admite un nuevo parámetro,
ModifiedSince
, para devolver una lista incremental de alertas y devolver solo las alertas que se modificaron desde esta fecha. Para obtener más información, vea Alertas: lista. - Hay dos puntos de conexión nuevos para capturar o actualizar el estado de habilitación de Advanced Security de una organización o proyecto. Ambos puntos de conexión devuelven una lista de repositorios con Advanced Security habilitado. Para obtener más información, consulte Organización: habilitación o proyecto: habilitación.
- Hay dos puntos de conexión nuevos para capturar una estimación del recuento de confirmadores activos de una organización o proyecto para reflejar el costo estimado del uso de medidores de seguridad avanzada. Para obtener más información, consulte Estimación de uso de medidores de organización o Estimación de uso de medidores de proyecto.
Ahora se muestran permanentemente los permisos de Seguridad avanzada
En el pasado, los tres bits de permisos de Advanced Security solo estarían presentes como permisos asignables por repositorio si advanced Security estaba habilitado. Ahora, estos permisos están disponibles de forma predeterminada en el panel Permisos de seguridad de repositorios > y se pueden asignar sin tener habilitada la seguridad avanzada.
Azure Boards
Adición de un vínculo a la confirmación o solicitud de incorporación de cambios de GitHub (versión preliminar)
Tiene dos opciones para conectar el elemento de trabajo con una solicitud de incorporación de cambios o confirmación de GitHub. Puede usar la sintaxis AB# en la solicitud de incorporación de cambios o puede vincularla directamente desde el elemento de trabajo. En la actualidad, el proceso implica copiar la dirección URL de la solicitud de incorporación de cambios de GitHub y pegarla al agregar un vínculo. Esto requiere abrir varias ventanas y cambiar entre GitHub y Azure DevOps.
En este sprint, nos complace anunciar una experiencia mejorada habilitando la funcionalidad de búsqueda al vincular a una solicitud de incorporación de cambios o confirmación de GitHub. Busque y seleccione el repositorio deseado y explore en profundidad para buscar y vincular a la solicitud de incorporación de cambios específica o confirmación. Ya no es necesario realizar varios cambios de ventana y copiar o pegar (aunque todavía tiene esa opción).
Nota:
Esta característica solo está disponible en la versión preliminar de New Boards Hub.
Si está interesado en obtener acceso a esta característica, envíenos un correo electrónico directamente junto con el nombre de su organización (dev.azure.com/{nombre de la organización}).
Nuevas mejoras en el centro de paneles
Con esta versión, hemos introducido una serie de mejoras en la versión preliminar de New Boards Hub, centrándonos en la accesibilidad y el flujo de página.
Este es un ejemplo de los cambios de flujo de página que se adaptan al 400 % de zoom.
Además, hemos implementado mejoras de rendimiento en el formulario de elemento de trabajo, paneles y páginas de trabajos pendientes. Con estos cambios, puede esperar que los nuevos paneles coincidan con los estándares de rendimiento establecidos con Los paneles antiguos.
Controles de desarrollo e implementación
Ahora quitamos los controles Desarrollo o Implementación del elemento de trabajo, en función de cómo se configure el proyecto. Por ejemplo, puede configurar los valores del proyecto para desactivar repositorios o canalizaciones.
Al ir al elemento de trabajo, los controles de desarrollo e implementación correspondientes se ocultarán del formulario.
Si decide conectar un repositorio de GitHub a Azure Boards, se mostrará el control de desarrollo para repositorios de GitHub.
Azure Pipelines
La federación de identidades de carga de trabajo para las conexiones de servicio de Azure Resource Manager ya está disponible con carácter general.
En septiembre, anunciamos la capacidad de configurar conexiones de servicio de Azure sin usar un secreto. Desde entonces, muchos clientes han adoptado esta característica y nos complace anunciar que esta funcionalidad ya está disponible con carácter general.
Si aún no usa la federación de identidades de carga de trabajo, puede aprovechar las conexiones de servicio de Azure sin preocupaciones que no tienen secretos de expiración de las siguientes maneras:
Para crear una nueva conexión de servicio de Azure mediante la federación de identidades de carga de trabajo, seleccione Federación de identidades de carga de trabajo (automática) en la experiencia de creación de la conexión de servicio de Azure:
Para convertir una conexión de servicio de Azure creada anteriormente, seleccione la acción "Convertir" después de seleccionar la conexión:
Para convertir varias conexiones de servicio, puede usar la automatización, por ejemplo, este script de PowerShell:
#!/usr/bin/env pwsh
<#
.SYNOPSIS
Convert multiple Azure Resource Manager service connection(s) to use Workload identity federation
.LINK
https://aka.ms/azdo-rm-workload-identity-conversion
.EXAMPLE
./convert_azurerm_service_connection_to_oidc_simple.ps1 -Project <project> -OrganizationUrl https://dev.azure.com/<organization>
#>
#Requires -Version 7.3
param (
[parameter(Mandatory=$true,HelpMessage="Name of the Azure DevOps Project")]
[string]
[ValidateNotNullOrEmpty()]
$Project,
[parameter(Mandatory=$true,HelpMessage="Url of the Azure DevOps Organization")]
[uri]
[ValidateNotNullOrEmpty()]
$OrganizationUrl
)
$apiVersion = "7.1"
$PSNativeCommandArgumentPassing = "Standard"
#-----------------------------------------------------------
# Log in to Azure
$azdoResource = "499b84ac-1321-427f-aa17-267ca6975798"
az login --allow-no-subscriptions --scope ${azdoResource}/.default
$OrganizationUrl = $OrganizationUrl.ToString().Trim('/')
#-----------------------------------------------------------
# Retrieve the service connection
$getApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints?authSchemes=ServicePrincipal&type=azurerm&includeFailed=false&includeDetails=true&api-version=${apiVersion}"
az rest --resource $azdoResource -u "${getApiUrl} " -m GET --query "sort_by(value[?authorization.scheme=='ServicePrincipal' && data.creationMode=='Automatic' && !(isShared && serviceEndpointProjectReferences[0].projectReference.name!='${Project}')],&name)" -o json `
| Tee-Object -Variable rawResponse | ConvertFrom-Json | Tee-Object -Variable serviceEndpoints | Format-List | Out-String | Write-Debug
if (!$serviceEndpoints -or ($serviceEndpoints.count-eq 0)) {
Write-Warning "No convertible service connections found"
exit 1
}
foreach ($serviceEndpoint in $serviceEndpoints) {
# Prompt user to confirm conversion
$choices = @(
[System.Management.Automation.Host.ChoiceDescription]::new("&Convert", "Converting service connection '$($serviceEndpoint.name)'...")
[System.Management.Automation.Host.ChoiceDescription]::new("&Skip", "Skipping service connection '$($serviceEndpoint.name)'...")
[System.Management.Automation.Host.ChoiceDescription]::new("&Exit", "Exit script")
)
$prompt = $serviceEndpoint.isShared ? "Convert shared service connection '$($serviceEndpoint.name)'?" : "Convert service connection '$($serviceEndpoint.name)'?"
$decision = $Host.UI.PromptForChoice([string]::Empty, $prompt, $choices, $serviceEndpoint.isShared ? 1 : 0)
if ($decision -eq 0) {
Write-Host "$($choices[$decision].HelpMessage)"
} elseif ($decision -eq 1) {
Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
continue
} elseif ($decision -ge 2) {
Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
exit
}
# Prepare request body
$serviceEndpoint.authorization.scheme = "WorkloadIdentityFederation"
$serviceEndpoint.data.PSObject.Properties.Remove('revertSchemeDeadline')
$serviceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
$serviceEndpoint | ConvertTo-Json -Depth 4 -Compress | Set-Variable serviceEndpointRequest
$putApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints/$($serviceEndpoint.id)?operation=ConvertAuthenticationScheme&api-version=${apiVersion}"
# Convert service connection
az rest -u "${putApiUrl} " -m PUT -b $serviceEndpointRequest --headers content-type=application/json --resource $azdoResource -o json `
| ConvertFrom-Json | Set-Variable updatedServiceEndpoint
$updatedServiceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
if (!$updatedServiceEndpoint) {
Write-Debug "Empty response"
Write-Error "Failed to convert service connection '$($serviceEndpoint.name)'"
exit 1
}
Write-Host "Successfully converted service connection '$($serviceEndpoint.name)'"
}
Para obtener más información, visite nuestra documentación.
El agente de Pipelines muestra los problemas de uso de recursos de forma más destacada
El pasado octubre agregamos la capacidad de realizar un seguimiento del uso de memoria y espacio en disco por parte del agente de Pipelines.
Para que los clientes sepan, pueden tener restricciones de recursos, como limitaciones de memoria o espacio en disco en su agente, hemos hecho que las restricciones de recursos sean más visibles:
Si ve alguno de los mensajes anteriores, esto puede deberse a que una tarea usa más recursos de los que el agente tiene dimensiones, lo que puede provocar que el agente no responda y produzca un error en un trabajo de canalización:
"Hemos dejado de escuchar al agente"
En tales casos, habilite los registros detallados para obtener mensajes de uso de recursos más específicos y realizar un seguimiento de dónde se quedó sin recursos el agente. Si usa un agente autohospedado, asegúrese de que el agente tiene los recursos adecuados.
Instalación fuera de banda del ejecutor de tareas de Node 6
Azure Pipelines proporciona dos versiones de paquetes de agente:
- Los paquetes vsts-agent-* admiten tareas que usan el nodo 6 para ejecutarse.
- Los paquetes pipelines-agent-* no admiten tareas que requieren que se ejecute el nodo 6.
Los clientes que crean agentes autohospedados pueden descargarlos desde la página Versiones del agente de canalización. Las versiones de Node incluidas con el agente se usan para ejecutar tareas. Consulte Versiones del ejecutor de nodos.
Después del registro del agente, los agentes instalados desde los paquetes pipelines-agent-* descargarán las versiones de Node que no se incluyen con el agente y no se bloquearán en "Restricciones de tareas" en la configuración de la organización. Esto permite a los clientes usar los paquetes de agente pipelines-agent-* y controlar la instalación de Node 6 con "Restricciones de tareas" en la configuración de la organización.
Aprobación diferida
Las aprobaciones se pueden usar para cerrar sesión en una implementación. Sin embargo, hay situaciones en las que la hora en que se da la aprobación y la hora en que se debe iniciar la implementación no coinciden. Por ejemplo, para la implementación concreta que revise, sabe que es una fuera de límite. Imagine que no puede continuar inmediatamente, sino que debe tener lugar durante la noche.
Para cubrir estos escenarios, hemos agregado la opción de aplazar aprobaciones para canalizaciones YAML. Ahora, puede aprobar una ejecución de canalización y especificar cuándo debe ser efectiva la aprobación.
Al seleccionar Aplazar aprobación, puede configurar la hora en que la aprobación sea efectiva.
La aprobación se muestra como diferida en el panel de comprobaciones. Después del tiempo diferido, la aprobación es efectiva.
Comprobaciones y aprobaciones de secuenciación
Con este sprint, puede especificar el orden en el que se ejecutan las aprobaciones y comprobaciones.
Las aprobaciones y comprobaciones permiten controlar las implementaciones en producción. Por ejemplo, puede especificar que solo las canalizaciones que se ejecutan en la main
rama de un repositorio pueden usar una conexión de servicio arm de producción. Además, puede requerir la aprobación humana y que el sistema pase una comprobación de rendimiento.
Hasta hoy, todas las aprobaciones y comprobaciones se ejecutaron en paralelo, excepto el bloqueo exclusivo. Esto significa que si el proceso de implementación requiere comprobaciones de rendimiento para pasar antes de que se dé la aprobación manual, no se pudo aplicar esto en Azure Pipelines. Tenía que confiar en las instrucciones de aprobación y la documentación del proceso interno.
Con este sprint, vamos a introducir la secuenciación en aprobaciones y comprobaciones. Ahora hay cinco categorías de aprobaciones y comprobaciones:
- Comprobaciones estáticas: control de rama, plantilla requerida y evaluar artefacto
- Comprobaciones pre-dinámicas aprobación
- Comprobaciones dinámicas: aprobación, invocar la función de Azure, invocar la API REST, horas laborables, consulta de alertas de Azure Monitor
- Comprobaciones posteriores a la dinámica Aprobación
- Bloqueo exclusivo
El orden también se muestra en la pestaña Aprobaciones y comprobaciones.
Dentro de cada categoría, las comprobaciones se ejecutan en paralelo. Es decir, si tiene una comprobación invocar función de Azure y una comprobación de horas laborables, se ejecutan al mismo tiempo.
Las categorías de comprobación se ejecutan una por una y, si se produce un error, el resto de las comprobaciones no se ejecutan. Esto significa que si tiene una comprobación de control de rama y una aprobación, si se produce un error en el control Rama, también se producirá un error en la aprobación. Por lo tanto, no se enviará ningún correo electrónico necesario.
Puede cerrar la sesión en una implementación después de ejecutar todas las comprobaciones dinámicas, usar una aprobación posterior a las comprobaciones dinámicas o realizar una validación manual antes de continuar con comprobaciones dinámicas mediante una aprobación de comprobaciones pre-dinámicas.
Validar y guardar de forma predeterminada al editar canalizaciones de YAML
Una canalización YAML incorrecta puede dar lugar a un tiempo y esfuerzo desperdiciados. Para mejorar la productividad de la edición de canalizaciones, vamos a cambiar el botón Guardar en el editor para que también realice la validación de YAML.
Si la canalización tiene errores, podrá guardarla.
También hemos mejorado la experiencia De validación , por lo que puede ver los errores en una lista que es más fácil de entender.
Azure Repos
Prevención de usuarios no autorizados para configurar la canalización como una directiva de compilación
Prevención de usuarios no autorizados para configurar la canalización como una directiva de compilación
Anteriormente, al agregar una nueva directiva de compilación, podría configurar para ejecutar cualquier canalización desde la lista desplegable (incluidas las canalizaciones para las que no tenía permiso de compilaciones de cola). Del mismo modo, podría editar la directiva de compilación existente incluso si se configuró para ejecutar la canalización para la que no tenía permiso de compilaciones de cola.
Ahora estamos evitando que los usuarios lo hagan. Si se deniega a un usuario el permiso Queue builds para una canalización determinada, esa canalización se mostrará como deshabilitada (atenuada) en la lista desplegable al agregar una nueva directiva de compilación.
Consulte la imagen siguiente en la que se muestra la canalización denominada "Espacio aislado" con el permiso de compilación de cola denegado .
Consulte la imagen siguiente en la que se muestra la canalización denominada "Sandbox" deshabilitada (atenuada) en la lista desplegable cuando el usuario con permiso de compilaciones de cola denegada está intentando agregar una nueva directiva de compilación.
Cuando la directiva de compilación configurada para ejecutar la canalización denominada "Sandbox" ya existe, el usuario sin permiso queue builds no podrá editar ni ver la directiva de compilación. Este caso se muestra en la siguiente imagen.
Al intentar eliminar esta directiva, se mostrará el cuadro de diálogo emergente que solicita confirmación de eliminación.
Estos cambios también se aplican a las llamadas API que dan lugar a la creación o edición de la directiva de compilación. Cuando cualquiera de estas acciones se ejecuta mediante una identidad de usuario sin permiso de compilación de cola , la llamada devolverá el código de error adecuado y el mensaje de error que indica “TFS.WebApi.Exception: TF401027:
Que necesita el permiso QueueBuild en esta canalización para realizar esta acción".
La eliminación de una directiva de compilación realizada a través de la API con un user identity
permiso sin compilaciones de cola se realizará correctamente y no habrá ninguna advertencia o prevención (no se realizará ningún cambio en el funcionamiento de la eliminación a través de la API).
Azure Artifacts
La compatibilidad con Crates de Rust está disponible con carácter general
A partir del 16 de febrero de 2024, la compatibilidad con Crates de Rust se convertirá en una característica disponible con carácter general para Azure Artifacts. Los medidores de facturación se activarán mediante el mismo modelo de precios que se aplica a los demás protocolos admitidos.
Compatibilidad de Azure Artifacts con la auditoría de npm
Azure Artifacts ahora admite npm audit
comandos y npm audit fix
. Esta característica permite a los usuarios analizar y corregir las vulnerabilidades de su proyecto actualizando automáticamente las versiones de paquetes no seguras. Para más información, visite Uso de la auditoría de npm para detectar y corregir vulnerabilidades de paquetes.
Pasos siguientes
Nota:
Estas características se implementarán en las próximas dos a tres semanas.
Vaya a Azure DevOps y eche un vistazo.
Cómo enviar sus comentarios
Nos encantaría escuchar lo que piensas sobre estas características. Use el menú de ayuda para notificar un problema o proporcionar una sugerencia.
También puede obtener consejos y sus preguntas respondidas por la comunidad en Stack Overflow.
Gracias,
Demonio