일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 리스코프치환원칙
- subnet
- TypeScript
- jest
- TDD
- VPC
- forbetterme
- mock객체
- 테스트코드
- docker commands
- JavaScript
- 라우팅테이블
- IPv4
- docker
- 의존관계역전원칙
- jest.fn
- nestjs
- axios-mock-adaptor
- 도커
- axios mock
- javascript unit test
- AWS
- Unit Test
- parameter group
- 인터넷게이트웨이
- 단위테스트
- 서브넷
- mock함수
- 미라클모닝
- test code
- Today
- Total
My Dream Being Visualized
[ AWS ] ACL 및 보안그룹 비교, 생성 및 적용 본문
※ 개인 공부를 위한 공간입니다. 틀린 부분 지적해주시면 감사하겠습니다 (_ _)
[AWS 설명]
AWS는 VPC를 위해 보안을 늘리고 모니터링 할 수 있는 기능들을 제공한다.
- 보안그룹(Security groups)
- ACL(Network Access Control Lists)
- Flow logs
- Traffic mirroring
ACL이란?
ACL(Network access control list, 네트워크 엑세스 제어 목록)은 VPC를 위한 하나 이상의 서브넷에서 들어오고 나가는 트래픽을 제어하기 위한 방화벽(firewall) 역할을 하는 추가적인 보안 계층이다. VPC에 보안그룹(security groups)과 비슷한 추가적인 보안 계층을 추가하기 위해서 ACL을 설정할 수 있다.
네트워크 ACLs는 연결된 서브넷을 위한 서브넷 단(level)에서 inbound(들어오는) 및 outbound(나가는) 트래픽 둘 다 제어하는 방화벽(firewall) 역할을 한다.
ACL은 라우팅 테이블을 지나 서브넷으로 들어가고 나가는(inbound & outbound) 트래픽을 제어한다!
보안그룹(Security Group)이란?
보안그룹은 인스턴스를 위해 들어오고(inbound) 나가는(outbound) 트래픽을 제어해주는 가상 방화벽(firewall) 역할을 한다. VPC내 인스턴스를 설치했을 때, 인스턴스에 5개의 보안그룹을 할당할 수 있다. 보안그룹은 서브넷 단이 아닌, 인스턴스 단에서 역할을 한다. 그래서, VPC내 서브넷 안에 있는 각 인스턴스는 각기 다른 보안그룹에 할당될 수 있다.
Amazon EC2 API를 활용 혹은 cli(command line) tool을 활용하여 인스턴스를 시작할 때 보안그룹을 명시해주지 않으면, 인스턴스는 VPC에 대한 default 보안그룹에 자동 할당된다. Amazon EC2 콘솔을 활용하여 인스턴스를 시작할 경우, 해당 인스턴스에 대한 새로운 보안그룹을 생성할 수 있다.
각 보안그룹에 대하여, 인스턴스들에 대한 inbound 트래픽을 제어할 수 있는 규칙(rules) 및 outbound 트래픽을 제어하는 각 규칙들을 더할 수도 있다.
보안그룹은 인스턴스에서 들어가고 나가는(inbound & outbound) 트래픽을 제어한다!
보안그룹과 ACL 비교
보안그룹 | 네트워크 ACL |
인스턴스 단에서 실행 | 서브넷 단에서 실행 |
허용(allow) 규칙만 지원 | 허용(allow) 및 거부(deny) 규칙 지원 |
스테이트풀(stateful): 어떤 규칙과도 관계없이, 반환 트래픽이 자동적으로 허용된다. | 스테이트레스(stateless): 반환 트래픽이 특정 규칙에 의해서 허용된다. |
트래픽을 허용할 것인가에 대한 결정 전 모든 규칙을 평가한다. | 트래픽을 허용할 것인가에 대해 결정할 때 가장 낮은 번호의 규칙부터 시작하여 순서대로 규칙들을 수행한다. |
인스턴스를 시작할 때 보안그룹을 명시하거나 나중에 인스턴스와 보안그룹을 연결할 때에만 인스턴스에 적용된다. | 연결된 서브넷 내 모든 인스턴스에 자동적으로 적용된다. (그리하여, 보안그룹이 너무 관대할 경우, 추가적인 방화벽을 제공한다.) |
보안그룹 -> 인스턴스 보호
ACL -> 서브넷 보호 -> 인스턴스 보호스테이트풀과 스테이트레스는 다음에..
해당 그림은, 보안그룹과 네트워크 ACLs이 적용된 레어이를 보여준다.
예를들어, 인터넷 게이트웨이로부터 오는 트래픽은 라우팅테이블 내 라우트를 거쳐 해당 서브넷에 라우팅된다.
서브넷과 연결된 네트워크 ACL의 규칙들은 서브넷에 어떤 트래픽을 허용할지 제어한다. (파란색)
인스턴스와 연결된 보안그룹의 규칙들은 인스턴스에 어떤 트래픽을 허용할지 제어한다. (회색)
오직 보안그룹을 활용하여 인스턴스를 안전하게 할 수 있지만, 추가적인 방화벽으로 네트워크 ACLs을 추가할 수 있다.
보안그룹 생성
보안그룹 생성에는, 특정 서비스가 생성이 될 때 혹은 그 이후에 설정이 가능하다.
그리하여, 이후 진행예정인 RDS생성 혹은 EC2 생성 시, 보안그룹을 생성 혹은 추가가 가능하기 때문에 이후에 추가하도록 하겠다.
이번 편에서는 개념만 잡고 가는 걸로!
ACL 생성
네트워크 ACL은 default로 VPC가 생성되었을 때 생성된 ACL이 있기 때문에 굳이 수정할 필요는 없다. (additional secure layer를 두고 싶지 않다면 말이다!)
기본적으로 설정된 규칙 번호를 보면,
100번(IPv4), 101번(IPv6) 규칙을 제외한 모든 *(IPv4), *(IPv6) 트래픽은 모두 제외시킨다는 뜻이다.
모두를 열면서 모두를 제외한다는 게 이상하긴 하지만, 예시로 만들어 두고 이렇게 쓰면 된다~는 것 같다.
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/VPC_Scenario1.html#nacl-rules-scenario-1
위 주소로 들어가게 되면, 단일 퍼블릭 서브넷이 있는 VPC에 권장되는 네트워크 ACL 규칙이라고 명시되어 있다.
혹은, https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/VPC_Scenario2.html#nacl-rules-scenario-2
해당 주소로 들어가게 되면, 퍼블릭 및 프라이빗 서브넷이 있는 VPC(NAT)에 권장되는 네트워크 ACL 규칙이 명시되어 있다.
하지만 현재는, 보안그룹만으로도 웬만한 보안셋팅은 가능하다고 판단하여 기본 셋팅을 활용할 것이고, 이름만 바꿔주면 된다!
설명이 너무 잘 되어 있어서, 따로 주석을 많이 달지 않았다!
이제 몇개 남지 않았다!
우리 모두 공부 화이팅ㅎㅎㅎ
https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html#VPC_Security_Comparison
'Programming > Infrastructure' 카테고리의 다른 글
[ AWS ] RDS(Relational Database Service) 생성 및 적용 (0) | 2021.11.21 |
---|---|
[ AWS ] 라우팅테이블(Route Table) 생성 및 라우팅 (0) | 2021.11.15 |
[ AWS ] 인터넷게이트웨이(Internet Gateway) 생성 및 라우팅 (2) | 2021.11.09 |
[ AWS ] Subnet 생성 및 라우팅 (0) | 2021.11.09 |
[ AWS ] VPC 생성하기 (0) | 2021.11.07 |