当前位置: 首页 > article >正文

Azure DevOps 自托管 Agent 如何用 Service Principal 安全接入 Azure

Azure DevOps 使用服务主体配置自托管代理配置指南1. 概述2. 在 Azure AD 中创建服务主体 (SP)3. 授予 Azure DevOps 权限3.1. 组织层级用户身份与访问级别3.2. 组织层级Agent pools管理员3.3. 在 Linux VM 上安装和配置代理3.4. 启动并设置为系统服务3.5. 授予 Azure 资源权限 (可选用于部署)版本:1.0最后更新:2025年7月24日1. 概述本文档旨在提供一个安全、可靠且可重复的详细步骤指导如何在 Linux 环境下使用服务主体 (Service Principal) 作为身份验证方式成功配置和运行一个 Azure DevOps 自托管代理。好对于在生产环境或任何需要高安全性的自动化场景中最佳实践是使用服务主体 (Service Principal, SP)。服务主体 (SP)是 Azure 中一个独立的、非人类的身份标识专为应用程序、服务或自动化工具比如我们的 self-hosted agent设计。适用场景:生产环境部署:这是绝对的首选。当你的代理需要访问 Azure 资源例如部署到虚拟机、应用服务或管理资源时使用 SP 可以实现最小权限原则。自动化脚本/无人值守环境:任何不需要人工干预的场景SP 都是最理想的选择因为它不需要用户账户的生命周期管理。需要精细化权限控制:你可以为一个 SP 分配一个非常具体且权限受限的角色 (Role)比如只允许它对某个特定资源组有“参与者(Contributor)”权限。验证方式核心场景安全性推荐指数 (生产环境)Service Principal (SP)生产环境、自动化、需要访问 Azure 资源最高★★★★★ (强烈推荐)Personal Access Token (PAT)快速测试、个人项目、无云资源访问较低★★☆☆☆ (不推荐用于生产)Device code flow交互式设置、需要 MFA 的环境较高★★★☆☆ (适用于手动设置阶段)Integrated (Windows)内网域环境、与本地 AD 集成较高★★★★☆ (特定企业场景下推荐)2. 在 Azure AD 中创建服务主体 (SP)登录 Azure 门户点击侧边栏Entra ID选择应用注册注册创建一个新的服务主体。复制客户端ID和租户ID点击客户端凭据添加新的Secret。立即复制并永久保存Secret的值往后不再出现3. 授予 Azure DevOps 权限3.1. 组织层级用户身份与访问级别进入 Azure DevOpsOrganization Settings-General-Users。确认你的 服务主体 已经出现在用户列表中添加进入分配Project Contributor权限。Access Level将其修改为Basic。这是它能执行有效操作的基础。3.2. 组织层级Agent pools管理员回到Organization Settings-Pipelines-Agent pools。选择你要使用的代理池例如Default。进入Security标签页。点击Add 搜索并添加你的 SP并授予其Administrator角色。目的这是我们最关键一步。授予代理程序本身注册、连接和管理自己的权限。打开Third-party application access via OAuth它控制了 是否允许 OAuth 授权的 AAD 应用包括你创建的 Service Principal访问 Azure DevOps API3.3. 在 Linux VM 上安装和配置代理在Project层级或者组织层级选择Agent Pool添加New Agent点击Download下载vsts-agent-linux-x64-4.258.1.tar.gz包传输到Linux主机上创建目录并解压代理文件。mkdirmyagentcdmyagenttarzxvf{your_path}/vsts-agent-linux-x64-4.258.1.tar.gz ./config.sh跟随以下步骤输入Enter(Y/N)Accept the Team Explorer Everywhere license agreement now?(press enterforN)YConnect: Enter server URLhttps://dev.azure.com/{yourorganization}Enter authenticationtype(press enterforPAT)sp Enter Client(App)ID{your_Client(App)ID}Enter Tenant ID{your_Tenant ID}Enter Client secret**************************************** Connecting to server...Register Agent: Enter agent pool(press enterfordefault)default Enter agent name(press enterforMyProxy)MyProxy Scanningfortool capabilities. Connecting to the server. Successfully added the agent Testing agent connection. Enter work folder(press enterfor_work)/home/MyProxy/myagent/_work3.4. 启动并设置为系统服务安装服务为了安全建议指定一个普通用户需提前创建来运行该服务。如果使用当前用户请确保其权限适当。# 推荐以指定用户身份安装sudo./svc.shinstall[username]# 或者以 root 身份安装不推荐# sudo ./svc.sh install启动服务sudo./svc.sh start检查状态sudo./svc.sh status此时回到 DevOps 界面代理状态应为绿色的Online。3.5. 授予 Azure 资源权限 (可选用于部署)如果你的流水线需要部署 Azure 资源请确保 SP 拥有对应资源的 IAM 权限。在Azure 门户中导航到具体的目标资源如 App Service, 虚拟机。进入Access control (IAM)。点击Add role assignment将你的 SP 添加到具有最小必要权限的角色中如Website Contributor。

相关文章:

Azure DevOps 自托管 Agent 如何用 Service Principal 安全接入 Azure

Azure DevOps 使用服务主体配置自托管代理配置指南1. 概述2. 在 Azure AD 中创建服务主体 (SP)3. 授予 Azure DevOps 权限3.1. 组织层级:用户身份与访问级别3.2. 组织层级:Agent pools管理员3.3. 在 Linux VM 上安装和配置代理3.4. 启动并设置为系统服务…...

Steam Deck模拟器配置神器:EmuDeck一键安装30+游戏平台

Steam Deck模拟器配置神器:EmuDeck一键安装30游戏平台 【免费下载链接】EmuDeck Emulator configurator for Steam Deck 项目地址: https://gitcode.com/gh_mirrors/em/EmuDeck 想在Steam Deck上重温童年经典游戏,却被复杂的模拟器配置难住了&…...

3步解锁AI编程助手全部潜力:Cursor Pro功能优化工具深度解析

3步解锁AI编程助手全部潜力:Cursor Pro功能优化工具深度解析 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached yo…...

3分钟快速上手:Win11Debloat - 让你的Windows 11系统更纯净高效

3分钟快速上手:Win11Debloat - 让你的Windows 11系统更纯净高效 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutt…...

解密MyBatis拦截器:从插件机制到实战应用

1. MyBatis拦截器基础入门 第一次接触MyBatis拦截器时,我完全被它强大的功能震撼到了。简单来说,拦截器就像是在MyBatis执行SQL过程中的"关卡",可以在特定时机插入自定义逻辑。想象一下,你正在通过一条高速公路&#xf…...

3步搞定B站音视频分离:BilibiliDown开源工具的实战指南

3步搞定B站音视频分离:BilibiliDown开源工具的实战指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/…...

DLSS-G转FSR3:突破性技术革命让老款RTX显卡重获新生

DLSS-G转FSR3:突破性技术革命让老款RTX显卡重获新生 【免费下载链接】dlssg-to-fsr3 Adds AMD FSR 3 Frame Generation to games by replacing Nvidia DLSS Frame Generation (nvngx_dlssg). 项目地址: https://gitcode.com/gh_mirrors/dl/dlssg-to-fsr3 在图…...

别再只把DeepSeek当聊天机器人了!这5个隐藏功能,让你工作效率翻倍

解锁DeepSeek的5个高阶生产力玩法:从聊天工具到智能副手的蜕变 当大多数人还在用DeepSeek进行基础问答时,进阶用户已经把它变成了私人效率引擎。这个AI平台远不止是回答问题的工具——它能重构你的工作流、优化决策过程,甚至成为跨领域协作的…...

3步搞定智能字幕下载:GetSubtitles让观影体验再升级

3步搞定智能字幕下载:GetSubtitles让观影体验再升级 【免费下载链接】GetSubtitles 一步下载匹配字幕 项目地址: https://gitcode.com/gh_mirrors/ge/GetSubtitles 您是否曾因找不到匹配的字幕而放弃观看一部精彩的外语影片?GetSubtitles作为一款…...

终极指南:如何提升实时多人姿态估计算法的可解释性与可信度

终极指南:如何提升实时多人姿态估计算法的可解释性与可信度 【免费下载链接】Realtime_Multi-Person_Pose_Estimation Code repo for realtime multi-person pose estimation in CVPR17 (Oral) 项目地址: https://gitcode.com/gh_mirrors/re/Realtime_Multi-Perso…...

Win11Debloat终极指南:如何快速清理Windows系统并提升70%性能

Win11Debloat终极指南:如何快速清理Windows系统并提升70%性能 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter…...

FastDFS系统监控告警集成:企业微信与钉钉通知全攻略

FastDFS系统监控告警集成:企业微信与钉钉通知全攻略 【免费下载链接】fastdfs FastDFS is a high performance distributed file system (DFS). Its major functions include: file storing, file syncing and file accessing, and design for high capacity and lo…...

收藏!AI时代普通程序员如何转型?3-6个月快速升级指南,小白也能看懂!

AI正改变程序员行业,常规编码任务或被AI替代,但高级岗位和复合型人才需求增加。普通程序员需利用AI提升逻辑思维、问题解决和系统架构能力,转向AI/ML工程、网络安全、科技与工种复合或跨职能岗位。通过每天用AI学习、接副业单等实战方法&…...

企业级数据库AI化实践终极指南:SuperDuperDB与SQL Server深度集成

企业级数据库AI化实践终极指南:SuperDuperDB与SQL Server深度集成 【免费下载链接】superduperdb Superduper: End-to-end framework for building custom AI applications and agents. 项目地址: https://gitcode.com/gh_mirrors/su/superduperdb 在当今数据…...

解锁NVMe性能:Ventoy突破高速存储启动限制的技术实践

解锁NVMe性能:Ventoy突破高速存储启动限制的技术实践 【免费下载链接】Ventoy A new bootable USB solution. 项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy 在企业级服务器和高端工作站环境中,你是否遇到过NVMe(非易失性…...

[技术突破] 移动高精度定位新纪元:Android平台RTKLIB解决方案全解析

[技术突破] 移动高精度定位新纪元:Android平台RTKLIB解决方案全解析 【免费下载链接】RtkGps Playing with rtklib on android 项目地址: https://gitcode.com/gh_mirrors/rt/RtkGps 技术原理篇:核心算法与协议支持 解锁厘米级定位:R…...

SRWE:突破Windows窗口限制的运行时分辨率编辑解决方案

SRWE:突破Windows窗口限制的运行时分辨率编辑解决方案 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 在Windows操作系统生态中,应用程序窗口的尺寸和位置控制一直受到系统预设框架的限制…...

解决家庭媒体投屏难题:Go2TV让跨设备视频传输变得简单

解决家庭媒体投屏难题:Go2TV让跨设备视频传输变得简单 【免费下载链接】go2tv Cast media files to Smart TVs and Chromecast devices. 项目地址: https://gitcode.com/gh_mirrors/go/go2tv 还在为不同设备间的媒体传输而烦恼吗?无论是想在客厅电…...

避坑指南:在Python 3.7环境用ModelScope跑speech_campplus_sv声纹模型,小心这个隐藏Bug

深度解析Python 3.7环境运行ModelScope声纹模型的隐藏陷阱 当你在Python 3.7环境中满怀期待地运行达摩院的speech_campplus_sv声纹识别模型时,突然遭遇AttributeError: SpeakerVerificationPipeline object has no attribute model_cfg这样的错误提示,确…...

当FileZilla遇见AI:用快马平台打造能听懂人话的智能文件传输助手

今天想和大家分享一个有趣的实践:如何用AI给传统的FTP工具FileZilla"装上大脑",让它变成一个能听懂人话的智能文件传输助手。这个想法源于我日常工作中频繁的文件传输需求,每次手动分类、压缩、检查敏感内容实在太费时间了。 智能文…...

如何通过Outfit字体打造专业级视觉体验?设计师必备指南

如何通过Outfit字体打造专业级视觉体验?设计师必备指南 【免费下载链接】Outfit-Fonts The most on-brand typeface 项目地址: https://gitcode.com/gh_mirrors/ou/Outfit-Fonts 在数字化设计领域,字体不仅是信息传递的载体,更是品牌个…...

Java 性能优化最佳实践:构建高性能的 Java 应用

Java 性能优化最佳实践:构建高性能的 Java 应用 别叫我大神,叫我 Alex 就好。 一、引言 大家好,我是 Alex。性能优化是 Java 开发中非常重要的一个环节,它直接影响到应用的用户体验和资源利用效率。在当今竞争激烈的市场环境中&a…...

从理论到实践:基于快马平台打造openclaw颜色分拣实战项目

最近在做一个很有意思的实战项目——基于openclaw的自动化颜色分拣系统。这个项目完美结合了计算机视觉和机械控制,特别适合用来验证一些工业自动化场景中的关键技术点。下面分享下我的实现过程和经验总结。 项目整体架构设计 这个系统主要分为四个核心模块&#…...

SGLang-v0.5.6备份策略详解:零基础学会模型状态保存与恢复

SGLang-v0.5.6备份策略详解:零基础学会模型状态保存与恢复 1. 引言 想象一下,你正在和一个AI助手进行一场长达半小时的深度对话,从技术讨论到方案规划,聊得非常投入。突然,服务器需要重启升级,或者程序意…...

Tsuru平台终极选型指南:如何选择最适合你的PaaS解决方案

Tsuru平台终极选型指南:如何选择最适合你的PaaS解决方案 【免费下载链接】tsuru Open source and extensible Platform as a Service (PaaS). 项目地址: https://gitcode.com/gh_mirrors/ts/tsuru 在当今快速发展的云原生时代,选择合适的PaaS平台…...

3个核心功能突破JetBrains IDE试用期限制:2026完全指南

3个核心功能突破JetBrains IDE试用期限制:2026完全指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 问题引入:破解IDE时间枷锁的开发者困境 作为现代软件开发的基础设施,Je…...

如何在签署前使用OpenSign预览和编辑文档:完整指南

如何在签署前使用OpenSign预览和编辑文档:完整指南 【免费下载链接】OpenSign 🔥 The free & Open Source DocuSign alternative 项目地址: https://gitcode.com/gh_mirrors/op/OpenSign OpenSign作为免费开源的DocuSign替代方案,…...

从工业控制到智能家居:手把手教你根据项目需求选对RTOS(ThreadX vs. FreeRTOS实战指南)

从工业控制到智能家居:手把手教你根据项目需求选对RTOS(ThreadX vs. FreeRTOS实战指南) 在嵌入式系统开发中,选择合适的实时操作系统(RTOS)往往决定了项目的成败。面对工业控制的高精度需求或智能家居的成本…...

LeetCode刷题笔记:用动态规划一口气搞定6道回文串问题(附Java代码)

动态规划解回文问题:从子串到子序列的通用解法 回文串问题在算法面试中出现的频率居高不下,无论是统计回文子串数量、寻找最长回文子串,还是处理回文子序列,动态规划(DP)都是解决这类问题的利器。本文将带你系统掌握六种经典回文问…...

VMware16虚拟机扩容实战:Ubuntu22.04磁盘空间不足的终极解决方案

VMware16虚拟机扩容实战:Ubuntu22.04磁盘空间不足的终极解决方案 当你全神贯注地在Ubuntu22.04虚拟环境中开发项目时,突然弹出的"磁盘空间不足"警告足以让任何开发者心头一紧。特别是在使用VMware16这类虚拟化平台时,初始分配的磁盘…...