보안그룹(Security Group)
동일한 기능과 보안 요구 사항을 갖는 서비스/리소스에 대해 동일한 보안 그룹을 연동시킬 수 있는데, 대표적인 예로 웹서버 클러스터를 생각해볼 수 있다. 보안 그룹은 VPC 내에 있는 다른 서브넷에 걸쳐서 확장 가능하다. 보안 그룹은 들어오고 나가는 트래픽에 대해 유효한 소스, 프로토콜, 포트를 위한 룰을 정의할 수 있다. 또 보안 그룹은 '상태 저장형 방화벽'이라고 하는데, 여기서 '상태 저장'이란 소스에서 데스티네이션으로 연결이 허용되면 반대의 경로 역시 허용된다는 의미다. 최소한 1개의 보안 그룹이 리소스 생성 단계에서 리소스에 어태치 돼야한다. 하나 이상의 보안 그룹이 리소스에 어태치되는 것도 가능하다. 보안 그룹의 룰은 언제든 변경할 수 있으며 변경되는 즉시 최신 상태가 바로 적용된다. 또 어넺든 보안 그룹을 리소스에서 디태치시킬 수 있다.
보안 그룹은 AWS에서 호스팅하는 리소스에서, 또는 해당 리소스로 들어오거나 나가는 요청을 제어한다. 인바운드 룰은 해당 룰에서 설정한 프로토콜과 포트를 이용해 소스 CIDR 대역에서 유입되는 네트워크 트래픽을 허용한다. 만약 VPC 내에서 호스팅하는 리소스에 대해서만 요청을 허용하고 싶다면 해당 소스들을 보안 그룹에 어태치시키기만 하면 된다. 아웃바운드 룰은 AWS에서 호스팅하는 리소스에서 만들어진 요청을 허용한다.
추가로 로드 밸런서 외에도 인바운드 룰을 위한 소스는 프로덕션 시나리오상에서는 모든 IP 주소와 포트에 대해 개방돼 있으면 안 된다. RDP/SSH같은 다른 포트에 대해서는 Jump Server/Bastion Host등을 통해만 액세스가 가능하도록 해야 한다. 보안 그룹 내에 있는 모든 룰은 어떤 트래픽이든 허용하기 전에 가능 여부를 확인하게 돼 있다.