我们使用Azure DevOps在Azure中构建和部署我们的应用程序和服务。现在,我们还将本地部署也切换到Azure DevOps。
不幸的是,我们的服务器存在一个问题,这些服务器一方面受到防火墙保护(大部分出站互联网流量被阻止),另一方面又是Azure DevOps部署组的一部分。一旦创建新版本并开始部署到某个阶段,由于不允许服务器从存储工件的Blob存储中下载工件,工件下载过程将失败。
Warning, https://elgvsblobprodsu6weus10.blob.core.windows.net/dbcXXXXXXX/XXXX
Try 1/5, retryable exception caught. Retrying in 00:00:01. Details:
2019-10-21T19:59:02.7071549Z No LastRequestResponse on exception HttpRequestException: An error occurred while sending the request. System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: Error 12029 calling WINHTTP_CALLBACK_STATUS_REQUEST_ERROR, 'A connection with the server could not be established'.
2019-10-21T19:59:02.7071940Z at System.Threading.Tasks.RendezvousAwaitable`1.GetResult()
2019-10-21T19:59:02.7072055Z at System.Net.Http.WinHttpHandler.StartRequest(WinHttpRequestState state)
2019-10-21T19:59:02.7072112Z --- End of inner exception stack trace ---
2019-10-21T19:59:02.7074791Z at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
2019-10-21T19:59:02.7074976Z at Microsoft.VisualStudio.Services.Common.TaskCancellationExtensions.EnforceCancellation[TResult](Task`1 task, CancellationToken cancellationToken, Func`1 makeMessage, String file, String member, Int32 line)
2019-10-21T19:59:02.7075133Z at Microsoft.VisualStudio.Services.BlobStore.WebApi.DedupStoreHttpClient.<>c__DisplayClass56_0.<<GetRedirectResponseAsync>b__0>d.MoveNext()
2019-10-21T19:59:02.7075213Z --- End of stack trace from previous location where exception was thrown ---
2019-10-21T19:59:02.7075312Z at Microsoft.VisualStudio.Services.Content.Common.AsyncHttpRetryHelper`1.InvokeAsync(CancellationToken cancellationToken)
因此,有没有可用于添加到我们的防火墙策略的用于存储Azure Pipeline工件的终结点列表,我们是否通常必须排除 *。blob.core.windows.net 还是有其他不同的方法?
不幸的是,Microsoft文档仅提供了与通用的Azure DevOps建立连接所需的Urls列表,而不提供与工件存储的连接。
答案 0 :(得分:1)
是否有用于存储Azure的终结点的任何列表 可以添加到我们的防火墙策略中的管道工件。
当然可以。我们将这些数据存储在相应区域的Azure数据中心中。
在此article中下载Json文件,该文件列出了不同区域的IP地址范围。但是,这是您需要注意的一件事。为了安全起见,我们定期更新这些IP地址范围。(还要定期将其发布给用户)
如果选择此方法来实现所需的目标,则需要定期下载JSON文件,然后在访问规则中进行必要的更新:
[!重要] Azure服务的IP地址范围可以更改,并且 更新每周发布一次。定期下载JSON文件,然后 在您的访问规则中进行必要的更新。如果您的情况涉及 在Azure虚拟网络中配置网络安全组规则 若要访问Azure容器注册表,请使用AzureContainerRegistry 而是服务标签。
请参阅此文档:link。
但是,如果您认为此方法对您和您的团队不方便。另一个独特的方法是您现在正在使用的方法:允许使用通配符*.blob.core.windows.net
访问所有Azure blob存储帐户。