VPC 통제 3요소
- 네트워크 인터페이스의 사용
- 보안그룹
- 네트워크 ACL
- 라우팅 테이블
접근제어 (보안그룹과 NACL)
접근 제어는 컴퓨팅 서비스를 보호하는 장치이다. 온프레미스에서는 방화벽으로 사용하는 것이다.
접근제어 방식비교
방화벽의 접근제어 방식을 알아보자
Blacklist | Whitelist | |
기본 정책 | 모든 트래픽 허용 / 블랙 리스트만 차단 Deny Rule1 Deny Rule2 All Allow |
모든 트래픽 차단 / 화이트 리스트만 허용 Allow Rule1 Allow Rule2 All Deny |
일반적으로는 모든 트래픽을 기본 허용하는 블랙 방식은 관리자가 차단 리스트를 모두 알아야 하는 단점이 있어 화이트 방식으로 사용하는게 좋다. 다만 뭐든 정답은 없고 상황에 맞게 하는 것이 최선이다. 정말 필요한 트래픽만 명확하게 허용하고자 한다면 보안쪽에서는 오히려 블랙리스트 방식이 안전할 것이다.
또한 결합방식(허용/거부 정책을 혼용)은 규칙 번호가 중요한데, 1번부터 차례로 확인하기 때문에 적용순서에 따라서 허용 범위가 달라질 수 있으니 조심해야한다.
SG보안그룹 | NACL | |
결합(통제)대상 | ENI로 들어오거나 나가는 트래픽 접근 제어 | 서브넷을 지나는 트래픽 접근 제어 |
허용방식 | 화이트리스트 방식 (허용만) | 결합 방식(규칙번호가 중요하다) 최하단은 모두 차단(화이트 기반) * 참고로 블랙 기반으로 변경하고 싶으면 최하단 모두 차단 위에 모두 허용을 두면 된다. |
특징 | - VPC에 속한다. - ENI에 결합하며, ENI를 변경할 수 있다. - ENI에 연결되지 않아도 존재는 가능하다. |
- VPC에 속한다. - 서브넷에 결합하며, 서브넷을 변경할 수 있다. - 서브넷에 연결되지 않아도 존재가 가능하다. - 서브넷은 반드시 하나의 NACL을 가져야한다.(연결을 해지하면 기본 NACL로 연결된다. 반드시 1개만 NACL로 가질 수 있다.) - 서브넷 생성시에는 무조건 기본 NACL과 연결되니, 변경을 원하면 생성하고 변경해야한다. |
다중연결성 | 1:N 연결성 - 1개 SG를 여러 ENI에 연결할 수 있다. 역할마다 SG를 구분 생성하고 서비스 역할에 따라 관련 SG를 연결한다. N:1 연결성 - 여러 SG를 한개의 ENI에 연결할 수 있다. 서비스 하나에 여러 역할이 필요할 때 유용하다. |
1:N |
항목 | Source/Destination/protocol/port range SG는 ENI의 트래픽을 관리하기 때문에 Inbound의 destination과 outbound의 source는 모두 ENI이다. 따라서 inbound/outbound항목을 나눠서 관리한다. |
규칙번호 / 유형 / protocol/ port range / source / 허용-거부 |
stateful(상태 저장) 접근자의 source IP/Port를 저장함. inbound만 허용해주면 outbound는 규칙이 없어도 자동으로 허용해줌. |
stateless(상태 비저장) 접근자의 source IP/port를 저장하지 않음 inbound와 outbound를 허용해주어야 통신이 가능함. 문제는 통신시 동적포트를 사용하기 때문에 포트정보를 명확하게 지정할 수 없고 범위로 해야함. |
AWS SG의 특이한 기능
AWS는 SG 규칙 관리 효율을 높이고자 source와 destination에 SG명을 지정할 수 있도록 했다.
Outbound 규칙 대상의 SG : 해당 SG를 사용하는 컴퓨팅 서비스로 접속 허용
Inbound 규칙 대상의 SG : 해당 SG를 사용하는 컴퓨팅 서비스의 접속 허용
Outbound 예시
sg-1234 / TCP / 80 : sg-1234를 사용하는 모든 컴퓨팅 서비스로 가는 접속 허용
Inbound 예시
sg-4321 / TCP / 80 : sg-4321을 사용하는 모든 컴퓨팅 서비스의 접근 허용
다만 이 특징으로 인해 의도치 않은 인스턴스의 접속을 허용하게 된다는 것을 반드시 주의해야 한다.