Рейтинг:11

Какой безопасный и удобный способ предоставить доступ к веб-приложению на Amazon EC2 только нескольким пользователям?

флаг cn

Ситуация

У нас есть веб-приложение, размещенное на Amazon EC2. Он предназначен для использования только несколькими пользователями в компании.

Как мы справляемся с этим

  • Мы делимся (эластичным) IP-адресом экземпляра с пользователями.
  • Мы добавляем IP-адрес каждого пользователя в группу безопасности экземпляра по мере необходимости.

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

Ради этого вопроса предположим, что у нас есть всего 5 пользователей в компании, которым нужен этот доступ. IP-адреса Пользователя-1 и Пользователя-2 уже добавлены в группу безопасности.

Проблемы

  1. Пользователь-3 обращается к IP-адресу напрямую, но не может получить к нему доступ, поскольку IP-адрес пользователя не добавлен в группу безопасности.
  2. Если Пользователь-1 или Пользователь-2 перезапустят свой Интернет, их IP-адрес, скорее всего, изменится (динамический IP-адрес, предоставленный интернет-провайдером), и новый IP-адрес должен быть добавлен в группу безопасности (а старый должен быть отозван для избежать доступа посторонних).

Другие варианты, которые я рассматриваю

  1. Предоставьте доступ только к своему офисному VPN и попросите всех пользователей подключаться через него.
  2. (Очень громоздко для пользователя) Попросите пользователей войти в консоль управления AWS, перейти в сервис EC2, перейти в раздел «Группы безопасности» и добавить свои IP-адреса вручную (у пользователей уже есть пользователи AWS IAM и соответствующие разрешения для выполнения этого) .
  3. Создайте скрипт, добавляющий текущий IP-адрес пользователя в группу безопасности (используя AWS CLI/SDK) — звучит очень опасно и неуместно, поскольку нам придется включать в скрипт чьи-то учетные данные API.
barbecue avatar
флаг br
Что за веб-приложение? Реализовать базовую HTTP-аутентификацию для самых популярных веб-серверов очень просто.
m01010011 avatar
флаг cn
Это приложение React (с внутренним API, написанным с использованием Flask).Пользователи уже используют систему единого входа OneLogin. Итак, я пытаюсь интегрировать это веб-приложение с этим.
Рейтинг:29
флаг id
MLu

Вариант 4 - перестать контролировать доступ через группы безопасности и вместо этого реализовать какой-нибудь приличный механизм аутентификации.

например поставить Балансировщик нагрузки приложений перед веб-приложением и настройте ALB так, чтобы он требовал Когнито-аутентификация. Только аутентифицированные пользователи смогут пройти через ALB к вашему веб-приложению — проблема решена. Cognito может иметь локальных пользователей или может использоваться вместе с Azure AD или, если вы используете Office365 в своей организации. Это достаточно прозрачный способ, не требующий никаких изменений в приложении.

В качестве альтернативы, если ваше веб-приложение поддерживает это, вы должны настроить его так, чтобы оно требовало аутентификации SAML для любого пользовательского каталога, который использует ваша организация — Office365, G-Suite и т. д.

Надеюсь, это поможет :)

m01010011 avatar
флаг cn
Я изучу Cognito и посмотрю, как он интегрируется с системой единого входа OneLogin.
Рейтинг:6
флаг um

Вариант 5 — прекратить управление группами безопасности (по сути, брандмауэрами на основе IP) и использовать клиентские сертификаты TLS.

Если вы используете современные системы управления пользователями, такие как Azure AD или LDAP, у вас уже есть подходящий инструмент для выпуска и распространения сертификатов. Вы настроите частный ЦС и настроите HTTP-сервер (Nginx, Apache2 или AWS ALB) для аутентификации по сертификатам. Тот, кто без сертификата, или с недействительным сертификатом (в том числе просроченным) через HTTP-сервер не пройдет. Это требует нуль изменить на само веб-приложение, и вы даже можете отказаться от любой аутентификации в приложении, поскольку сертификаты могут служить этой цели в дополнение к контролю доступа.

Один бонус в том, что это работает где угодно — будь то AWS, Azure или ваша локальная инфраструктура. Вы даже можете повторно использовать тот же набор учетных данных и конфигурации (за исключением AWS ALB).

m01010011 avatar
флаг cn
Я не знаю, какую систему управления пользователями они используют. Если это уместно, они используют единый вход OneLogin для сохранения своих учетных данных. Я никогда не думал, что сертификаты можно использовать в качестве механизма аутентификации. Я обязательно попробую это (так как мне не нужно ничего менять в приложении).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.