본문 바로가기

전체 글251

[ELB WAF 이슈] ELB WAF 데이터 차단 트러블 슈팅 [이슈 상황]웹툰 관리자 페이지에 ELB를 붙인 후로, CSV 파일을 업로드하는 기능에서 계속 403 Error가 발생하고 있음- 현재 상황서버 : GCPELB : GCP ELBWAF : GCP WAF [이슈 파악]이전 상황과 다른 요소는 ELB를 붙인 것말고는 없으니, ELB 환경에 이상한 점이 없는지 체크하기로 하고, 아래와 같이 작업진행 - 작업 진행순서1. ELB 세팅 내용확인 -> 이상없음2. ELB Log 확인 -> 이상 발견함 - Log 내용내부 보안상 아래 내용만 표기하겠습니다httpRequest: {}statusDetails: "body_denied_by_security_policy"}  body_denied_by_security_policy 라는 키워드로 조사한 결과, 아래 내용을 찾았.. 2024. 5. 27.
[Base64 인코딩 이슈] CloudFront / S3 트러블 슈팅 (6) 이전에 이미지 서빙속도 개선을 위한 CloudFront / S3 프로젝트를 진행하며 겪었던 아래 이슈가 있었는데, 메모하는 걸 깜빡하여 이제 기술해놓는다! 내용은 아래와 같았다. [현 상황] - 보안에 중점을 둔 회차 컨텐츠 이미지 파일들은 url path를 암호화함과 동시에, Cloudfront 퍼블릭키를 사용한 signed url을 생성하여 호출하였음. 이를 위해 cloudfront 뒤에 있는 s3의 path를 암호화를 하게 되는데, 해당 데이터는 이진데이터 (binary-data)이기 때문에 안전하게 텍스트 형식으로 보내기 위해 base64를 진행하였다. [문제 상황] 전달받은 url을 통해 이미지를 조회하려고 할 때, url 중간중간에 공백이나 '/' 같은 것들이 껴 있어 정상적인 경로에 대한 조.. 2024. 3. 14.
헥사고날 + 멀티모듈 학습 (모듈간 의존성 약화) 시작하기에 앞서.. 멀티모듈은 무엇인지, 왜 써야 하는지에 대한 설명 및 환경을 구성하는 방법에 대해서는 아래 링크에 기재되었습니다 https://www.notion.so/5a7fbe5ab3554de7a40bd711604f1af5?pvs=4 헥사고날에 개념에 대한 설명은 아래 링크를 봐주시면 되겠습니다 https://www.notion.so/7611bad39bad4c3b9c5259ef989a2031?pvs=4 하단에는 멀티모듈 환경에서 서브 프로젝트간 의존성을 헥사고날의 특징인 의존성 역전법칙을 차용하여 낮춘 방식을 구현한 내용을 정리해두었습니다. 멀티모듈 + 헥사고날 방식 (의존성 약화) 프로젝트 생성 아래와 같이 멀티모듈 환경 세팅 Member ㄴ Modules ㄴ MemberDomain Post ㄴ.. 2024. 2. 4.
Lambda@Edge / CloudFront / S3 프로젝트 최종정리 (이미지 파일 관리 개선 프로젝트) 프로젝트가 모두 완료되었다. 그 내용을 추후에 참고하기 좋게 정리 차, 글을 올리게 되었다. 프로젝트를 진행하며 실제로 작업한 내용은 ★ 프로젝트 + 트러블 슈팅 ★ 에 올려두었다. 작업내용 GCP 서버 디스크에 존재하는 이미지 파일을 AWS S3로 이관 구성도 1. Cloudfront 구성을 의도하고 설계한 이유 기존 GCP 설계구조 상, 서버 Scale-Out의 어려움 기존 GCP설계구조상, 이미지를 저장하고 있는 Disk는 단일 서버에 종속적이였음. 이로 인해 추후 이용자가 증가하여 Scale-Out을 고려해야하는 상황이 왔을 때, 이를 시행하기에 까다로운 환경임 그리고, 이미지 조회 및 업로드에 서버 리소스가 온전히 사용되고 있음. 이를 다른 쪽으로 우회시키는 게 운영상 좋다고 판단이 되었음 ⇒ .. 2024. 2. 4.
[이미지 보안 이슈] pre_signed_url / CloudFront / S3 트러블 슈팅 (5) Signed Url & pre-signed url 초기 구상은 하나의 s3 버킷에 대해 Cloudfront url을 통해 get과 put을 모두 수행하는 방향으로 진행하였다. 이미지 업로드 방식은 Signed Url을 통해 업로드 하였다. 이를 위해 아래 이미지와 같이 Cloudfront와 연결된 S3의 정책을 s3:getobject와 s3:putobject 모두 가능하게 설정하였는데, 위 두 정책이 한 버킷에 포함됨으로써, get을 위해 발급된 Cloudfront url을 이용하여 put도 가능해져버리는 보안 이슈가 발생하였다. 즉, 사용자가 이미지 GET을 위해 응답해준 URL을 바탕으로, 임의로 다른 이미지를 PUT해버릴 수 있는 이미지 보안 이슈가 발생하는 거였다. 그래서 버킷정책에서 s3:put.. 2024. 1. 30.
[Cache 무효화] CloudFront / S3 트러블 슈팅 (4) 이슈 이미지를 등록하고 한번 Get 조회하여 Cloudfront에 Cache로 등록한 후, 해당 이미지를 수정한 후에 다시 조회할 경우 수정되기 전의 이미지가 이미 Cache되어 있기 때문에 변경된 이미지의 조회가 불가능하였다. 이는, 컨텐츠의 최신화를 즉각적으로 반영하지 못하는 것을 의미하기 때문에 해당 이슈를 해결하는 것이 필요하였다. 해결방안 아래와 같은 방법을 도출하였다. 1. Cloudfront의 무효화 탭에서 무효화가 필요할 때마다 무효화 생성진행 (Lambda@Edge를 통해 해당 과정을 자동화할 수 있음) 2. Cloudfront의 캐시 키 및 원본요청에서 쿼리 문자열 지정 처음에는 1번 사항으로 진행하는 게 편할 거라 생각하였으나, 다시 생각을 해보니 매 요청마다 무효화 생성을 진행하는.. 2024. 1. 11.