AWS_SAA_준비(33)

Tyun_Record·2023년 8월 15일
0

AWS SAA 준비

목록 보기
41/48

Amazon S3 - Object Encryption

  • S3 버킷 내 객체를 암호화하는 방법은 4가지
  • Server-Side Encryption (SSE)
  • 서버 측 암호화 (SSE-E3)
    • AWS에 의해 서버 측에서 암호화 됨
    • AES-256 보안 유형으로 암호화 이루어짐
    • 헤더는 "x-amz-server-side-encryption":"AES256"으로 설정해서 SSE-S3 매커니즘으로 객체를 암호화하도록 S3에 요청해야 함

  • KMS 키를 사용하여 암호화 키 관리 (SSE-KMS)
    • KMS로 사용자 자신의 키를 직접 관리하는 방식
    • KMS 내에서 직접 키를 생성하고 CloudTrail을 사용해서 사용량 감사 가능
    • 누군가 KMS에서 키를 사용하면 CloudTrail에서 기록 확인 가능
    • 헤더는 "x-amz-server-side-encryption":"aws:kms"로 지정하면 서버에서 객체를 암호화
    • s3 버킷에서 파일을 읽으려면 객체 자체에 대한 액세스뿐만 아니라 KMS 키에 대한 액세스도 필요
    • 처리량이 매우 높은 S3 버킷이 있고 모든 파일이 KMS 키로 암호화 되어있으면 스로틀링 등의 오류가 발생할 수 있음

  • 고객이 제공하는 키를 사용 (SSE-C)
    • AWS 외부에서 키 관리
    • 제공된 암호화 키는 Amazon S3에 저장되지 않고 사용 후 폐기
    • Amazon S3로 키를 전송하기 때문에 HTTPS를 사용해야하고 요청을 전송할 때마다 HTTP 헤더에 키를 포함하여 전달해야 함
  • Client-Side Encryption
    • 클라이언트 측에서 모든 것을 암호화한 다음 Amazon S3에 업로드
    • 데이터를 Amazon S3로 보내기 전 클라이언트가 직접 암호화
    • 암호화한 데이터는 S3에서 다시 가져올 수 있음
    • 데이터 복호화는 S3 외부의 클라이언트에서 수행됨
    • 즉, 클라이언트가 전적으로 키와 암호화 주기를 관리
  • 전송 중 암호화 ( Encryption in transit, SSL/TLS )
    • Amazon S3 버킷 두 개의 엔드포인트
      • HTTP Endpoint - non encrypted
      • HTTPS Endpoint - encryption in flight

실습은 Udemy 강의 참조!!

Amazon S3 - Default Encryption VS Bucket POlicies

  • 왼쪽 정책은 SSE-S3를 강제로 적용
    • 헤더가 AES256과 같지 않으면 API 호출을 거부하도록 구성
  • 오른쪽 정책은 암호화되지 않은 객체만 전무 강제로 적용
    • 버킷 정책임

CORS

  • 교차 오리진 리소스 공유
  • 교차 출처 리소스 공유(CORS)는 한 도메인에 로드된 클라이언트 웹 애플리케이션이 다른 도메인에 있는 리소스와 상호 작용할 수 있도록 고안된 방식
  • Origin = scheme (protocol) + host (domain) + port
  • 웹 브라우저 기반 보안 메커니즘으로 메인 오리진을 방문하는 동안 다른 오리진에 대한 요청을 허용하거나 거부
  • 다른 오리진에서 한 S3 버킷에 들어 있는 검색된 이미지, 자산, 파일을 요청할 수 있게 해줌
  • 엑세스 제어 허용 오리진
    • 웹 브라우저가 한 웹사이트를 방문하는 동안 요청 체계의 일부로 다른 웹사이트에 요청을 보내야 할 때 다른 오리진이 CORS 헤더를 사용해서 요청을 허용하지 않는 한 해당 요청은 이행되지 않음
  • 작동 방식
  • 클라이언트가 S3 버킷에서 교차 오리진 요청을 하면 정확한 CORS 헤더를 활성화해야 함
    • 해당 과정을 빠르게 하려면 특정 오리진 허용 또는 *를 붙여 모든 오리진을 허용

Amazon S3 - MFA Delete

  • Multi-Factor Authentication
  • 추가 보호 기능이며 특정 객체 버전의 영구 삭제를 방지하는 역할
  • 사용자가 장치에서 코드를 생성하도록 강제함
  • Google Authenticator 또는 MFA Hardware Device에서 생성
  • MFA는 코드를 생성하는 작업 전에 Amazon S3에 해당 코드를 삽입해야함
  • MFA가 필요한 순간
    • 객체 버전을 영구적으로 삭제할 때
    • 버킷에서 버저닝을 중단할 때
  • MFA가 필요없는 순간
    • 버저닝 활성화
    • 삭제된 버전 나열
  • MFA Delete 사용하려면 버킷에서 버저닝 활성화가 우선!!
  • 루트 계정만 활성화/비활성화 할 수 있음

S3 Access Logs

  • 감사 목적으로 S3 버킷에 대한 모든 액세스를 기록 가능
  • 어떤 계정에서든 S3로 보낸 모든 요청은 승인 또는 거부 여부 상관없이 다른 S3 버킷에 파일로 기록됨
    • 해당 데이터는 Amazon Athena 같은 데이터 분석 도구로 분석 가능
  • 대상 로깅 버킷은 같은 AWS 리전에 있어야함
  • 엑세스 로그에서 로깅 버킷을 모니터링하는 버킷과 동일하게 설정 금지!!

S3 - Pre-Signed URLs

  • S3 미리 서명된 URL은 S3 버킷에서 제한된 시간 동안 일부 작업을 수행할 수 있도록 권한을 부여해 만든 임시 URL
  • S3 콘솔, CLI, SDK를 사용하여 생성할 수 있는 URL
  • URL 만료 기한 (해당 시간 안에 버킷에 있는 파일 다운로드 가능)
    • S3 콘솔 : 최대 12시간
    • AWS CLI : 최대 168시간
  • 미리 서명된 URL을 생성할 때 URL을 받는 사용자는 URL을 생성한 사용자의 GET 또는 PUT에 대한 권한을 상속
  • 사용 사례
    • 로그인한 사용자만 S3 버킷에서 프리미엄 비디오 다운로드 허용
    • 사용자 목록이 계속 변하는 경우 URL을 동적으로 생성하여 파일 다운로드 허용
    • 버킷을 비공개로 유지하면서 일시적으로 사용자가 S3 버킷의 특정한 위치에 파일을 업로드하도록 허용

S3 Glacier Vault Lock

  • WORM ( Write Once Read Many ) 모델을 적용하기 위함
  • 객체를 가져와서 S3 Glacier 볼트에 넣은 다음 수정 및 삭제할 수 없도록 잠그는 것
  • Glacier 위에 볼트 잠금 정책을 생성한 후 편집을 통해 정책을 잠금
    • 누구도 변경하거나 삭제할 수 없음
    • 규정 준수와 데이터 보존 같은 법률적인 사항에 아주 유용함!!

S3 Object Lock ( versioning must be enabled )

  • S3 객체 잠금을 활성화하려면 버저닝 활성화해야함
  • WORM 모델 적용 가능
  • 버킷 전체 잠금이 아닌 객체 각각에 잠금을 적용할 수 있음
  • 규정 준수 모드 ( Compliance mode )
    • S3 Glacier 볼트 잠금과 매우 유사
    • 사용자를 포함한 그 누구도 객체 버전을 덮어쓰거나 삭제할 수 없음
    • 보존 기간 단축 등 모드 자체 변경도 불가능
  • 거버넌스 보존 모드 ( Governance mode )
    • 관리자와 같은 일부 사용자는 IAM을 통해 부여받은 특별 권한으로 보존 기간을 변경하거나 객체를 바로 삭제할 수 있음
  • 법적 보존 ( Legal Hold )
    • 객체 또는 객체 버전을 무기한 덮어쓰거나 삭제할 수 없도록 방지하고, 수동으로 삭제할 수 있는 기능만을 제공
    • 법적 보존을 설정하면 S3 버킷 내 모든 객체를 무기한으로 보호
    • s3:PutObjectLegalHold IAM 권한을 가진 사용자는 어떤 객체에든 법적 보존을 설정하거나 제거할 수 있음

S3 Access Points

  • S3 버킷의 보안 관리를 간소화해줌
  • Each Access Point has :
    • DNS 이름을 갖게되어 사용자가 엑세스 포인트에 접속할 수 있게해줌
    • 엑세스 포인트가 Internet Origin or VPC origin에 연결되도록 할 수 있음
    • 엑세스 포인트 정책을 부여하여 보안 관리를 스케일링할 수 있음

S3 Object Lambda

  • S3 버킷이 있을 때 호출자 애플리케이션이 객체를 받기 직전에 그 객체를 수정하려는 경우 사용
  • S3 버킷 하나로 액세스 포인트와 객체 람다를 만들어서 원하는 대로 데이터를 수정할 수 있음

  • 활용 사례
    • 분석기나 비프로딕션 환경을 위한 PII 데이터, 즉 개인식별정보를 삭제하는 경우
    • 데이터 형식을 XML에서 JSON으로 변환하는 경우
    • 즉석에서 이미지 크기를 조정하거나 워터마크를 추가하는 경우 등

0개의 댓글