
상황
Amazon EC2에서 호스팅되는 웹 앱이 있습니다. 회사 내 소수의 사용자만 사용하도록 고안되었습니다.
우리가 이 문제를 어떻게 처리하고 있는지
- 인스턴스의 (탄력적) IP 주소를 사용자와 공유합니다.
- 필요할 때 각 사용자의 IP 주소를 인스턴스의 보안 그룹에 추가합니다.
내가 말할 때필요할 때마다, 내 말은 웹 포털에 오류 페이지가 표시된다고 불평하는 사용자의 이메일을 의미합니다. 그들은 보안 그룹에 IP를 포함시키는 이 단계가 필요하다는 사실을 잊었습니다. 그리고 나는 그들을 비난하지 않습니다. 그들은 최종 사용자입니다.
이 질문을 위해 회사에 이 액세스 권한이 필요한 총 5명의 사용자가 있다고 가정해 보겠습니다. User-1과 User-2의 IP 주소가 이미 보안 그룹에 추가되었습니다.
문제
- User-3은 해당 IP 주소로 직접 이동하지만 사용자의 IP 주소가 보안 그룹에 추가되지 않았기 때문에 액세스할 수 없습니다.
- User-1 또는 User-2가 인터넷을 다시 시작하면 해당 IP 주소가 변경될 가능성이 높으며(ISP에서 제공하는 동적 IP) 새 IP 주소를 보안 그룹에 추가해야 합니다(그리고 이전 IP 주소는 보안 그룹에서 취소되어야 합니다). 다른 사람의 접근을 피하십시오).
내가 고려하고 있는 다른 옵션
- 사무실 VPN에만 액세스를 제공하고 모든 사용자에게 이를 통해 연결하도록 요청하세요.
- (사용자에게는 매우 번거로움) 사용자에게 AWS 관리 콘솔에 로그인하고 EC2 서비스로 이동한 후 보안 그룹 섹션으로 이동하여 IP 주소를 수동으로 추가하도록 요청합니다. (사용자는 이미 AWS IAM 사용자와 이를 수행할 수 있는 적절한 권한을 가지고 있습니다.) .
- 사용자의 현재 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 제외)을 재사용할 수도 있습니다.