[AWS] Security Group 인바운드 정책에 보안 그룹 ID를 넣는이유
오늘 AWS Secworkshop을 실습하다가, VPC를 보니 Security Group에 EC2의 보안 그룹 ID가 들어가있는걸 보았다.
Security Group을 해당 서비스에 대한 Firewall으로 인식하고 있었기에 당연히 IP/Port가 들어가 있어야 될거 같았는데
EC2의 보안 그룹 ID가 들어가있어서 내용을 좀 찾아보았다!!
결론부터 말하면, 이는 특정 IP에 대해서 허용해주는 의미가 아니라
해당 Security Group을 통과해온 Resource에 대해서는 허용해주겠다는 의미이다!!
주인장도 처음에는 이해가 잘 되지 않아서 아래와 같이 나름의 가상의 시나리오를 세워보았다.
□ 가상 시나리오
A 서비스는 외부에 Open 되어 있는 웹서비스를 제공하고 있고, ELB를 통해 서비스가 이중화 되어 있다.
이런 경우, ELB와 EC2의 Security Group을 어떻게 지정해줘야 할까?
- ELB의 Security Group을 sg-elb로 지정한다.
□ Security Group 설정
1. ELB의 Security Group(sg-elb)
사용자가 웹서버에 접속할 경우, 사용자 → ELB → EC2 Flow로 트래픽이 흐르며, ELB에서 sg-elb Security Group으로 통과 된다.
Service | Port | Source IP | 설명 |
HTTPS | 443 | 0.0.0.0 | 외부에 허용되어 있기에 모든 IP에 대해서 허용한다. |
2. EC2 Security Group(sg-ec2)
ELB(사용자 Proxy) ↔ EC2는 Private IP로 통신하기에 Source IP에 ELB의 Private IP를 넣으면 된다.
하지만, ELB에는 정적인 IP가 아니라 B Class IP Range로 가변적인 IP를 가지고 있다.
물론, B Class IP Range를 Source IP로 넣으면 된다. 그렇지만 이럴 경우 해당 B Class의 다른 서비스도 EC2에 접속할 수 있다.
하지만, 과도하게 허용되어 있는 경우로 보안상 바람직한 방법은 아니다.
그렇다면 최적의 방법은 무엇일까? 이때 Seucurity Group에 보안 그룹 ID를 기재하는 방법이 있다.
Service | Port | Source IP | 설명 |
HTTPS 또는 HTTP | 443 또는 80 | sg-elb | sg-elg를 통과한 Host에 대해서만 허용한다. |
위와 같이 Security Group을 조정할 경우, EC2는 sg-elg를 통과해온 Host에 대해서만 접속을 허용한다.
즉, A 사용자는 ELB 접근하여 → sg_elb를 통과 하였고 → EC2에 접근할 때 → ELB의 sg_elb를 통과하였기에 EC2 접근이 허용된다.
1. ELB의 security group을 sg-elb로 지정한다. 2. ELB → EC2로 접근하기 위해서는 EC2 인바운드 security group에 ELB IP를 기재해야 한다. 3. ELB ↔ EC2는 Private IP를 가지고 통신하는데, 정확한 Private IP를 알 방법이 없다. - ELB에는 도메인 정보만 있고, nslookup해보면 다수의 IP를 반환하며 변경된다. 4. ELB의 Private IP는 Private IP Range 中 하나 이므로, Range를 EC2 인바운드 security group에 넣으면 된다. - 하지만 과도하게 허용되는 경우로 권장하는 방법은 아니다. - 해당 Range에 있는 다른 서비스가 EC2에 접근할 수 있다. 5. EC2의 인바운드 security group에 ELB의 security group sg-elb를 등록한다. - sg-elb를 사용하는 리소스를 통과한 호스트들은 EC2로 접근할 수 있다. ELB에서 sg_elb security group을 통과한 host 들은 EC2에 접근할 수 있다. 즉, 1. A 사용자가 ELB에 접속한다. 2. ELB의 sg-elb security group에서 허용 된다. 3. EC2 인바운드 security group에는 sg_elb가 등록되어 있다. 4. A 사용자는 ELB의 sg_elb를 통과하였기에 EC2에 접속할 수 있다. 즉, ELB의 seuciry group이 sg-elb이므로 EC2에 접근할 수 있다. ELB를 제외한 나머지 리소스는 모두 차단 |