본문 바로가기
AWS

보안 그룹 중첩 시 유의 사항

by .ㅣㅁ 2024. 3. 14.

이전에 사내 ip가 변경되어 aws에 접속에 어려움을 겪었던 적이 있다. 그때 aws에 등록된 사내 ip 를 수정하기 위해 보안그룹을 확인한 순간 온갖 곳에 추가되어 있던 것을 보게 되었고, 그때 보안그룹을 정리하며 알게된 내용 등을 정리한다.

보안 그룹?

보안 그룹은 연결된 리소스에 도달하고 나갈 수 있는 트래픽을 제어합니다. 예를 들어 보안 그룹을 EC2 인스턴스와 연결하면 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어합니다.

AWS 사이트 에서 참고하였다. 간단하게 이해해보자면 네트워크 요청과 응답에 대한 규칙을 정한다고 생각하면 될 것 같다. 

경험상 ec2, RDS, ELB 등에 적용할 수 있었다.

보안 그룹의 중첩

보안그룹에는 타겟의 ip 목록을 등록할 수도 있고 다른 보안그룹을 지정할 수도 있다. 여기서 중첩의 의미는 두번째 경우를 지칭했다. 이것은 실제로 중첩이나 상속의 역할을 수행하는 것은 아니라고 한다. 

무엇을 주의해야하는가

내가 생각한 중첩된 보안 그룹의 동작은 아래와 같다.

유형 프로토콜 포트 소스 설명
HTTPS TCP 443 123.123.123.123/32 보안그룹 A
유형 프로토콜 포트 소스 설명
HTTPS TCP 443 보안그룹 A 보안그룹 B
HTTPS TCP 443 1.23.123.123/32 home

 

예를 들어 위와 같은 보안그룹 구성이 있다고 할 때 123.123.123.123 의 ip를 가진 ec2 인스턴스는 보안 그룹 B를 가진 RDS에 접근할 수 있을 것이라 생각했다. 왜냐하면 보안그룹 A에 해당 ec2의 ip가 부합하고 이를 보안그룹 B가 가지고 있으니 말이다. 이는 기대한 동작을 하지 못한다. 실제로는 해당 인스턴스가 보안그룹 A를 가지고 있거나, 보안그룹 B에 123.123.123.123/32 와 같이 ip가 등록되어 있어야 한다.

언제 사용할까?

그럼 이런 형태로 보안그룹을 언제 구성할까? 개인적으로는 회사의 보안 그룹을 보니 사내 ip를 필요한 곳에 직접 추가하여 사용하기에 이를 하나의 보안그룹으로 정리하여 필요한 곳에 추가하려고 했다.  좀 더 넓게 생각해본다면 현재 Elastic Beanstalk를 사용 중인데 여기에는 ELB 가 붙게 된다. 요청을 받는 ELB는 public subnet에 있고 WAS는 private subnet에 있다면 WAS의 보안그룹에 ELB의 공인/사설 ip 를 등록하는 것이 아닌 ELB에 추가한 보안그룹을 해당 WAS의 보안 그룹 내에 추가하면 된다. ELB 의 ip를 찾고 혹은 사설 ip 대역을 등록할 수는 있겠지만 subnet 내의 다른 인스턴스들이 원하지 않는 접근을 할 수 있기 때문이다.

참고

https://stackoverflow.com/questions/42871841/can-you-configure-aws-security-groups-to-have-sub-groups-or-nested-groups 

https://perfectacle.github.io/2018/08/30/aws-security-group-reference-another-security-group/#Security-Group%EC%97%90%EC%84%9C-%EB%8B%A4%EB%A5%B8-Security-Group%EC%9D%84-%EC%B0%B8%EC%A1%B0%ED%95%98%EB%8A%94-%EA%B2%BD%EC%9A%B0

댓글