Amazon EC2의 웹 앱에 대한 액세스를 소수의 사용자에게만 제공하는 안전하고 사용자 친화적인 방법은 무엇입니까?

Amazon EC2의 웹 앱에 대한 액세스를 소수의 사용자에게만 제공하는 안전하고 사용자 친화적인 방법은 무엇입니까?

상황

Amazon EC2에서 호스팅되는 웹 앱이 있습니다. 회사 내 소수의 사용자만 사용하도록 고안되었습니다.

우리가 이 문제를 어떻게 처리하고 있는지

  • 인스턴스의 (탄력적) IP 주소를 사용자와 공유합니다.
  • 필요할 때 각 사용자의 IP 주소를 인스턴스의 보안 그룹에 추가합니다.

내가 말할 때필요할 때마다, 내 말은 웹 포털에 오류 페이지가 표시된다고 불평하는 사용자의 이메일을 의미합니다. 그들은 보안 그룹에 IP를 포함시키는 이 단계가 필요하다는 사실을 잊었습니다. 그리고 나는 그들을 비난하지 않습니다. 그들은 최종 사용자입니다.

이 질문을 위해 회사에 이 액세스 권한이 필요한 총 5명의 사용자가 있다고 가정해 보겠습니다. User-1과 User-2의 IP 주소가 이미 보안 그룹에 추가되었습니다.

문제

  1. User-3은 해당 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 - 보안 그룹을 통한 액세스 제어를 중단하고 대신 적절한 인증 메커니즘을 구현합니다.

예를 들어애플리케이션 로드 밸런서웹 앱 앞에 다음을 요구하도록 ALB를 구성합니다.코그니토 인증. 인증된 사용자만 ALB를 통해 웹 앱으로 이동할 수 있습니다. 문제가 해결되었습니다. Cognito는 로컬 사용자를 가질 수도 있고, Azure AD와 함께 사용할 수도 있고, 조직에서 Office365를 사용하는 경우에도 사용할 수 있습니다. 이는 앱을 변경할 필요가 없는 매우 투명한 방법입니다.

또는 웹 앱이 이를 지원하는 경우 조직에서 사용하는 모든 사용자 디렉터리(Office365, G-Suite 등)에 대해 SAML 인증을 요구하도록 구성해야 합니다.

도움이 되었기를 바랍니다 :)

답변2

옵션 5 - 보안 그룹(기본적으로 IP 기반 방화벽) 관리를 중지하고 TLS 클라이언트 인증서를 사용합니다.

Azure AD 또는 LDAP와 같은 최신 사용자 관리 시스템을 사용하는 경우 인증서를 발급하고 배포하는 데 적합한 도구가 이미 있습니다. 사설 CA를 설정하고 인증서로 인증하도록 HTTP 서버(Nginx, Apache2 또는 AWS ALB)를 구성합니다. 인증서가 없거나 유효하지 않은 인증서(만료된 인증서 포함)를 가진 사람은 누구나 HTTP 서버를 통과할 수 없습니다. 이를 위해서는웹 앱 자체로 변경하면 인증서가 액세스 제어 외에도 해당 목적을 수행할 수 있으므로 앱에서 모든 인증을 삭제할 수도 있습니다.

한 가지 보너스 포인트는 이것이 작동한다는 것입니다어디에나- AWS, Azure 또는 온프레미스 인프라가 될 수 있습니다. 완전히 동일한 자격 증명 및 구성 스택(AWS ALB 제외)을 재사용할 수도 있습니다.

관련 정보