Share via


Acceso a repositorios, artefactos y otros recursos

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

En tiempo de ejecución, cada trabajo de una canalización puede acceder a otros recursos de Azure DevOps. Por ejemplo, un trabajo puede:

  • Consultar el código fuente de un repositorio de Git
  • Añadir una etiqueta al repositorio
  • Acceso a una fuente en Azure Artifacts
  • Cargar registros desde el agente al servicio
  • Cargar resultados de pruebas y otros artefactos desde el agente al servicio
  • Actualizar un elemento de trabajo

Azure Pipelines usa tokens de acceso de trabajo para realizar estas tareas. Un token de acceso de trabajo es un token de seguridad generado dinámicamente por Azure Pipelines para cada trabajo en tiempo de ejecución. El agente en el que se ejecuta el trabajo usa el token de acceso al trabajo para acceder a estos recursos en Azure DevOps. Puede controlar a qué recursos tiene acceso la canalización mediante el control de cómo se conceden permisos a los tokens de acceso de trabajo.

Los permisos del token se derivan del ámbito de autorización de trabajo (a) y (b) los permisos establecidos en la cuenta de servicio de compilación de proyectos o recopilación.

Ámbito de autorización del trabajo

Puede establecer el ámbito de autorización del trabajo para que sea colección o proyecto. Al establecer el ámbito en la colección, elija permitir que las canalizaciones accedan a todos los repositorios de la colección u organización. Al establecer el ámbito en el proyecto, decide restringir el acceso solo a los repositorios que se encuentran en el mismo proyecto que la canalización.

El ámbito de autorización del trabajo se puede establecer para toda la organización de Azure DevOps o para un proyecto específico.

Nota:

En Azure DevOps Server 2020, limitar el ámbito de autorización del trabajo al proyecto actual solo se aplica a las canalizaciones de YAML y a las canalizaciones de compilación clásicas. No se aplica a las canalizaciones de versión clásicas. Las canalizaciones de versión clásicas siempre se ejecutan con el ámbito de la colección de proyectos.

Para establecer el ámbito de autorización del trabajo para la organización:

  • Vaya a la página de configuración de la organización en la interfaz de usuario de Azure DevOps.
  • Seleccione Configuración en Canalizaciones.
  • Habilite limitar el ámbito de autorización del trabajo al proyecto actual limitar el ámbito al proyecto. Esta es la configuración recomendada, ya que mejora la seguridad de las canalizaciones.

Para establecer el ámbito de autorización del trabajo para un proyecto específico:

  • Vaya a la página de configuración del proyecto en la interfaz de usuario de Azure DevOps.
  • Seleccione Configuración en Canalizaciones.
  • Habilite limitar el ámbito de autorización del trabajo al proyecto actual limitar el ámbito al proyecto. Esta es la configuración recomendada, ya que mejora la seguridad de las canalizaciones.
  • Para establecer el ámbito de autorización del trabajo en el nivel de organización de todos los proyectos, elija Configuración de la organización>Canalizaciones>Configuración.
  • Para establecer el ámbito de autorización del trabajo para un proyecto específico, elija Configuración del proyecto>Canalizaciones>Configuración.

Habilite una o varias de las siguientes opciones de configuración. Se recomienda habilitar esta configuración, ya que mejora la seguridad de las canalizaciones.

  • Limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que no son de versión: esta configuración se aplica a las canalizaciones de YAML y a las canalizaciones de compilación clásicas y no se aplica a canalizaciones de versión clásicas.
  • Limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones de versión: esta configuración solo se aplica a las canalizaciones de versión clásicas.

Nota:

Si el ámbito se establece como proyecto a nivel de organización, no puede cambiar el ámbito de cada proyecto.

Importante

Si el ámbito no está restringido en el nivel de organización o en el nivel de proyecto, cada trabajo de la canalización de YAML obtiene un token de acceso de trabajo con ámbito de recopilación. Es decir, la canalización tiene acceso a cualquier repositorio de cualquier proyecto de la organización. Si un adversario puede obtener acceso a una sola canalización en un solo proyecto, podrá acceder a cualquier repositorio de la organización. Por este motivo, se recomienda restringir el ámbito en el nivel más alto (configuración de la organización) para contener el ataque a un solo proyecto.

Si usa Azure DevOps Server 2019, todos los trabajos de YAML se ejecutan con el ámbito de autorización del trabajo establecido en la colección. En otras palabras, estos trabajos tienen acceso a todos los repositorios de la colección de proyectos. No se puede cambiar en Azure DevOps Server 2019.

Las canalizaciones YAML no están disponibles en TFS.

Nota:

Si la canalización está en un proyecto público, el ámbito de autorización del trabajo se restringe automáticamente al proyecto independientemente de lo que configure en cualquier configuración. Los trabajos de un proyecto público pueden acceder a recursos como artefactos de compilación o resultados de prueba solo dentro del proyecto y no desde otros proyectos de la organización.

Limitar el ámbito de autorización del trabajo a los repositorios de Azure DevOps a los que se hace referencia

Además de la configuración del ámbito de autorización del trabajo descrita en la sección anterior, Azure Pipelines proporciona un ámbito de autorización de trabajo Límite para la configuración de repositorios de Azure DevOps a los que se hace referencia.

Las canalizaciones pueden acceder a cualquier repositorio de Azure DevOps en proyectos autorizados a menos que esté habilitado limitar el ámbito de autorización de trabajos a los repositorios de Azure DevOps a los que se hace referencia. Con esta opción habilitada, puede reducir el ámbito de acceso de todas las canalizaciones solo a repositorios de Azure DevOps a los que hace referencia explícitamente con un paso checkout o una instrucción uses en el trabajo de canalización que usa ese repositorio.

Para más información, consulte Azure Repos repositorios de Git: limitar el ámbito de autorización del trabajo a los repositorios de Azure DevOps a los que se hace referencia.

Protección del acceso a repositorios en canalizaciones YAML

Además de la configuración del ámbito de autorización del trabajo descrita en la sección anterior, Azure Pipelines proporciona una configuración de Proteger el acceso a los repositorios en canalizaciones de YAML.

Las canalizaciones pueden acceder a cualquier repositorio de Azure DevOps en proyectos autorizados a menos que esté habilitado Proteger el acceso a los repositorios de canalizaciones de YAML. Con esta opción habilitada, puede reducir el ámbito de acceso de todas las canalizaciones solo a repositorios de Azure DevOps a los que hace referencia explícitamente con un paso checkout o una instrucción uses en el trabajo de canalización que usa ese repositorio.

Para obtener más información, consulte Azure Repos repositorios de Git: proteger el acceso a los repositorios en canalizaciones de YAML.

Importante

Proteger el acceso a repositorios en canalizaciones YAML está habilitado de forma predeterminada para las nuevas organizaciones y proyectos creados a partir de mayo de 2020.

Identidades de compilación con ámbito

Azure DevOps usa dos identidades integradas para ejecutar canalizaciones.

  • Una identidad con ámbito de colección, que tiene acceso a todos los proyectos de la colección (u organización para Azure DevOps Services)
  • Una identidad con ámbito de proyecto, que tiene acceso a un único proyecto

Estas identidades son permisos asignados necesarios para realizar actividades en tiempo de ejecución de compilación o versión al llamar de nuevo al sistema de Azure DevOps. Hay permisos predeterminados integrados y también puede administrar sus propios permisos según sea necesario.

El nombre de identidad con ámbito de colección tiene el formato siguiente:

  • Project Collection Build Service ({OrgName})
  • Por ejemplo, si el nombre de la organización es fabrikam-tailspin, esta cuenta tiene el nombre Project Collection Build Service (fabrikam-tailspin).

El nombre de identidad con ámbito de proyecto tiene el formato siguiente:

  • {Project Name} Build Service ({Org Name})
  • Por ejemplo, si el nombre de la organización es fabrikam-tailspin y el nombre del proyecto es SpaceGameWeb, esta cuenta tiene el nombre SpaceGameWeb Build Service (fabrikam-tailspin).

De forma predeterminada, se usa la identidad con ámbito de recopilación, a menos que se configure lo contrario, como se describe en la sección ámbito de autorización del trabajo anterior.

Administración de permisos de cuenta de servicio de compilación

Un resultado de establecer el acceso con ámbito de proyecto puede ser que la identidad con ámbito de proyecto no tenga permisos para un recurso que tenía el ámbito de la colección.

Es posible que desee cambiar los permisos del token de acceso de trabajo en escenarios como los siguientes:

  • Quiere que la canalización acceda a una fuente que se encuentra en un proyecto diferente.
  • Quiere que la canalización esté restringida a cambiar el código en el repositorio.
  • Quiere que la canalización esté restringida a la creación de elementos de trabajo.

Para actualizar los permisos del token de acceso del trabajo:

  • En primer lugar, determine el ámbito de autorización del trabajo para la canalización. Consulte la sección anterior para comprender el ámbito de autorización del trabajo. Si el ámbito de autorización del trabajo es colección, la cuenta de servicio de compilación correspondiente en la que administrar los permisos es servicio de compilación de colecciones de proyectos (nombre de colección). Si el ámbito de autorización del trabajo es proyecto, la cuenta de servicio de compilación en la que administrar los permisos es servicio de compilación nombre-proyecto (nombre-de-colección).

  • Para restringir o conceder acceso adicional a servicio de compilación de colecciones de proyectos (nombre de colección):

    • Seleccione Administrar seguridad en el menú de desbordamiento de la página Canalizaciones.
    • En Usuarios, seleccione Project Collection Build Service (your-collection-name).
    • Realice los cambios en los permisos relacionados con las canalizaciones para esta cuenta.
    • Vaya a la configuración de la organización para la organización de Azure DevOps (o la configuración de recopilación de la colección de proyectos).
    • Seleccione Permisos en Seguridad.
    • En la pestaña Usuarios, busque Servicio de compilación de recopilación de proyectos (nombre de la colección).
    • Realice cambios en los permisos no relacionados con canalizaciones para esta cuenta.
    • Dado que Project Collection Build Service (your-collection-name) es un usuario de su organización o colección, puede agregar esta cuenta explícitamente a cualquier recurso( por ejemplo, a una fuente de Azure Artifacts).
  • Para restringir o conceder acceso adicional a Servicio de compilación nombre-proyecto (nombre-colección):

    • La cuenta de servicio de compilación en la que puede administrar los permisos solo se creará después de ejecutar la canalización una vez. Asegúrese de que ya ejecutó la canalización una vez.
    • Seleccione Administrar seguridad en el menú de desbordamiento de la página Canalizaciones.
    • En Usuarios, seleccione Your-project-name Build Service (your-collection-name).
    • Realice los cambios en los permisos relacionados con las canalizaciones para esta cuenta.
    • Vaya a la configuración de la organización para la organización de Azure DevOps (o la configuración de recopilación de la colección de proyectos).
    • Seleccione Permisos en Seguridad.
    • En la pestaña Usuarios, busque Your-project-name build service (your-collection-name).
    • Realice cambios en los permisos no relacionados con canalizaciones para esta cuenta.
    • Dado que Your-project-name Build Service (your-collection-name) es un usuario de su organización o colección, puede agregar esta cuenta explícitamente a cualquier recurso( por ejemplo, a una fuente de Azure Artifacts).

Configuración de permisos para que un proyecto tenga acceso a otro proyecto en la misma colección de proyectos

En este ejemplo, a la identidad de compilación con ámbito de proyecto fabrikam-tailspin/SpaceGameWeb se le conceden permisos para acceder al proyecto de fabrikam-tailspin/FabrikamFiber.

  1. En el proyecto FabrikamFiber, vaya a Configuración del proyecto, Permisos.

    Captura de pantalla de cómo configurar las opciones del proyecto.

  2. Cree un nuevo grupo denominado Proyectos externos y agregue la cuenta del SpaceGameWeb Build Service. Captura de pantalla de la creación de un nuevo grupo de seguridad.

  3. Elija Usuarios, empiece a escribir el nombre SpaceGameWeb y seleccione la cuenta SpaceGameWeb Build Service. Si no ve inicialmente ningún resultado de búsqueda, seleccione Expandir búsqueda.

    Captura de pantalla de la selección del usuario de identidad de compilación con ámbito de proyecto SpaceGameWeb.

  4. Conceda el permiso Ver información de nivel de proyecto para ese usuario.

    Captura de pantalla de cómo conceder el permiso Ver información de nivel de proyecto para un usuario.

Ejemplo: configuración de permisos para acceder a otro repositorio de la misma colección de proyectos

En este ejemplo, a la identidad de compilación con ámbito de proyecto fabrikam-tailspin/SpaceGameWeb se le concede permiso para acceder al repositorio FabrikamFiber en el proyecto fabrikam-tailspin/FabrikamFiber.

  1. Siga los pasos para conceder el permiso de identidad de compilación con ámbito de proyecto SpaceGameWeb para acceder al proyectoFabrikamFiber.

  2. En el proyecto FabrikamFiber, vaya a Configuración del proyecto, Repositorios, FabrikamFiber.

    Configurar el acceso al repositorio.

  1. Elija el icono +, empiece a escribir el nombre SpaceGameWeb y seleccione la cuenta SpaceGameWeb Build Service.

    Agregar usuario para el acceso al repositorio.

  1. Empiece a escribir el nombre SpaceGameWeby seleccione la cuenta de SpaceGameWeb Build Service.

    Captura de pantalla de cómo agregar un usuario para el acceso al repositorio.

  1. Concede permisos de lectura para ese usuario.

    Captura de pantalla de cómo configurar los permisos del repositorio.

Ejemplo: configuración de permisos para acceder a otros recursos de la misma colección de proyectos

En este ejemplo, se conceden permisos a la identidad de compilación con ámbito de proyecto fabrikam-tailspin/SpaceGameWeb para acceder a otros recursos del proyecto de fabrikam-tailspin/FabrikamFiber.

  1. Siga los pasos para conceder el permiso de identidad de compilación con ámbito de proyecto SpaceGameWeb para acceder al proyectoFabrikamFiber.

  2. Configure los permisos deseados para ese usuario.

    Configurar permisos de usuario.

Preguntas más frecuentes

Cómo determinar el ámbito de autorización del trabajo de la canalización de YAML?

  • Si el proyecto es un proyecto público, el ámbito de autorización del trabajo siempre es proyecto independientemente de cualquier otra configuración.

Todas las canalizaciones de YAML de Azure DevOps Server 2019 se ejecutan en el ámbito de autorización del trabajo de colección.

  • Comprueba la configuración de canalización en la configuración de la organización de Azure DevOps:
    • Si se habilita limitar el ámbito de autorización del trabajo al proyecto actual, el ámbito es el proyecto.
    • Si no está habilitado limitar el ámbito de autorización del trabajo al proyecto actual, comprueba la configuración de canalización en configuración del proyecto en Azure DevOps:
      • Si se habilita limitar el ámbito de autorización del trabajo al proyecto actual, el ámbito es el proyecto.
      • Si el ámbito es la colección:
  • Si la canalización está en un proyecto privado, comprueba la configuración de canalización en la configuración de la organización de Azure DevOps:
    • Si limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que no son de versión está habilitado, el ámbito es proyecto.
    • Si no está habilitado limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que no son de versión, comprueba la configuración de canalización en configuración del proyecto en Azure DevOps:
      • Si limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que no son de versión está habilitado, el ámbito es proyecto.
      • Si el ámbito es la colección:

¿Cómo puedo determinar el ámbito de autorización del trabajo de la canalización de compilación clásica?

  • Si la canalización está en un proyecto público, el ámbito de autorización del trabajo es proyecto independientemente de cualquier otra configuración.
  • Abre el editor de la canalización y ve a la pestaña Opciones.
    • Si el ámbito de autorización del trabajo de compilación es Proyecto actual, el ámbito es proyecto.
    • Si el ámbito es colección:
  • Comprueba la configuración de canalización en la configuración de la organización de Azure DevOps:
    • Si se habilita limitar el ámbito de autorización del trabajo al proyecto actual, el ámbito es el proyecto.
    • Si no está habilitado limitar el ámbito de autorización del trabajo al proyecto actual, comprueba la configuración de canalización en configuración del proyecto en Azure DevOps:
      • Si se habilita limitar el ámbito de autorización del trabajo al proyecto actual, el ámbito es el proyecto.
      • Si limitar el ámbito de autorización del trabajo al proyecto actual no está habilitado, abre el editor de la canalización y ve a la pestaña Opciones.
        • Si el ámbito de autorización del trabajo de compilación es Proyecto actual, el ámbito es proyecto.
        • Si el ámbito es colección:
  • Si la canalización está en un proyecto privado, comprueba la configuración de canalización en la configuración de la organización de Azure DevOps:
    • Si limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que no son de versión está habilitado, el ámbito es proyecto.
    • Si no está habilitado limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que no son de versión, comprueba la configuración de canalización en configuración del proyecto en Azure DevOps:
      • Si limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que no son de versión está habilitado, el ámbito es proyecto.
      • Si limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que no son de versión no está habilitado, abre el editor de la canalización y ve a la pestaña Opciones.
        • Si el ámbito de autorización del trabajo de compilación es Proyecto actual, el ámbito es proyecto.
        • O bien, el ámbito es colección.

Al crear una canalización clásica, el ámbito de autorización del trabajo se establece en el proyecto actual y el ámbito de autorización del trabajo de compilación se establece en project de forma predeterminada.

¿Cómo puedo determinar el ámbito de autorización del trabajo de la canalización de versión clásica?

Canalizaciones de versión clásicas en Azure DevOps Server 2020 y versiones posteriores se ejecutan con el ámbito de colección.

  • Si la canalización está en un proyecto público, el ámbito de autorización del trabajo es proyecto independientemente de cualquier otra configuración.
  • Si la canalización está en un proyecto privado, comprueba la configuración de canalización en la configuración de la organización de Azure DevOps:
    • Si limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que son de versión está habilitado, el ámbito es proyecto.
    • Si no está habilitado limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que son de versión, comprueba la configuración de canalización en configuración del proyecto en Azure DevOps:
      • Si limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que son de versión está habilitado, el ámbito es proyecto.
      • Si el ámbito es la colección: