사설 토토 CloudFormation을 사용하여 보안 그룹을 생성할 때 모든 아웃바운드 규칙을 거부하도록 설정하는 것을 우연히 발견하여 이 문서를 작성하게 되었습니다
배경/목적
- VPC 엔드포인트에 대한 보안 그룹 생성
- 인바운드 규칙은 사설 토토 Lambda에 할당된 보안 그룹의 HTTPS 통신만 허용
- 모든 아웃바운드 규칙 거부
예상되는 동작 및 실제 결과
모든 아웃바운드 규칙을 거부하고 싶어서 아래와 같이 SecurityGroupEgress를 지정하지 않고 보안 그룹을 생성했습니다
샘플보안그룹:유형:'사설 토토::EC2::SecurityGroup'속성:'443'대상 포트:'443'SourceSecurityGroupId: !Ref Lambda
아웃바운드 규칙을 지정하지 않았기 때문에 규칙이 비어 있을 것으로 예상하고 배포했습니다그런데 사설 토토 Management Console에서 생성된 보안 그룹을 확인해보니,결과는 제가 기대했던 것과 정반대였습니다 모든 것이 허용되도록 설정되었습니다구현 실수인 줄 알고 서둘러 코드를 살펴보니 SecurityGroupEgress가 지정되지 않은 것을 발견했습니다
원인 조사 중
원인은사설 토토 CloudFormation 공식 문서에 설명되어 있습니다
보안 그룹을 생성할 때 송신 규칙을 추가하지 않으면 모든 아웃바운드 IPv4 및 IPv6 트래픽을 허용하는 송신 규칙이 추가됩니다 그렇지 않으면 추가하지 않습니다 보안 그룹이 생성된 후 추가한 모든 송신 규칙을 제거하면 송신 규칙이 추가되지 않으므로 아웃바운드 트래픽이 허용되지 않습니다
간단히 말하면, 사설 토토 CloudFormation을 사용하여 보안 그룹을 생성할 때 아웃바운드 규칙을 설정하지 않으면 기본적으로 모든 트래픽을 허용하는 아웃바운드 규칙이 추가됩니다
해결책
또한 해결책사설 토토 CloudFormation 공식 문서에 설명되어 있습니다
기본 규칙 제거
VPC 보안 그룹을 지정하면 Amazon EC2는 모든 포트 및 IP 프로토콜의 송신 트래픽을 모든 위치로 허용하는 기본 송신 규칙을 생성합니다 기본 규칙은 하나 이상의 송신 규칙을 지정한 경우에만 제거됩니다 기본 규칙을 삭제하고 이그레스 트래픽을 localhost(127001/32)로만 제한하려면 다음 예시를 사용하세요
sgwithoutegress:EC2::보안그룹속성:127.0.0.1/32Ip프로토콜:"-1"VpcId: !Ref myVPC
하나 이상의 아웃바운드 규칙을 지정하면 기본 아웃바운드 규칙이 삭제되므로 로컬 호스트(127001/32)만 허용하는 아웃바운드 규칙을 설정하여 삭제할 수 있습니다localhost와의 통신만 허용하는 규칙을 추가하면 모든 외부 통신을 효과적으로 거부할 수 있습니다
마지막으로 다음을 지정하여 문제를 해결했습니다
샘플보안그룹:유형:'사설 토토::EC2::SecurityGroup'속성:'443'대상 포트:'443'SourceSecurityGroupId: !Ref 람다127.0.0.1/32Ip프로토콜:"-1"
배운 교훈
이 이벤트는 아웃바운드 규칙을 지정하지 않으면 비어 있을 것이라고 생각했기 때문에 발생했습니다새로운 일을 할 때 공식 문서를 주의 깊게 참고하고, 최소한 배포 결과를 확인하는 것이 중요하다는 것을 배웠습니다

