Ограничьте права на развертывание Azure из Azure DevOps - PullRequest
0 голосов
/ 03 мая 2019

Я хочу заблокировать доступ к инструментам куду, например https: //.scm.azurewebsites.net/DebugConsole для набора IP-адресов, которые использует Azure Devops. Я вошел в AzureDevops -> Настройки организации -> Обзор и вижу, что Azure Devops моей организации содержится, например, в. Западная Европа Я скачал список IP-адресов центров обработки данных Azure отсюда: https://www.microsoft.com/en-nz/download/details.aspx?id=41653

Я перешел на Сервис приложений -> Сетевой блейд -> Настроить ограничения доступа и загрузил список IP-адресов, например, Западная Европа для .scm.azurewebsites.net.

Насколько я понимаю, агенты AzureDevops работают из региона, указанного в настройках организации, поэтому, если я введу эти IP-адреса, они смогут нормально обращаться к инструментам kudu, но вместо этого я получаю следующую ошибку:

Failed to deploy web package to App Service.
Error Code: ERROR_COULD_NOT_CONNECT_TO_REMOTESVC
More Information: Could not connect to the remote computer ("<myappservice>.scm.azurewebsites.net") using the specified process ("Web Management Service") because the server did not respond. Make sure that the process ("Web Management Service") is started on the remote computer.  Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_COULD_NOT_CONNECT_TO_REMOTESVC.
Error: The remote server returned an error: (403) Forbidden.

Если я удаляю IP-адреса, он развертывается без проблем. Как ограничить доступ к развертыванию в Azure Devops

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Я нашел обходной путь для этого, просто выполнив шаг перед развертыванием, который отключает ограничения IP-адресов для развертываний на .scm.azurewebsites.net, а затем сразу же включает их.Шаг предварительного развертывания:

Write-Host ("Removing IP Address restrictions from scm site")
$apiVersion = ((Get-AzureRmResourceProvider -ProviderNamespace Microsoft.Web).ResourceTypes | Where-Object ResourceTypeName -eq sites).apiVersions[0]
$webAppConfig = (Get-AzureRmResource -ResourceType Microsoft.Web/sites/config -ResourceName $webSiteName -ResourceGroupName $resourceGroupName -apiVersion $apiVersion)
$webAppConfig.Properties.scmIpSecurityRestrictions = @()
Set-AzureRmResource -ResourceId $webAppConfig.ResourceId -Properties $webAppConfig.Properties -apiVersion $apiVersion -Force
Write-Host ("Removed IP Address restrictions from scm site")

Шаг PostDeploy: Write-Host («Брандмауэр Cloudflare включен - Ограничения запуска IP-адреса»)

function AddRules($rulesToAdd) {
    $rules = @()
    foreach ($ruleToAdd in $rulesToAdd) 
    {
        $rule = [PSCustomObject] @{
            ipAddress = $ruleToAdd.ipAddress; 
            action = $ruleToAdd.action; 
            priority = $ruleToAdd.priority; 
            name = $ruleToAdd.name; 
            description = $ruleToAdd.description 
            }
        $rules += $rule
    }
return $rules
}

# Access to the main site should only be allowed through cloudflare
[PSCustomObject] $websiteRulesToAdd = 
    @{ipAddress="173.245.48.0/20";action="Allow";priority="100";name="CF01";description="CloudFlare Ip Address"},`
# etc

# Access to the development site should be locked down to developers (NB: These rules are temporarily disabled on deployment)
[PSCustomObject] $scmRulesToAdd = 
    @{ipAddress="X.X.X.X/32";action="Allow";priority="100";name="developer1";description="Developer IP Address"}
# etc

$apiVersion = ((Get-AzureRmResourceProvider -ProviderNamespace Microsoft.Web).ResourceTypes | Where-Object ResourceTypeName -eq sites).apiVersions[0]
$webAppConfig = (Get-AzureRmResource -ResourceType Microsoft.Web/sites/config -ResourceName $webSiteName -ResourceGroupName $resourceGroupName -apiVersion $apiVersion)
Write-Host ("Writing IP Address restrictions")
$webAppConfig.Properties.ipSecurityRestrictions = AddRules -rulesToAdd $websiteRulesToAdd
$webAppConfig.Properties.scmIpSecurityRestrictions = AddRules -rulesToAdd $scmRulesToAdd
Set-AzureRmResource -ResourceId $webAppConfig.ResourceId -Properties $webAppConfig.Properties -apiVersion $apiVersion -Force
Write-Host ("Completed IP Address restrictions")

Это выполняется AzureDevops как часть развертывания, поэтомудоступ контролируется.Надеюсь это кому-нибудь пригодится

0 голосов
/ 03 мая 2019

Как следует из комментария Дэниела Манна, вы должны использовать Azure RBAC, чтобы ограничить возможности субъекта службы Azure Devops в Azure.Если вы разрешите ему управлять только определенной службой приложений - он сможет это сделать только.

https://docs.microsoft.com/en-us/azure/role-based-access-control/role-assignments-portal

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...