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:
- Consulte el código fuente de un repositorio de Git.
- Adición de una etiqueta al repositorio
- Acceso a una fuente en Azure Artifacts
- Carga de registros desde el agente al servicio
- Carga de resultados de pruebas y otros artefactos del agente en el servicio
- Actualizar un elemento de trabajo
Azure Pipelines usa tokens de acceso de trabajo para realizar estas tareas. Una 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 de recopilación o proyecto. Al establecer el ámbito en colección, decide permitir que las canalizaciones accedan a todos los repositorios de la colección o organización. Al establecer el ámbito en proyecto, decide restringir el acceso solo a los repositorios que se encuentran en el mismo proyecto que la canalización.
El ámbito de la autorización de trabajo se puede establecer para toda la organización 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 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 para 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 para 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 de trabajos 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 en proyecto en el 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.
Nota:
Si la canalización está en un proyecto público de , el ámbito de autorización del trabajo se restringe automáticamente a 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 de 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 que se describe en la sección anterior, Azure Pipelines proporciona un ámbito de autorización de trabajo Limitar el ámbito de autorización de trabajos a los repositorios de Azure DevOps a los que se hace referencia configuración.
Las canalizaciones pueden acceder a cualquier repositorio de Azure DevOps en proyectos autorizados a menos que limitar el ámbito de autorización del trabajo a los repositorios de Azure DevOps a los que se hace referencia está habilitado. 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 repositorios git de Azure Repos: limitar el ámbito de autorización de trabajos a repositorios de Azure DevOps a los que se hace referencia.
Proteger el 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 un Proteger el acceso a los repositorios en canalizaciones de YAML configuración.
Las canalizaciones pueden acceder a cualquier repositorio de Azure DevOps en proyectos autorizados a menos que Proteger el acceso a los repositorios de canalizaciones yaML esté habilitado. 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 repositorios de Git de Azure Repos: protección del 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 solo 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 siguiente formato:
Project Collection Build Service ({OrgName})
- Por ejemplo, si el nombre de la organización es
fabrikam-tailspin
, esta cuenta tiene el nombreProject Collection Build Service (fabrikam-tailspin)
.
El nombre de identidad con ámbito de proyecto tiene el siguiente formato:
{Project Name} Build Service ({Org Name})
- Por ejemplo, si el nombre de la organización es
fabrikam-tailspin
y el nombre del proyecto esSpaceGameWeb
, esta cuenta tiene el nombreSpaceGameWeb Build Service (fabrikam-tailspin)
.
De forma predeterminada, se usa la identidad con ámbito de recopilación, a menos que se configure lo contrario, tal como se describe en la sección anterior ámbito de autorización del trabajo.
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 del 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 your-project-name (your-collection-name).
Para restringir o conceder acceso adicional a Servicio de compilación de colecciones de proyectos (nombre de colección):
- Seleccione Administrar de seguridad en el menú de desbordamiento de página canalizaciones.
- En Usuarios, seleccione servicio de compilación de colecciones de proyectos (nombre de la colección).
- Realice cualquier cambio 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 de, busque servicio de compilación de colecciones de proyectos (nombre de colección).
- Realice cambios en los permisos no relacionados con canalizaciones para esta cuenta.
- Dado que servicio de compilación de colecciones de proyectos (nombre de colección) 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 de seguridad en el menú de desbordamiento de página canalizaciones.
- En Users, seleccione Your-project-name Build Service (your-collection-name).
- Realice cualquier cambio 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 de, busque servicio de compilación Your-project-name (your-collection-name).
- Realice cambios en los permisos no relacionados con canalizaciones para esta cuenta.
- Dado que servicio de compilación nombre-proyecto (nombre-colección) es un usuario de la organización o colección, puede agregar esta cuenta explícitamente a cualquier recurso( por ejemplo, a una fuente de Azure Artifacts).
Configurar permisos para que un proyecto acceda a otro proyecto 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 conceden permisos para acceder al proyecto de fabrikam-tailspin/FabrikamFiber
.
En el proyecto de FabrikamFiber, vaya a Configuración del proyecto, Permisos.
Cree un nuevo grupo denominado proyectos externos y agregue la cuenta de SpaceGameWeb Build Service.
Elija Usuarios, empiece a escribir el nombre SpaceGameWeby seleccione la cuenta de SpaceGameWeb Build Service. Si no ve inicialmente ningún resultado de búsqueda, seleccione Expand search.
Conceda el permiso Ver información de nivel de proyecto para ese 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 de FabrikamFiber
en el proyecto de fabrikam-tailspin/FabrikamFiber
.
Siga los pasos para conceder al
SpaceGameWeb
permiso de identidad de compilación con ámbito de proyecto para acceder al proyecto deFabrikamFiber
.En el proyecto FabrikamFiber, vaya a Configuración del proyecto, Repositorios, FabrikamFiber.
Elija el icono de +, empiece a escribir el nombre SpaceGameWeby seleccione la cuenta de Servicio de compilación De SpaceGameWeb.
Empiece a escribir el nombre SpaceGameWeby seleccione la cuenta SpaceGameWeb Build Service.
Conceda permisos de lectura para ese usuario.
Ejemplo: Configuración de permisos para acceder a otros recursos 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 conceden permisos para acceder a otros recursos del proyecto de fabrikam-tailspin/FabrikamFiber
.
Siga los pasos para conceder al
SpaceGameWeb
permiso de identidad de compilación con ámbito de proyecto para acceder al proyecto deFabrikamFiber
.Configure los permisos deseados para ese usuario.
Preguntas más frecuentes
¿Cómo se determina 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.
- Compruebe la configuración de canalización en la configuración de Azure DevOps Organización:
- Si limitar el ámbito de autorización del trabajo al proyecto actual está habilitado, el ámbito se proyecto.
- Si limitar el ámbito de autorización del trabajo al proyecto actual no está habilitado, compruebe la configuración de canalización en la configuración del proyecto de en Azure DevOps:
- Si limitar el ámbito de autorización del trabajo al proyecto actual está habilitado, el ámbito se proyecto.
- De lo contrario, el ámbito es colección.
- Si la canalización está en un proyecto privado, compruebe la configuración de canalización en la configuración de Azure DevOps Organización:
- Si limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que no son de versión está habilitado, el ámbito se proyecto.
- Si limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que no son de versión no está habilitado, compruebe la configuración de canalización en la configuración del proyecto de 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 se proyecto.
- De lo contrario, el ámbito es colección.
¿Cómo puedo determinar el ámbito de autorización del trabajo de mi 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.
- Compruebe la configuración de canalización en la configuración de Azure DevOps Organización:
- Si limitar el ámbito de autorización del trabajo al proyecto actual está habilitado, el ámbito se proyecto.
- Si limitar el ámbito de autorización del trabajo al proyecto actual no está habilitado, compruebe la configuración de canalización en la configuración del proyecto de en Azure DevOps:
- Si limitar el ámbito de autorización del trabajo al proyecto actual está habilitado, el ámbito se proyecto.
- Si limitar el ámbito de autorización del trabajo al proyecto actual no está habilitado, abra el editor de la canalización y vaya a la pestaña Opciones de .
- Si el ámbito de autorización del trabajo de compilación de es proyecto actual, el ámbito es proyecto.
- De lo contrario, el ámbito es colección.
- Si la canalización está en un proyecto privado, compruebe la configuración de canalización en la configuración de Azure DevOps Organización:
- Si limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que no son de versión está habilitado, el ámbito se proyecto.
- Si limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que no son de versión no está habilitado, compruebe la configuración de canalización en la configuración del proyecto de 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 se proyecto.
- Si limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones que no son de versión no está habilitado, abra el editor de la canalización y vaya a la pestaña Opciones de .
- Si el ámbito de autorización del trabajo de compilación de es proyecto actual, el ámbito es proyecto.
- O bien, el ámbito es colección.
Al crear una nueva canalización clásica, el ámbito de autorización del trabajo de se establece en del proyecto actual y el ámbito de autorización del trabajo de compilación se establece en proyecto de forma predeterminada.
¿Cómo puedo determinar el ámbito de autorización del trabajo de mi canalización de versión clásica?
Las canalizaciones de versión clásicas en Azure DevOps Server 2020 y versiones posteriores se ejecutan con recopilación ámbito.
- 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, compruebe la configuración de canalización en la configuración de Azure DevOps Organización:
- Si limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones de versión está habilitado, el ámbito se proyecto.
- Si limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones de versión no está habilitado, compruebe la configuración de canalización en la configuración del proyecto en Azure DevOps:
- Si limitar el ámbito de autorización del trabajo al proyecto actual para canalizaciones de versión está habilitado, el ámbito se proyecto.
- De lo contrario, el ámbito es colección.