对 Azure Pipelines 免费授权的更改

我们正在暂时改变获取 Azure Pipelines 免费赠款的过程,以解决日益滥用托管代理的问题。 默认情况下,在 Azure DevOps 中创建的新组织可能不再获得并发管道的免费授权。 新用户必须发送电子邮件并提供其他信息才能获取免费的 CI/CD。

有关详细信息,请查看下面的功能列表。

Azure Pipelines

Azure Repos

Azure Pipelines

对 Azure Pipelines 免费授权的更改

Azure Pipelines 多年来一直在向公共和专用项目提供免费 CI/CD。 由于这相当于放弃免费计算,因此它一直是滥用目标,尤其是加密挖掘。 尽量减少这种滥用总是从团队中得到精力。 在过去的几个月里,情况已经大大恶化,Azure DevOps 中的新项目比例很高,用于加密挖掘和其他我们归类为滥用活动的新项目。 过去一个月发生了一些服务事件,由于这种滥用导致现有客户的等待时间较长。

为了解决这一情况,我们为 Azure DevOps 中的新组织添加了额外的步骤,以获得其免费授权。 以下更改将立即生效:

  • 默认情况下,在 Azure DevOps 中创建的新组织将不再获得并发管道的免费授权。 这适用于新组织中的公共项目和专用项目。
  • 若要请求免费授予, 请提交请求 并明确提供以下详细信息:
    • 姓名
    • 要为其请求免费授权的 Azure DevOps 组织
    • 无论是公共项目还是专用项目,都需要免费授予
    • 指向计划生成的存储库的链接(仅限公共项目)
    • 项目的简要说明(仅限公共项目)

我们将在几天内查看你的请求并做出响应。

注意

此更改仅影响新组织。 它不适用于现有项目或组织。 这不会更改你可以获取的免费授予量。 它只增加了一个额外的步骤,以获得该免费授权。

对于任何不便,我们深表歉意,这可能会导致希望将 Azure Pipelines 用于 CI/CD 的新客户。 我们认为,继续向所有客户提供高水平的服务是必要的。 我们将继续探索预防滥用的自动化方法,并在我们有一个可靠的机制防止滥用后恢复以前的模型。

在经典版本中删除每管道保留策略

现在可以在 Azure DevOps 项目设置中为经典生成和 YAML 管道配置保留策略。 虽然这是为 YAML 管道配置保留的唯一方法,但也可以为每个管道配置经典生成管道的保留期。 我们将在即将发布的版本中删除经典生成管道的所有每管道保留规则。

这意味着什么:任何仍具有每管道保留规则的经典生成管道都将很快受项目级保留规则的约束。

为了帮助你识别这些管道,我们将在此版本中推出更改,以显示运行列表页面顶部的横幅。

生成保留改进

建议通过删除每管道保留规则来更新管道。 如果管道特别需要自定义规则,则可以在管道中使用自定义任务。 有关通过任务添加保留租约的信息,请参阅 生成、发布和测试文档的设置保留策略。

管道中环境变量的新控件

Azure Pipelines 代理扫描标准输出以获取特殊的 日志记录命令 并执行它们。 该setVariable命令可用于设置变量或修改以前定义的变量。 这可能会被系统外部的参与者利用。 例如,如果管道具有打印 ftp 服务器中文件列表的步骤,则有权访问 ftp 服务器的人员可以添加新文件,其名称包含 setVariable 命令,并导致管道更改其行为。

我们有许多用户依赖于在其管道中使用日志记录命令设置变量。 在此版本中,我们将进行以下更改,以减少不需要使用该 setVariable 命令的风险。

  • 我们为任务作者添加了一个新构造。 通过包括如下 task.json代码片段,任务作者可以控制任务是否设置了任何变量。
{
    "restrictions": {
        "commands": {
            "mode": "restricted"
        },
        "settableVariables": {
            "allowed": [
                "myVar",
                "otherVar"
            ]
        }
    },
}​ 
  • 此外,我们正在更新许多内置任务,例如 ssh,以便无法利用它们。

  • 最后,现在可以使用 YAML 构造来控制步骤是否可以设置变量。

steps:
- script: echo hello
  target:
    settableVariables: none
steps:
- script: echo hello
  target:
    settableVariables:
    - things
    - stuff

为分叉生成生成无限制令牌

GitHub 用户通常使用分叉来参与上游存储库。 当 Azure Pipelines 从 GitHub 存储库的分支生成贡献时,它会限制授予作业访问令牌的权限,不允许此类作业访问管道机密。 可以在我们的 文档中找到有关生成分支安全性的详细信息。

在生成 GitHub Enterprise Server 存储库的分支时,默认应用相同的限制。 在这样的封闭环境中,这可能比所需更严格,用户仍可能受益于内部源协作模型。 虽然可以在管道中配置设置以使机密可用于分支,但没有用于控制作业访问令牌范围的设置。 通过此版本,我们让你能够控制生成常规作业访问令牌,即使生成分支也是如此。

可以在管道编辑器中从 触发器 更改此设置。 在更改此设置之前,请确保完全了解启用此配置的安全影响。

为分叉生成生成无限制令牌

Az、Azure 和 Azure RM 预安装模块中的更改

我们正在将预安装 Az、Azure 和 AzureRM 模块的过程更新到 Ubuntu 和 Windows 托管映像,以便更高效地支持和映像空间使用。

在 3 月 29 日这一周,除最新版本和最受欢迎的版本外,所有版本都将作为存档进行存储,并按需由 Azure PowerShell 任务提取。 更改的详细列表如下:

  1. Windows 映像

    • 所有 Az 模块版本(当前为 5.5.0)除外,都将存档

    • 除最新模块(当前为 5.3.0)和 2.1.0 之外的所有 Azure 模块都将存档

    • 除最新模块(当前为 6.13.1)和 2.1.0 之外的所有 AzureRM 模块都将存档

  2. Ubuntu 映像

    • 除最新一个(当前为 5.5.0)之外的所有 Az 模块都将从映像中完全存档或删除,并按需安装任务。

在托管代理上使用现成 Azure 任务的任何管道都将按预期工作,不需要更新。 如果不使用这些任务,请将管道切换到使用 Azure PowerShell 任务以避免对预安装的模块进行更改。

注意

这些更新不会影响在自承载代理上运行的管道。

Azure Repos

禁用存储库

客户经常请求一种方法来禁用存储库,并阻止用户访问其内容。 例如,你可能希望在以下情况下执行此操作:

  • 在存储库中找到了机密。
  • 第三方扫描工具发现存储库不符合要求。

在这种情况下,你可能希望在解决问题时暂时禁用存储库。 使用此更新,如果具有 “删除存储库”权限,则可以禁用存储库 。 通过禁用存储库,可以:

  • 可以在存储库列表中列出存储库
  • 无法读取存储库的内容
  • 无法更新存储库的内容
  • 查看在 Azure Repos UI 中尝试访问存储库时已禁用存储库的消息

执行必要的缓解步骤后,具有 “删除存储库 ”权限的用户可以重新启用存储库。 若要禁用或启用存储库,请转到“项目设置”,选择“存储库”,然后选择特定的存储库。

禁用存储库

后续步骤

注意

这些功能将在未来两到三周内推出。

前往 Azure DevOps 并了解一下。

如何提供反馈

我们很想听听你对这些功能的看法。 使用帮助菜单报告问题或提供建议。

提出建议

你还可以在 Stack Overflow 上获得社区的建议和问题的答案。

此致

Vijay Machiraju