안녕하세요 커널 3기 박예슬입니다.
많은 동기들이 S3를 활용하는 것을 자주 보았는데요, 저 또한 S3를 사용해보며 이런저런 문제를 겪었습니다.
Amazon S3(Amazon Simple Storage Service)는 데이터를 안전하게 저장하고, 인터넷을 통해 접근하는 데에 편리하고 유용한 서비스지만, 보안 위험 요소를 동반할 수 있기 때문에 주의가 필요합니다.
이번 프로젝트에서 고민하고 공부하고 적용했던 보안 방식들에 대해 간략하게 소개해보고자 합니다.
만약 누구나 인터넷을 통해 S3 버킷에 접근할 수 있다면 다음과 같은 문제가 발생할 수도 있습니다.
만약 S3 버킷이 잘못 설정되어 누구나 접근할 수 있게 된다면, 외부 시스템에서 해당 데이터를 쉽게 가져가 사용할 수 있습니다. 누군가 파일을 대량으로 다운로드 하거나 스트리밍 하는 바람에 대량의 트래픽이 발생한다면, 비용 문제가 발생할 것입니다.
심지어는 데이터가 수정되거나 삭제될 수 있는 위험성도 안고 있습니다. 잘못된 접근 권한 설정으로 악성 코드나 불법 콘텐츠가 업로드 되고 사용될 수도 있다는 점에 주의해야 합니다.
S3에 저장된 데이터 중 일부는 반드시 제한적으로만 공개되어야 합니다. 중요한 정보들은 특히 공개나 유출 이슈가 심각한 법적 문제로 이어질 수 있습니다.
따라서 S3의 보안을 강화하고 적절한 접근 제어 방법을 사용하는 것이 중요합니다. S3에서는 보안을 위해 몇 가지 주요 접근 제어 방법을 사용하고 있습니다.
버킷 정책을 사용하면 각 버킷에 대해 누가 어떤 권한을 가지고 있는지 정의할 수 있습니다. 모든 사용자에게 버킷을 공개할 수도 있지만, 특정 IP 주소나 AWS 계정에 대해서만 접근을 허용할 수도 있습니다. 이를 통해 세밀한 권한 관리가 가능하며, 불필요한 접근을 차단할 수 있습니다.
IAM을 사용하면 사용자나 그룹에 대해 세부적인 권한을 설정할 수 있습니다. 예를 들어, 특정 사용자가 S3 버킷에 읽기 권한만 부여하거나, 특정 액션을 제한하는 등의 세부적인 권한 제어가 가능합니다. 이를 통해 누가 어떤 리소스를 어떻게 사용할 수 있을지 명확하게 규정할 수 있습니다.
S3 버킷에서 웹 애플리케이션과의 교차 출처 리소스 공유(CORS) 설정을 통해, 외부 사이트나 애플리케이션이 버킷에 접근하는 방식을 제어할 수 있습니다.
과거에는 ACL을 사용하여 객체의 접근 권한을 제어했지만, AWS는 현재 이 방법을 더 이상 권장하지 않으며, 대신 IAM 정책과 버킷 정책을 사용하도록 권장합니다.
S3 보안을 강화하려면 기본적인 접근 제어 외에도 다양한 추가적인 보안 기능을 활용할 필요가 있습니다. 다음은 S3 보안을 한층 더 강화하는 방법들입니다.
S3의 Block Public Access
기능은 실수로 버킷이나 객체가 공개되는 것을 방지합니다. 이 기능을 활성화하면, 버킷 정책이나 ACL을 통해 공개 접근 권한이 실수로 설정되는 것을 예방할 수 있습니다. 이를 통해 S3 버킷이 의도치 않게 외부에 노출되는 위험을 최소화할 수 있습니다.
IAM 역할을 사용하면, EC2 인스턴스가 액세스 키나 비밀 키 없이 S3에 안전하게 접근할 수 있습니다. 이 방식은 자격 증명 관리의 복잡성을 줄이고, 액세스 키가 유출된다거나 하는 보안 사고를 예방하는 데 효과적입니다.
Presigned URL은 특정 객체에 대해 제한된 시간 동안만 접근할 수 있도록 하는 방법입니다. 서버에서 해당 URL을 생성하여 클라이언트에게 전달하면, URL이 유출되어도 제한된 시간 동안만 유효하기 때문에 보안 위험을 최소화할 수 있습니다. 이 방법을 사용하면 객체의 직접적인 URL이 유출되는 일이 없습니다.
CloudFront를 사용하면 S3에 대한 직접적인 접근을 차단할 수 있습니다. CloudFront는 콘텐츠 배포 네트워크(CDN)로, 전 세계 여러 지역에 분산된 캐시 서버를 통해 데이터를 제공하므로 성능을 향상시킬 수 있습니다. 또한, CloudFront에서는 Signed URL 또는 Signed Cookies를 사용하여 더 세밀한 접근 제어가 가능합니다. SSL/TLS를 통해 데이터 전송 시 암호화가 가능하며, Geo Restriction과 WAF(Web Application Firewall) 통합을 통해 추가적인 보안도 제공합니다.