【问题标题】:VSTS REST API to change security permissions on Release definition or Release definition environmentVSTS REST API 更改发布定义或发布定义环境的安全权限
【发布时间】:2026-01-25 02:00:01
【问题描述】:

我找不到任何参考 VSTS REST API 来更改发布定义或发布定义环境的安全性的文档。

我正在尝试创建一个自动化脚本来创建一个发布定义,该定义将接受用户列表作为参数并在发布定义和发布定义环境中分配有限的权限。

有什么办法吗?

【问题讨论】:

    标签: azure-devops devops ms-release-management azure-pipelines-release-pipeline azure-devops-rest-api


    【解决方案1】:

    没有 REST API 来更改发布定义或发布环境的权限。我提交了一个您可以投票的用户声音。 REST API for release defintion or release enviornment

    【讨论】:

    • 有什么解决方法吗?我环顾四周,发现 tfssecurity 命令行实用程序,但不确定它是否适用于 VSO documentation tfssecurity
    • @AnkushGupta 此工具用于本地 TFS,它位于 TFS 安装路径中。您可以尝试通过开发者工具(msdn.microsoft.com/en-us/library/gg130952(v=vs.85).aspx)捕获发布定义安全更改(更改安全>点击保存)的请求,然后您可以模拟该请求以实现您的要求。
    • @AnkushGupta 请问你用@starian-chen-msft 建议的方法解决了吗?我需要解决同样的问题。
    【解决方案2】:

    这个文档对我很有用: https://github.com/MicrosoftDocs/azure-devops-docs/blob/master/docs/integrate/previous-apis/security/acls.md

    API 适合我,使用 TFS 2017 更新 2,API 版本 3.2。

    POST https://mytfsserver/mycollection/_apis/accesscontrollists/c788c23e-1b46-4162-8f5e-d7585343b5de
    

    与身体:

    {
      "value": [
        {
          "inheritPermissions": true,  
          "token": "<your team project GUID>/406",
          "acesDictionary": {
            "Microsoft.TeamFoundation.Identity;S-1-9-1551374245-1217126478-2421225543-2840439466-2364649907-1-111749626-101504790-2465118485-2523779884": {
              "descriptor": "Microsoft.TeamFoundation.Identity;S-1-9-1551374245-1217126478-2421225543-2840439466-2364649907-1-111749626-101504790-2465118485-2523779884",
              "allow": 2071
            }
          }
        }
      ]
    }
    

    对于环境,您必须将令牌更改为: "你的团队项目 GUID/406/Environment/624"

    406 是发布 id,624 是环境 id

    这个查询对于列出 ReleaseManagement 中的所有条目很有用:

    https://mytfsserver/mycollection/_apis/accesscontrollists/c788c23e-1b46-4162-8f5e-d7585343b5de
    

    使用发布和环境定义的安全权限,看看响应中会发生什么。

    注意:c788c23e-1b46-4162-8f5e-d7585343b5de = 发布管理的命名空间 ID

    为了使用 API 创建发布定义,我必须使用预览版 API,因此 api-version 设置为 3.2-preview

    【讨论】: