Tyun_Record.log
로그인
Tyun_Record.log
로그인
AWS_SAA_준비(33)
Tyun_Record
·
2023년 8월 15일
팔로우
0
S3
SAA
aws
클라우드
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
ex)
https://www.example.com
( 443 for HTTPS, 80 for HTTP )
웹 브라우저 기반 보안 메커니즘으로 메인 오리진을 방문하는 동안 다른 오리진에 대한 요청을 허용하거나 거부
다른 오리진에서 한 S3 버킷에 들어 있는 검색된 이미지, 자산, 파일을 요청할 수 있게 해줌
same origin 이란
"
https://www.example.com/app1
" = "
https://www.example.com/app2
"
엑세스 제어 허용 오리진
웹 브라우저가 한 웹사이트를 방문하는 동안 요청 체계의 일부로 다른 웹사이트에 요청을 보내야 할 때 다른 오리진이 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으로 변환하는 경우
즉석에서 이미지 크기를 조정하거나 워터마크를 추가하는 경우 등
Tyun_Record
팔로우
이전 포스트
AWS_SAA_준비(S3 심화 퀴즈)
다음 포스트
AWS_SAA_준비(S3 Security 퀴즈)
0개의 댓글
댓글 작성