iamkanguk.dev

[AWS + 트러블슈팅] S3 Access Denied + Access Key 노출로 인한 AWSCompromisedKeyQuarantineV2 해결 본문

AWS

[AWS + 트러블슈팅] S3 Access Denied + Access Key 노출로 인한 AWSCompromisedKeyQuarantineV2 해결

iamkanguk 2023. 12. 26. 00:10

프로젝트를 진행하면서 S3에 업로드 되어있던 이미지를 삭제하는 기능을 구현해야 했었다. 기능을 구현하고 테스트하는데 이유 불문의 이슈가 계속해서 발생하고 있었다. 참고로 AWS에 권한 설정은 전부 되어있던 상황이었고, 퍼블릭 엑세스도 허용되어 있는 상황이었다.

 

이슈는 간단하게 한마디로 정리하자면 이미지를 삭제하려고 하면 403 Access Denied 에러가 계속해서 발생하고 있었다.

 

진짜 어디가 잘못된지 이해가 안되어서 하루동안 계속 삽질을 했던 것 같다. 기분 좋은 크리스마스 이브에.....!!!!!!!!

 

어쨌든 지금부터 어떻게 이 이슈를 해결했는지 설명하려고 한다.

 

ENV 파일 노출

최근에 DND 10기 지원 + 이력서 작성을 위해 지금까지 작업했던 프로젝트를 정리하고 있는데 GitHub Repo를 전부 Public으로 변경하였는데 실수로 env 파일이 노출되는 대참사가 발생하였다.. env 파일에는 AWS Access key가 포함되어 있었다.

 

알고보니까 AWS에서 GitHub에 Public으로 Push가 되면 이를 감지해서 IAM 사용자 정책에 AWSCompromisedKeyQuarantineV2 정책을 자동으로 추가해주는 것이었다.

 

Access-Key의 노출로 예상치 못한 과금이 일어날 수 있기 때문에 이를 방지하고자 자동으로 추가되었다고 한다.

 

AWSCompromisedKeyQuarantineV2 정책에는 여러개의 기능을 막고 있는데 그 중 DeleteObject 기능이 막혀있는 것이었다. 그래서 이미지 삭제에서 이슈가 발생했던 것이다.

 

그럼 일단 왜 이슈가 발생했는지는 알게 되었다. 어떻게 해결했을까?

 

해결1: ENV 파일 노출 삭제

일단 여러분들.... gitignore가 잘 적용되었는지 항상 항상 꼭!!!!!!! 잘 확인합시다... 저는 사이드 프로젝트 레벨이라 DB나 다른곳에 중요한 정보는 1도 없어서 다행이지만.... 그래도 혹시 모르니 꼭꼭 확인합시다!!!

 

해결2: AWS Access-Key 재발급

Access-Key가 노출되었기 때문에 새로 발급받아야 한다. AWS 페이지에서 재발급을 받을 수 있기 때문에 재발급을 받고 ENV 파일을 업데이트 시키자!

 

해결3: AWSCompromisedKeyQuarantineV2 정책 삭제 + 점검

AWS 계정에 들어가서 확인해보면 해당 정책이 추가되어 있을 것이다. 위의 2단계를 거치고 문제가 없다면 해당 정책을 삭제해주도록 하자!

그다음에 이전에 등록했던 버킷 정책이 올바르게 되어있는지 다시한번 확인하자!

 

 

위의 3단계를 모두 마치면 정상적으로 기능이 작동하는 것을 확인할 수 있을 것이다!!


참고자료

 

- https://growth-coder.tistory.com/118

 

[AWS][Error] S3 버킷 정책에 DeleteObject를 허용해도 403 Access Denied 오류

S3에서 이미지를 업로드하기 위한 버킷을 만들었고 이 버킷에 이미지를 업로드, 조회, 삭제를 하기 위해서는 버킷 정책을 추가해줘야한다. https://growth-coder.tistory.com/114 [AWS] Amazon S3 개념 및 파일

growth-coder.tistory.com