需要 Visual Studio Team Service 的 IP 范围才能在 AWS 上创建 SG



我们在AWS上有基础设施,我们的NET项目开始使用Visual Studio Team Service(VSTS)来提供CI/CD并从那里管理所有构建/发布过程。我们使用的是托管构建服务器,但部署将在AWS IIS Server(EC2 Windows 8 R2 IIS Server)上进行。

我试图找到 VSTS 的 IP 范围是什么,以便创建正确的安全组 (SG) 并添加到我们的 EC2 实例中,但我无法知道范围是什么,它们按区域提供列表我需要更具体的东西,例如 10.73.0.0 - 10.73.255.255,然后我将能够做类似 10.73.0.0/16 的事情。

无论如何要知道IP范围是什么,因为现在在我的POC中,您是否使用过于开放的SG,但我需要限制这一点。

Visual Studio Team Service(VSTS)似乎托管在Azure中。因此,你将无法获得比 Azure 的整个 IP 列表更具体的 IP 范围列表,这些列表可能会发生变化。

Azure 每周三在此处发布列表: https://www.microsoft.com/en-us/download/confirmation.aspx?id=41653:

并且,您需要允许已设置帐户的区域的所有 IP 范围。

我个人的观点是,这太难维护了,您应该寻找其他选项来保护访问,或者考虑自托管等效的 VSTS。

托管构建使用哪些 IP 地址?

我们每周三发布一个 XML 文档,其中包含所有 Azure 数据中心的 IP 范围按区域细分。请看

https://www.microsoft.com/en-us/download/confirmation.aspx?id=41653:

此文件包含计算 IP 地址范围(包括 SQL 范围),由Microsoft Azure 数据中心使用。一个新的 xml 文件将 每周三(太平洋时间)上传新计划的IP 地址范围。新的 IP 地址范围将在 下周一(太平洋时间)。请下载新的 xml 文件并 在星期一之前在您的网站上执行必要的更改。 托管 代理应与 VSTS 帐户位于同一区域,你需要 将您所在地区的 IP 地址范围列入白名单,您可以从中获取 IP 地址范围 上面的链接。 若要在 VSTS 中验证你的区域,请导航到 设置页面位于:

https://<account>.visualstudio.com/_admin/_home/settings

在"帐户"下,您将看到"区域"字段。

  • https://www.visualstudio.com/team-services/support-visual-studio-team-services/#!articles/904-7274-what-ip-addresses-are-used-by-hosted-build

因此,由于您知道 IP 地址 xml 何时因 Mark 而更改,因此您可以编写并调度一个 lambda 函数来更改安全组。

下面是一个 AWS 示例,说明如何使用 Cloudfront 分配 IP 地址范围执行此操作。

https://github.com/awslabs/aws-cloudfront-samples

您可以动态获取当前构建代理的 IP 地址并动态创建安全组(通过使用适用于 .NET 的 AWS 开发工具包)

  1. 打开生成定义>"选择选项"选项卡>选中"允许脚本访问 OAuth 令牌">
  2. 添加PowerShell步骤/任务(Arguments: -RestAddress https://starain.vsdtl.visualstudio.com/DefaultCollection/_apis/vslabs/ipaddress -Token $(System.AccessToken))。

附注:

Param (
[string]$RestAddress,
[string]$Token
)
$basicAuth = ("{0}:{1}" -f 'test',$Token)
$basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth)
$basicAuth = [System.Convert]::ToBase64String($basicAuth)
$headers = @{Authorization=("Basic {0}" -f $basicAuth)}
$result = Invoke-RestMethod -Uri $RestAddress -headers $headers -Method Get
Write-Host $result.value
Write-Host "##vso[task.setvariable variable=CIP;]$($result.value)"
  1. 在目标计算机上添加 PowerShell 步骤/任务以调用 AWS 控制台应用程序。 (您可以通过指定脚本参数来传递 CIP(步骤 2)变量,例如 -currentIP $(CIP))

有关创建安全组的文章:在 Amazon EC2 中创建安全组

最新更新