You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps服务账户创建指南及适用于Azure Runbook的7 Pace权限服务账户配置方法

嘿,我刚好处理过类似的场景,给你整理了分步的解决方案,应该能解决你的两个问题:

1. 在Azure DevOps中创建服务账户

Azure DevOps里的服务账户本质是Azure Active Directory(Azure AD)中的服务主体,创建流程分为两步:先在Azure AD注册应用,再将其添加到Azure DevOps并分配权限。

  • 第一步:在Azure AD创建服务主体(应用注册)
    • 登录Azure门户,找到「Azure Active Directory」服务
    • 进入左侧菜单的「应用注册」,点击「新注册」
    • 填写名称(比如7Pace-AzureDevOps-Service-Account),选择「仅限此组织目录中的帐户」,重定向URI可以随便填一个公共客户端地址(比如http://localhost,后续用不上但必填)
    • 注册完成后,复制页面上的「客户端ID」和「租户ID」,这两个是后续认证的关键信息
  • 第二步:生成服务主体的认证密钥
    • 在刚才创建的应用注册页面,进入左侧「证书和密码」>「客户端密码」
    • 点击「新客户端密码」,设置有效期,然后点击「添加」
    • 重要:复制生成的密码值(只会显示一次),丢失的话只能重新生成
  • 第三步:将服务主体添加到Azure DevOps项目
    • 打开你的Azure DevOps组织和目标项目
    • 进入「项目设置」>「权限」>「添加用户」
    • 在搜索框中输入刚才创建的应用注册名称,找到后添加到项目
    • 给它分配合适的权限:如果只是读取工时表和工作详情,「读者」权限可能足够;如果需要更多操作,可根据需求分配「项目管理员」或更细粒度的权限
2. 创建适用于7Pace和Azure DevOps的无MFA服务账户(用于Azure Runbook)

服务主体本身就不依赖用户级的MFA(因为用密钥/证书认证),所以重点是给它分配7Pace的访问权限,以及在Runbook中配置认证逻辑:

  • 给服务主体分配7Pace访问权限
    • 登录Azure DevOps中的7Pace Timetracker扩展页面(通常在项目的「概述」或「扩展」菜单里)
    • 找到「权限管理」或「用户访问」选项
    • 搜索并添加刚才创建的服务主体,分配「读取工时表数据」等必要权限(根据你需要获取详情的需求调整)
  • 关于MFA的说明
    • 服务主体是基于应用级的密钥认证,不属于普通用户范畴,所以不会触发MFA验证。只要确保不要把这个服务主体加入强制MFA的Azure AD用户组即可,无需额外禁用MFA操作
  • 在Azure Runbook中使用服务主体认证示例(PowerShell)
    下面是用服务主体获取Azure DevOps工作详情和7Pace工时表的基础代码框架:
    # 服务主体认证信息
    $tenantId = "你的Azure AD租户ID"
    $clientId = "你的应用注册客户端ID"
    $clientSecret = ConvertTo-SecureString "你的客户端密码" -AsPlainText -Force
    $credential = New-Object System.Management.Automation.PSCredential($clientId, $clientSecret)
    
    # 获取Azure DevOps的访问令牌
    $adoToken = Get-AzAccessToken -ResourceUrl "https://dev.azure.com" -TenantId $tenantId -Credential $credential
    
    # 调用Azure DevOps API获取工作详情
    $orgName = "你的Azure DevOps组织名"
    $projectName = "你的项目名"
    $workItemsUrl = "https://dev.azure.com/$orgName/$projectName/_apis/wit/workitems?ids=123,456&api-version=7.1-preview.3"
    $workItems = Invoke-RestMethod -Uri $workItemsUrl -Headers @{Authorization = "Bearer $($adoToken.Token)"} -Method Get
    
    # 调用7Pace API获取工时表详情(假设7Pace支持Azure AD令牌认证)
    $7PaceUrl = "https://your-7pace-instance/api/timesheets?projectId=xxx&api-version=v1"
    $timesheets = Invoke-RestMethod -Uri $7PaceUrl -Headers @{Authorization = "Bearer $($adoToken.Token)"} -Method Get
    
    注意:如果7Pace不支持Azure AD令牌,你可能需要在7Pace管理界面给服务主体生成专属的API密钥,替换上述请求中的认证头。

内容的提问来源于stack exchange,提问作者Rock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 21:52:37