Динамически блокировать IP-адрес для облачной службы Azure - PullRequest
0 голосов
/ 09 октября 2018

У нас есть облачная служба Azure (классическая), которая является нашим веб-приложением.Как мы можем сказать службе блокировать определенные IP-адреса во всех случаях?

Я знаю, что мы можем блокировать, используя динамические ограничения IP (IIP 8+) (DIPR), если они установлены через файл web.config. Настройка ограничений динамического IP-адреса

2 проблемы, связанные с этим, заключаются в том, что 1) мы не можем добавить в список блокировки всегда из приложения и 2) даже если бы я мог заставить это работать, это толькобыть в этом экземпляре.

Нет ли способа заблокировать / IP-фильтр трафика с портала?И можно ли его установить из нашего облачного сервиса?

1 Ответ

0 голосов
/ 10 октября 2018

Нет ли способа заблокировать / IP-фильтр трафика с портала?И можно ли установить его из нашей облачной службы?

Каждый раз, когда запускается ваш экземпляр, он будет проверять конечные точки, которые были настроены для роли, и открывать необходимые порты в брандмауэре.В нашем коде мы просто отключим эти правила и создадим новые правила, ограниченные несколькими IP-адресами / диапазонами IP-адресов .

Ядром этого решения является *Класс 1009 *, который анализирует параметры из ServiceConfiguration.cscfg (который можно изменить во время развертывания приложения) и изменяет брандмауэр в каждом экземпляре.

Сначала необходимо установить пакет NuGet:

PM> Install-Package WindowsAzure.IPAddressRestriction

Если вы хотите связать IPAddressRestrictionManager со своим ServiceConfiguration, вам необходимо добавить следующие параметры к вашей роли:

enter image description here

Синтаксис настроек не слишком сложен для понимания:

IPAddressRestriction.Enabled = true или false

IPAddressRestriction.Settings = = или = - (разделитель между портами равен ";")

Наконец, вам нужно подключить все в вашем WebRole / WorkerRoler.cs

public class WebRole : RoleEntryPoint  
{
    private IPAddressRestrictionManager restrictionManager;

    public override bool OnStart()
    {
        RoleEnvironment.Changing += OnRoleEnvironmentChanging;
        ConfigureIPAddressRestrictions();
        return base.OnStart();
    }

    private void ConfigureIPAddressRestrictions()
    {
        if (restrictionManager == null)
            restrictionManager = new IPAddressRestrictionManager();

        restrictionManager.RemoveRestrictions();
        if (restrictionManager.IsEnabledInConfiguration())
            restrictionManager.ApplyFromConfiguration();
    }

    /// <summary>
    /// Force restart of the instance.
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    void OnRoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e)
    {
        if (e.Changes.Any(o => o is RoleEnvironmentChange))
            e.Cancel = true;
    }
}

Для получения более подробной информации вы можете обратиться к этой статье .

...