从 Azure Devops Hosted Agents 访问私有存储帐户

Accessing a private storage account from Azure Devops Hosted Agents

我正在尝试访问 azure blob 存储 帐户以从我的 pipeliens 运行 azure devops hosted agent. 我们还不能将 azure devops 服务标签与 azure devops 托管代理一起使用

而且我想知道是否有一个智能解决方案可以从我的托管代理访问我的 blob 存储,而无需将它打开到所有 internet。

提前谢谢大家

根据您的要求,您需要使用 Microsoft-hosted 代理访问私人存储帐户。

据我所知,在设置防火墙时,Azure 存储帐户目前不支持服务标记。

为了满足您的要求,您可以使用脚本获取当前 Microsoft-hosted 代理 IP,并使用 Azure CLI 或 Azure PowerShell 将其添加到 Azure 存储帐户防火墙白名单。

例如:

steps:
- task: AzurePowerShell@5
  displayName: 'Azure PowerShell script: Set Rule'
  inputs:
    azureSubscription: kevin0215
    ScriptType: InlineScript
    Inline: |
     $IP= Invoke-RestMethod http://ipinfo.io/json | Select -exp ip
     
     $IP
     
     Add-AzStorageAccountNetworkRule -ResourceGroupName "ResourceGroup" -AccountName "kevin0204" -IPAddressOrRange "$IP"
     
     
     
    preferredAzurePowerShellVersion: ' 3.1.0'

- task: AzureFileCopy@4
  displayName: 'AzureBlob File Copy'
  inputs:
    SourcePath: test
    azureSubscription: kevin0322
    Destination: AzureBlob
    storage: test
    ContainerName: 1


- task: AzurePowerShell@5
  displayName: 'Azure PowerShell script: Remove Rule'
  inputs:
    azureSubscription: kevin0215
    ScriptType: InlineScript
    Inline: |
     $IP= Invoke-RestMethod http://ipinfo.io/json | Select -exp ip
     
     $IP
     
     Remove-AzStorageAccountNetworkRule -ResourceGroupName "ResourceGroup" -AccountName "kevin0204" -IPAddressOrRange "$IP"
     
     
    preferredAzurePowerShellVersion: ' 3.1.0'

解释:

您可以在上传文件前将该IP加入防火墙白名单。上传后,您可以删除此IP。

注意::当前的 Azure 存储帐户有一个已知的限制。请参阅此文档:Limitations of Azure Storage Account IP network rules.

当你的Azure Devops Service组织和Azure Storage Account在同一个region时,会通过私有ip访问。这可能会导致间歇性访问问题。