什么是安全且用户友好的方式来仅向少数用户提供对 Amazon EC2 上的 Web 应用程序的访问?

m01*_*011 11 security web-applications amazon-ec2 amazon-web-services security-groups

情况

我们有一个托管在 Amazon EC2 上的 Web 应用程序。它仅供公司中的少数用户使用。

我们如何处理这个问题

  • 我们与用户共享实例的(弹性)IP 地址。
  • 我们根据需要将每个用户的 IP 地址添加到实例的安全组中。

当我说需要时,我指的是用户抱怨门户网站显示错误页面的电子邮件。他们忘记了将 IP 包含在安全组中这一步骤是必需的(我不怪他们;他们是最终用户)。

为了回答这个问题,我们假设一家公司总共有 5 位用户需要此访问权限。User-1和User-2的IP地址已添加到安全组中。

问题

  1. User-3 直接访问该 IP 地址,但无法访问该 IP 地址,因为该用户的 IP 地址尚未添加到安全组。
  2. 如果 User-1 或 User-2 重新启动互联网,他们的 IP 地址可能会发生变化(ISP 提供的动态 IP),并且新的 IP 地址必须添加到安全组中(并且旧的 IP 地址必须被撤销才能生效)。避免他人访问)。

我正在考虑的其他选择

  1. 仅提供对其办公室 VPN 的访问,并要求所有用户通过它进行连接。
  2. (对于用户来说非常麻烦)要求用户登录AWS管理控制台,进入EC2服务,进入安全组部分并手动添加他们的IP地址(用户已经拥有AWS IAM用户和适当的权限来执行此操作) 。
  3. 创建一个将用户当前 IP 添加到安全组的脚本(使用 AWS CLI / SDK) - 听起来非常危险且不合适,因为我们必须在脚本中包含某人的 API 凭证。

MLu*_*MLu 29

选项 4 - 停止通过安全组控制访问,而是实施一些合适的身份验证机制。

例如,将应用程序负载均衡器放在 Web 应用程序前面,并将 ALB 配置为需要Cognito 身份验证。只有经过身份验证的用户才能通过 ALB 访问您的 Web 应用程序 - 问题已解决。Cognito 可以拥有本地用户,或者可以与您的 Azure AD 一起使用,或者如果您在组织中使用 Office365。这是一种非常透明的方式,不需要对应用程序进行任何更改。

或者,如果您的 Web 应用程序支持它,您应该将其配置为要求针对您的组织正在使用的任何用户目录(Office365、G-Suite 等)进行 SAML 身份验证。

希望有帮助:)


iBu*_*Bug 6

选项 5 - 停止管理安全组(本质上是基于 IP 的防火墙)并使用 TLS 客户端证书。

如果您使用的是 Azure AD 或 LDAP 等现代用户管理系统,则您已经拥有合适的工具来颁发和分发证书。您将设置私有 CA 并配置 HTTP 服务器(Nginx、Apache2 或 AWS ALB)以通过证书进行身份验证。没有证书或者证书无效(包括过期的证书)的人将无法通过HTTP服务器。这需要对 Web 应用程序本身进行更改,您甚至可以放弃应用程序中的任何身份验证,因为除了访问控制之外,证书还可以实现此目的。

一个好处是它适用于任何地方- 无论是 AWS、Azure 还是您的本地基础设施。您甚至可以重复使用完全相同的凭证和配置堆栈(AWS ALB 除外)。