IT/AWS

S3 보안 모범 사례

Jflip 2022. 8. 17. 21:01
728x90

안녕하세요!

 

S3 사용하시다보면 퍼블릭 액세스 Block이 왜 기본 설정일까 하는 생각이 들 수가 있습니다.

테스트에서야 보안에 민감하게 세팅하지 않아도 된다지만 왜 S3 보안도 신경써야 할까요?

 

왜냐하면 S3를 통해서 민감 정보가 유출될 우려가 있고, 혹은 악의적인 유저가 악용시 다운로드에 의해서

비용이 대량으로 발생할 수 있기 때문입니다.

 

  1. 조직 수준에서의 공개 S3 버킷 차단
     
  2. 최소 권한 액세스 구현
    - 리소스에 특정 권한만을 설정하고, 정책 등의 세팅을 확인합니다.
    와일드 카드(*)를 사용하는 버킷은 누구나 액세스 가능합니다.

    참조 링크 - 버킷 정책 사용 : https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html
     
  3. 모든 자격 증명 기반 정책이 와일드 카드를 사용하지 않는지 확인합니다.
    - 가급적이면 리소스에 대한 부주의한 액세스를 방지하기 위해서 IAM 사용자 및 역할에 할당된 정책을

    S3:*가 아니라 S3:GetObject / S3: PutObject와 같은 작업을 특정하거나 혹은
    S3 특정 작업에 대한 IP를 지정할 수 있습니다.
    - 예: IpAddress: { aws:SourceIP: “10.10.10.10”}


    또한 읽기, 쓰기, 삭제 액세스를 분할을 고려하여,
    S3에 데이터를 생성하고 쓰지만 객체를 읽거나 삭제할 필요가 없는 사용자 / 서비스에 대해서 쓰기 액세스만 허용하도록 합니다.

     
  4. S3의 데이터 암호화
    클라이언트 측 및 서버측 옵션을 포함하여 S3 데이터 암호화를 가능케 하는 옵션 4가지가 있습니다.
    서버측 암호화는 AWS 데이터 센터의 디스크에 데이터를 쓸 때 객체 수준의 데이터 암호화가 가능하고,
    사용자가 액세스시 암호를 해독합니다.

    - SSE-S3 : 관리형 암호화 키를 이용한 서버측 암호화
    - SSE-KMS : AWS KMS에 저장된 고객 마스터 키를 사용한 서버측 암호화
    - SSE-C :고객 제공키를 이용한 서버측 암호화
    - 클라이언트 측 암호화 : AWS KMS에 저장된 CMK를 사용하거나 애플리케이션 내에 저장한 마스터키를 사용할 수 있음.
     
  5. S3 버전 관리 및 객체 잠금을 통해서 실수로 삭제되지 않도록 S3 데이터 보호
    - S3 버전 관리를 통해서 동일 버킷에서 여러 버전의 객체를 보관하여 실수로 삭제 혹은 덮어쓸 경우 데이터를 복구할 수 있습니다.
           (* 다만, 해당 기능에 대한 관련 비용은 발생할 수 있습니다.)
     
  6. CloudTrail 및 액세스 로깅을 통한 S3 로깅 활성화
    - s3 콘솔 호출 및 s3 api call, api 호출을 포함한 데이터 캡처가 가능합니다.
      5번의 s3 버전 관리와 마찬가지로, 대량의 데이터의 활동적인 S3 버킷의 경우 해당 내용을 활성화할 경우, 
      CloudTrail 비용이 발생할 수 있기 때문에 보안이 필요한 중요한 데이터가 있는 s3 버킷에만 추가 로깅을 활성화 하도록 합니다.
     
  7. S3에서 데이터 백업
    교차 리전 복제(CRR)를 사용하면 원격 AWS 리전간 데이터를 복제하여 필요에 따라 다른 버킷간 객체를 비동기식으로 자동 복사할 수 있습니다. 중요한 백업데이터 혹은 민감 데이터를 저장하는 경우 CRR을 고려할 수 있습니다.
     
  8. Security Hub 및 CloudWatch Logs를 통한 S3 모니터링
    Security Hub를 통해서 보안 상태를 확인하고 보안 업계 표준 및 모범 데이터를 확인하는데 도움이 됩니다.
    AWS 기초 보안 모범 사례 표준(AWS Foundational Security Best Practices standard)는 AWS 계정 및 서비스, 지원되는 타사 파트너 제품의 데이터를 수집하고 분석하여 다음과 같은 내용들을 탐지하는 기능을 합니다.

IAM.1 : IAM 정책은 전체 "*" 관리 권한을 허용해서는 안 됩니다.

S3.1 : 퍼블릭 액세스 차단 설정이 활성화되어야 합니다.

S3.2 : S3 버킷이 퍼블릭 읽기 액세스를 금지 해야 합니다.

S3.3 : S3 버킷이 퍼블릭 쓰기 액세스를 금지해야 합니다.

S3.4 : S3 버킷에 서버 측 암호화가 활성화 되어 있어야 합니다.

S3.5 : S3 버킷은 보안 소켓 계층을 사용하도록 요청해야 합니다 .

S3.6 : 버킷 정책에서 다른 AWS 계정에 부여된 Amazon S3 권한은 제한되어야 합니다.

S3.8: S3 퍼블릭 액세스 차단 설정은 버킷 수준에서 활성화되어야 합니다.

 

자세한 내용은 다음의 링크를 통해서 확인 가능합니다.

 

Amazon S3에 대한 보안 모범 사례
         : https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html
Amazon S3의 데이터 보안을 위한 상위 10가지 보안 모범 사례
         : https://aws.amazon.com/ko/blogs/security/top-10-security-best-practices-for-securing-data-in-amazon-s3/
버킷 정책 : https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html (
ACL을 통한 액세스 관리 : https://docs.aws.amazon.com/AmazonS3/latest/userguide/acls.html

728x90
반응형