Skip to content

Commit

Permalink
add: 보안 설계 내용 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
leehjhjhj committed Jun 16, 2024
1 parent 23b8168 commit 0d56720
Showing 1 changed file with 38 additions and 0 deletions.
38 changes: 38 additions & 0 deletions AWS/AWS 컨테이너 설계와 구축 철저 입문/chapter3.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,41 @@
- 내부 작업에 대한 작업 기록도 취득 가능
- 그런데 퍼블릭 서브넷임으로 좀 위험하다
- 대안으로 배스천서버도 프라이빗으로 넣고, Session manager나 요즘 나온 EC2 Instance connect endpoint 사용

## 보안 설계
- AWS의 보안은 공동 책임 모델
- 이미지에 대한 보안 대책
- ECR 이미지 스캔
- 푸시 시 스캔
- 수동 스캔
- Trivy를 이용한 취약점 스캔
- pip, yarn, npm등의 애플리케이션 종속성도 스캔 대상
- codebuild 워크플로 파일에 기입하는 것으로 쉽게 통합
- 즉, CICD 때 Trivy를 사용하고, ECR에 푸시 됐을 때 ECR 스캔을 진행한다.
- 그러나 이미지는 정적이기 때문에 Lambda를 활용해서 주기적으로 스캔을 돌린다.
- 이미지 설정 문제 대책: Dockle
- 또한 docker나 AWS에서 공식으로 인증된 신뢰할 수 있는 이미지를 사용
- Guardduty로 악성코드 탐지
- 평문 기밀: Secret manager, System Manager Paramater Store 사용
- secret manager는 각 정보(예 DB_USER: 1234)에 하나의 ARN이 생성되어, 해당 ARN을 ECS 태스크 정의 내에서 지정하면 된다.
- System Manager Paramater Store는 secure string을 사용해야 암호화가 된다.
- CICD 때 DCT를 활성화하면 서명된 기본 이미지의 변조 여부를 알 수 있다.
- 레지스트리에 대한 보안 대책
- 오래된 이미지는 수명주기 정책을 사용. 이 때 이미지 태그 덮어쓰기 금지하는 설정도 있다.
- 불충분한 인증, 인가 제한 대첵
- IAM 사용, 프라이빗 리포지토리 생성
- 리포지토리 정책에서 push는 CI인 코드빌드, pull은 ecs만 가능하게 바꾸면 수동 푸시를 막을 수 있다.
- 오케스트레이터에 대한 보안 대책
- 모든 ECS 태스크는 `awsvpc`라는 네트워크 모드가 선택
- 각 태스크에 고유한 ENI가 할당, 그 ENI에 프라이빗 IPv4주소가 할당
- 퍼블릭 IP주소를 태스크에 할당해 internet gateway로 퍼블릭 네트워크와 통신 가능
- WAF를 사용하면 되는데 ALB, API Gateway, Cloudfront만 가능
- 그래서 앞에 퍼블릭 서브넷의 ALB를 두고 WAF를 연결시키고, 보안그룹 설정으로 태스크는 ALB의 inbound만 허용한다.
- 또한 AWS Shield Standard를 무료로 사용할 수 있다.
- VPC -> 퍼블릭 네트워크 통신이 필요할 때(리전 서비스 접근한다거나) 그냥 태스크 ENI에 퍼블릭 IP주면 간편하긴 하다.
- 근데 이는 권장 사항이 아님으로 프라이빗 서브넷에 태스크를 두고 NAT 게이트웨이를 퍼블릭에 배치한다.
- NAT 게이트웨이도 퍼블릭 네트워크를 경유한다.
- 이를 원치 않으면 VPC 엔드포인트를 사용한다.
- 게이트웨이 엔드포인트, 인터페이스 엔드포인트 사용
- 인터페이스 엔드포인트는 시간 + 데이터 양에 따라 비용이 든다. 거기다가 고가용성 보장하려면 엔드포인트 별로 추가해야함
- 근데 그냥 NAT 게이트웨이 사용하면 다중 AZ해도 10만원이다. 이게 더 저렴함, 그리고 어차피 인터넷 서비스랑 통신하려면 NAT 게이트웨이를 이용해야 함

0 comments on commit 0d56720

Please sign in to comment.