From 0d567203061f8ce39a2edd83f1f7be2eee9ffe23 Mon Sep 17 00:00:00 2001 From: leehjhjhj Date: Sun, 16 Jun 2024 10:54:43 +0900 Subject: [PATCH] =?UTF-8?q?add:=20=EB=B3=B4=EC=95=88=20=EC=84=A4=EA=B3=84?= =?UTF-8?q?=20=EB=82=B4=EC=9A=A9=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chapter3.md" | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git "a/AWS/AWS \354\273\250\355\205\214\354\235\264\353\204\210 \354\204\244\352\263\204\354\231\200 \352\265\254\354\266\225 \354\262\240\354\240\200 \354\236\205\353\254\270/chapter3.md" "b/AWS/AWS \354\273\250\355\205\214\354\235\264\353\204\210 \354\204\244\352\263\204\354\231\200 \352\265\254\354\266\225 \354\262\240\354\240\200 \354\236\205\353\254\270/chapter3.md" index 4f798ca..fdc079c 100644 --- "a/AWS/AWS \354\273\250\355\205\214\354\235\264\353\204\210 \354\204\244\352\263\204\354\231\200 \352\265\254\354\266\225 \354\262\240\354\240\200 \354\236\205\353\254\270/chapter3.md" +++ "b/AWS/AWS \354\273\250\355\205\214\354\235\264\353\204\210 \354\204\244\352\263\204\354\231\200 \352\265\254\354\266\225 \354\262\240\354\240\200 \354\236\205\353\254\270/chapter3.md" @@ -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 게이트웨이를 이용해야 함