ファイアウォールで保護された環境下でAzure DevOpsを利用する

# 概要
Azure DevOpsをファイアウォールやプロキシ環境下で利用すると、当然ファイアウォールを経由した通信が発生するためFWの許可リストにAzure DevOpsで発生する通信許可リストを追加しなければいけません。
発生する通信の調査にあたって公式ドキュメントを探すのに少し手間取ったのでメモとして記録します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1293404/d1298bc7-53a9-dfa7-0136-21bf89ef7007.png)




# 許可するドメインURL

許可するドメインURLの一覧は以下です。

```title
https://dev.azure.com
https://*.dev.azure.com
https://aex.dev.azure.com
https://aexprodea1.vsaex.visualstudio.com
https://*vstmrblob.vsassets.io
https://amp.azure.net
https://app.vssps.dev.azure.com
https://app.vssps.visualstudio.com
https://*.vsblob.visualstudio.com
https://*.vssps.visualstudio.com
https://*.vstmr.visualstudio.com
https://azure.microsoft.com
https://go.microsoft.com
https://graph.microsoft.com
https://login.microsoftonline.com
https://management.azure.com
https://management.core.windows.net
https://microsoft.com
https://microsoftonline.com
https://static2.sharepointonline.com
https://visualstudio.com
https://vsrm.dev.azure.com
https://vstsagentpackage.azureedge.net
https://*.windows.net
https://{organization_name}.visualstudio.com
https://{organization_name}.vsrm.visualstudio.com
https://{organization_name}.vstmr.visualstudio.com
https://{organization_name}.pkgs.visualstudio.com
https://{organization_name}.vssps.visualstudio.com

Azure DevOps uses content delivery network (CDN) to serve static content. The following URLs are part of that. 
https://cdn.vsassets.io
https://*.vsassets.io
https://*gallerycdn.vsassets.io
https://aadcdn.msauth.net
https://aadcdn.msftauth.net
https://amcdn.msftauth.net
https://azurecomcdn.azureedge.net

The following endpoints are used to authenticate Azure DevOps organizations using a Microsoft Account (MSA). 
These are only needed for Azure DevOps organizations backed by Microsoft Accounts (MSA). 
Azure DevOps organizations backed an Azure Active Directory tenant does not need the following URLs.
https://live.com 
https://login.live.com 

The following URLs are required if youa re migrating from Azure DevOps server to the cloud service using our data migration tool.
https://dataimport.dev.azure.com
```

# Azure Pipelinesを利用したCICDで許可が必要なURL

### Azure Pipelinesでセルフホステッドlinuxエージェントを使用している場合。

```
https://{organization_name}.pkgs.visualstudio.com	    
https://{organization_name}.visualstudio.com	        
https://{organization_name}.vsblob.visualstudio.com	    
https://{organization_name}.vsrm.visualstudio.com	    
https://{organization_name}.vssps.visualstudio.com	    
https://{organization_name}.vstmr.visualstudio.com	    
https://*.blob.core.windows.net	                        
https://*.dev.azure.com	                                
https://*.vsassets.io	                                
https://*.vsblob.visualstudio.com	                    
https://*.vssps.visualstudio.com	                    
https://*.vstmr.visualstudio.com	                    
https://app.vssps.visualstudio.com	                    
https://dev.azure.com	                                
https://login.microsoftonline.com	                    
https://management.core.windows.net	                    
https://vstsagentpackage.azureedge.net	                
```
* IPv4 の範囲
13.107.6.0/24
13.107.9.0/24
13.107.42.0/24
13.107.43.0/24

* IPv6 の範囲
2620:1ec:4::/48
2620:1ec:a92::/48
2620:1ec:21::/48
2620:1ec:22::/48



### Azure PipelinesでセルフホステッドWindowsエージェントを使用している場合。

```
https://{organization_name}.pkgs.visualstudio.com	
https://{organization_name}.visualstudio.com	   
https://{organization_name}.vsblob.visualstudio.com
https://{organization_name}.vsrm.visualstudio.com	
https://{organization_name}.vssps.visualstudio.com
https://{organization_name}.vstmr.visualstudio.com
https://*.blob.core.windows.net	Azure Artifacts
https://*.dev.azure.com	                           
https://*.vsassets.io	                           
https://*.vsblob.visualstudio.com	               
https://*.vssps.visualstudio.com	               
https://*.vstmr.visualstudio.com	               
https://app.vssps.visualstudio.com	               
https://dev.azure.com	                           
https://login.microsoftonline.com	               
https://management.core.windows.net	               
https://vstsagentpackage.azureedge.net	           
```

* IPv4 の範囲
13.107.6.0/24
13.107.9.0/24
13.107.42.0/24
13.107.43.0/24

* IPv6 の範囲
2620:1ec:4::/48
2620:1ec:a92::/48
2620:1ec:21::/48
2620:1ec:22::/48


# その他の注意点
VMSSセルフホステッドエージェントを利用してCICD実行環境を構築する場合はPipeline実行時にビルド環境をVMSSにインストールする必要が出てくるため、各種モジュールインストールのためのURLも各々の環境に合わせてFWの許可リストに追加しておく必要があるので注意が必要です。














# 参考ドキュメント
[Domain URLs to allow](https://learn.microsoft.com/en-us/azure/devops/organizations/security/allow-list-ip-url?view=azure-devops&tabs=IP-V4#domain-urls-to-allow)
[Self-hosted Linux agents](https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/v2-linux?view=azure-devops#im-running-a-firewall-and-my-code-is-in-azure-repos-what-urls-does-the-agent-need-to-communicate-with)
[Self-hosted Windows agents](https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows?view=azure-devops#im-running-a-firewall-and-my-code-is-in-azure-repos-what-urls-does-the-agent-need-to-communicate-with)