S3에서의 데이터 보호는 전송 중(in Transit), 유휴 시(at Rest) 이렇게 크게 두 항목으로 나눌 수 있다.
전송 중의 데이터 보호
S3는 HTTPS를 통해 접근된다.
Amazon S3를 관리하기 위해 AWS 콘솔 서비스를 사용할 때는 SSL/TLS 보안 커넥션이 브라우저와 서비스 콘솔간에 유지된다. 이 커넥션 내에서의 모든 트래픽은 보호된다.
S3 API를 직접적이든 간접적이든 사용할 때 SSL/TLS 보안 커넥션이 클라이언트와 S3 종단간에 수립되고, 모든 HTTP 트래픽과 사용자 페이로드 트래픽은 보호되고있는 세션 내에 캡슐화된다.
유휴 시 데이터 보호
Amazon S3는 유휴 시 데이터 보호를 위한 보안 기능을 제공하고 있다.
Amazon S3 기능 | 설명 |
---|---|
Permissions | IAM 정책의 버킷 레벨 혹은 오브젝트 레벨에서의 사용 권한을 이용하여 인증되지 않은 액세스로부터 리소스를 보호하고 정보 유출, 데이터 무결성 손상, 삭제를 방지한다. |
Versioning | 기본적으로 버전 관리는 비활성화되어 있다. 버전 관리를 활성화하게 되면 변경하거나 삭제된 모든 신규 버전의 오브젝트들에 대해 필요할 경우 손상된 객체를 복원할 수 있다. |
Replication | S3는 오브젝트를 각 리전 내의 모든 가용영역에 복제를 한다. 복제는 시스템 장애의 경우에서도 데이터 및 서비스 가용성을 제공할 수 있다. 그러나 복사본이 저장되는 모든 가용영역에 걸쳐 변경 사항을 복제하기 때문에 우발적인 삭제나 데이터 손상에 관해서는 보호를 제공받지 못한다. S3는 standard redundancy와 reduced redundancy 옵션을 제공하며 이는 오브젝트의 내구성이 중요한가, 가격 절감이 더 중요한가에 따라 선택할 수 있는 옵션이다. |
Backup | S3는 자동 백업대신에 데이터 복제와 버전 관리를 지원한다. 그러나 필요하다면, 애플리케이션 레벨의 기술을 사용하여 S3에 저장된 데이터를 다른 리전 또는 on-premise 로 백업 할 수는 있다. |
Encryption-server side | 서버 사이드 암호화는 최종 사용자에게는 티가 나지 않는다. AWS는 각각의 오브젝트를 위해 고유한 암호화키를 생성한 다음에 AES-256을 사용해서 각각의 오브젝트를 암호화한다. 암호화키는 그런다음에 안전한 위치에 저장된 마스터키로 AES-256을 사용하여 스스로를 암호화 한다. 마스터키는 정기적으로 rotate 된다. |
Encryption-client side | 클라이언트 사이드 암호화는 자체 암호화를 생성하고 관리할 수 있다. 생성한 키는 AWS에 export 되지 않는다. 클라이언트 측 애플리케이션에서는 S3에 업로드하기 전이나 다운로드하고난 후에 데이터를 암호화 혹은 복호화한다.데이터는 오직 클라이언트만 알고있는 키와 알고리즘을 가지고 암호화되어 저장된다. 모든 암호화 알고리즘, 대칭키 또는 비대칭키를 암호화하는데 사용할 수 있고, AWS에서 S3 클라이언트 사이드 암호화 기능을 제공하는 Java SDK를 제공하기도 한다. |
위 글은 AWS_Security_Best_Practices의 문서를 바탕으로 작성되었습니다.
comments powered by Disqus