지난번 SST 프레임워크를 이용해 Next.js 애플리케이션을 배포하고 나서 갑자기 비용 100불이 부과됐다. 확인해보니 Support 서비스에서 발생한 비용으로 유료 플랜인 Business 플랜으로 설정이 되어 있었다. 나는 SST 를 이용해 배포를 진행했을 뿐 Support 서비스를 직접적으로 설정 한 적이 없는데 어떻게 된 것일까?
SST는 애플리케이션 배포를 간편하게 만들어주는 도구로, AWS 리소스 생성을 자동화 해주는 프레임워크이다. 이 과정에서 SST는 필요한 작업을 수행하기 위해 AWS IAM 권한이 필요한데 대부분 편리함을 위해 AdministratorAccess
권한을 부여한다.
요게 바로 문제인데, AdministratorAccess 는 AWS 서비스 전체에 대한 액세스 권한을 제공하는 권한으로 모든 작업을 허용하므로 매우매우 주의해서 사용해야 한다는 점이다!
SST 는 기본적으로 무료를 지양하지만, 찾아보니 뭐든지 그대로 신뢰할 수는 없다고 한다. 배포를 처리하는 과정에서 왜인지는 모르지만 유료 플랜을 구독하거나 예기치 못한 일이 발생할 수 있으니 오로지 이 프레임워크만 믿고 진행했다가는 나같은 상황이 발생할 수 있다😂
우선 급한 불부터 끄기 위해 Support Business 플랜을 무료 플랜으로 수정하려고 하니 30일 동안은 변경이 안된다고 나와있어서 AWS 팀에 메일을 보냈다. 나는 SST 로 배포를 했고 Support 설정을 직접적으로 한 적이 없는데 유료 플랜으로 구독이 되었다, 나한테는 과한 플랜이라 구독 취소를 바로 원한다는 내용으로 작성했다.
늦은 밤에 메일을 보내고 잤는데, 그 다음날 일어나보니 회신이 와있었다. 다행히 무료 플랜으로 바로 변경해 주었고, 비용도 사용한 만큼만 내도록 조치를 취해줬다. 추가로 언제 어떤 권한으로 Support 플랜에 등록했는지 로그를 받아올 수 있냐는 문의를 남겼는데, SST 가 생성한 IAM 사용자가 Business plan 에 가입한 내역이 확인됐다. 역시나 SST 에 부여한 권한으로 Support 유료 서비스를 사용한 것이었다..!!
SST 문서에 따르면 기본적으로 AdministratorAccess 권한을 사용하도록 안내되어 있다. 하지만 이 권한은 AWS 서비스 전체에 대한 액세스 권한을 부여하므로 최소한의 권한만 주고 배포를 진행하는 것이 안전하다는 내용도 포함되어 있다.
결국 왜 SST 가 Support Business 플랜을 구독했는지에 대해서는 문서를 아무리 뒤져도 관련 내용을 찾아볼 수는 없었는데, 이번 경험을 통해 배운게 있다면 편리함을 위해 사용한 도구이지만 때로는 도구에 의존하기 전에 내부적으로 무엇을 처리하는지 이해하는 과정이 필요하다는 걸 배웠다. 편리함을 주는 대신 내가 모르는 깊숙한 부분까지 알아서 처리해주기 때문에 오히려 더 신중을 가해서 사용해야 하는 게 맞는거 같다.
권한과 관련된 SST 문서 살펴보기
https://sst.dev/docs/iam-credentials/