什麼是安全且用戶友好的方式來僅向少數用戶提供對 Amazon EC2 上的 Web 應用程式的存取權?

什麼是安全且用戶友好的方式來僅向少數用戶提供對 Amazon EC2 上的 Web 應用程式的存取權?

情況

我們有一個託管在 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 憑證。

答案1

選項 4 - 停止透過安全群組控制訪問,而是實施一些適當的身份驗證機制。

例如放一個應用程式負載平衡器在 Web 應用程式前面並配置 ALB 以要求認知身份驗證。只有經過身份驗證的使用者才能透過 ALB 存取您的 Web 應用程式 - 問題已解決。 Cognito 可以擁有本機用戶,或者可以與您的 Azure AD 一起使用,或者如果您在組織中使用 Office365。這是一種非常透明的方式,不需要對應用程式進行任何更改。

或者,如果您的 Web 應用程式支援它,您應該將其配置為要求針對您的組織正在使用的任何使用者目錄(Office365、G-Suite 等)進行 SAML 驗證。

希望有幫助:)

答案2

選項 5 - 停止管理安全群組(本質上是基於 IP 的防火牆)並使用 TLS 用戶端憑證。

如果您使用的是 Azure AD 或 LDAP 等現代使用者管理系統,則您已經擁有合適的工具來頒發和分發憑證。您將設定私有 CA 並設定 HTTP 伺服器(Nginx、Apache2 或 AWS ALB)以透過憑證進行驗證。沒有憑證或憑證無效(包括過期的憑證)的人將無法通過HTTP伺服器。這需要更改為 Web 應用程式本身,您甚至可以放棄應用程式中的任何身份驗證,因為除了存取控制之外,憑證還可以實現此目的。

一個優點是這很有效到處- 無論是 AWS、Azure 還是您的本地基礎架構。您甚至可以重複使用完全相同的憑證和配置堆疊(AWS ALB 除外)。

相關內容