S3 보안 관련 내용 정리
AWS S3 보안 관련 내용 정리
보안관련 내용
MFA Delete
설정을 통해 중요한 작업을 할 때, 루트 계정의 MFA 인증을 받도록 설정할 수 있다. 해당 옵션은 콘솔이 아닌 CLI 혹은 API를 통해 설정할 수 있다.
MFA Delete 옵션을 활성화하면 영구적으로 객체의 버전을 삭제할 때나, 버킷의 버전관리를 중단할 때 MFA인증이 필요하다.
Access Logs
모니터링 목적으로 S3 버킷에 대한 모든 액세스를 기록할 수 있다. Access Log는 같은 리전에 S3 버킷으로 진행한다. 모든 사용자의 요청이 로그로 기록된다.
주의해야할 상황으로 타겟버킷자체를 로그버킷으로 사용하면 무한 루프가 걸린다. 어떤 사용자가 요청을 하면 자체 로깅을 기록한다. 하지만, 자체 로깅을 기록하는 것 또한 기록해야 한다. 이렇게 루프가 걸려 S3가 빠른 속도로 방대해진다.
로그의 형식은 다음과 같다.
1
79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be DOC-EXAMPLE-BUCKET1 [06/Feb/2019:00:00:38 +0000] 192.0.2.3 79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be 3E57427F3EXAMPLE REST.GET.VERSIONING - "GET /DOC-EXAMPLE-BUCKET1?versioning HTTP/1.1" 200 - 113 - 7 - "-" "S3Console/0.4" - s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234= SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader DOC-EXAMPLE-BUCKET1.s3.us-west-1.amazonaws.com TLSV1.2 arn:aws:s3:us-west-1:123456789012:accesspoint/example-AP Yes
Pre-Singed URL
위에서 S3를 다른 사람이 이용하게 할땐, 주로 Public S3였다. 하지만 S3 버킷을 퍼블릭이 아닌 프라이빗하게 다루고 있는 상황에서 다른 사용자에게 잠시 접근 권한을 부여하고 싶다면 어떻게해야할까? 말이 너무 길어서 요약하면, 프라이빗망에 있는 버킷 데이터를 잠시 다른 유저에게 열어주고 싶다면? 이때는 Pre-Singed URL을 사용하면 된다. 해당 URL에는 특정 기간동안 권한이 부여된다. Get/Put을 할 수 있다.
예시 상황
Allow only logged-in users to download a premium video from your S3
1
2
3
4
Allow an ever-changing list of users to download files by generating URLs dynamically
Allow temporarily a user to upload a file to a precise location in your S3 bucket
Public 설정을 해제한체, S3에 접근하면 다음과 같은 결과를 확인한다.
Object Actions > PreSignedURL로 들어가 설정을 진행해준다. 원하는 유효기간을 설정한다.
Create presigned URL을 클릭하면 다음과 같이 상단에 URL을 복사할 수 있는 박스가 생성된다.
해당 URL로 다시 접속하면 아래와 같이 정상적으로 이미지를 확인할 수 있다.
URL의 형식은 아래와 같다. “X-Amz-Expires=60”에서 유효기간을 확인할 수 있다. 노션의 원본이미지보기 기능도 아래와 같이 미리 승인된 URL과 같은 형식이다.
1
https://kane-test-bucket-7115.s3.ap-northeast-2.amazonaws.com/Kane-03.jpg?response-content-disposition=inline&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEFEaDmFwLW5vcnRoZWFzdC0yIkYwRAIgJO12hsz2GIYi1op2SPyWodPQnowy13/4K22/fq9WrjMCIHpb5hlrdIAPPVrjTjLxVtCFjdlCdq7bcQDEfR2HYRwHKugCCCsQABoMMzM5NzEzMDM3MTM4IgyCuhh25O1efy/RLasqxQJSsv46u9EWdtwx1ZuN0yL0Skw2pUq9W6KXPFfhxAdnKXOiL/Djyc3nBjcM6ZHbd5QsnTEieKrwUZ/AC4+hR2yWK5beAM/3JkWI1FAzwRo365JGnABEgKU5JWdrcQvn1sfhKj0/BexoMKRc64HGMzRWXjWrVZvCAFtx3Rw82LepeuYn3rQI3/CRO/X/jC5pN3/QiqHRiQ9K7u9XN9JeY+7zMMjXB2cicfLoOSTfL/06BZd1gBcoljFiSXBulQMIPmoWtWuof5hNr1q/2ZLkD7aI2tvh3VISBJTSuw3cjdHk2kCKBvLLVd3nmMRLjn5cBQe4Q4xzLMDgkCQhLmzzlUG+Ty8xcCKdLZ556mwFCk2RS+GXDk7dDy6UyRBCkoPadQSTRL389j9tniUWj3svE5mWIQwdaPYWsOzY2djZ/2n2FwCL94wqMNL9m64GOrQCCcnTEWMUKjUHwNs28mhiOP/X/bmuR9mfAxKnEr4ekt8fz8hzLLI//8GCHZUmkxOfsMVln+JQMgAGatmvct7fRZxk0ZQJHS31xBJMBhEbbFEbpqGMGTfpJ6dHEcTXGgFgUTLmf8cDvMSItR8a1pHnUqyK9GRs5O/MHHcWKH5VfuSw919R727NIbz3YHZOuT8GWIAteHeF1iEjZjmYkWwQm1Vw0swjQxfXM2HoWUBbWI3B06u+4o4xENQddQj8cb+ji4wlXpqkcjubzaXK617NHFlx6qgQlSucFkVfn30TUV+e76S4IOJ9HIUgWOSj5znB4hocNqdOXtL78TZy1L9hTNlombIchTudu1TxXLs4ZYkdO8+adiHzXZ73C/ej1rTMEK1h0htn9JTa/lrGPsEZ9RI2j9g%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20240210T144708Z&X-Amz-SignedHeaders=host&X-Amz-Expires=60&X-Amz-Credential=ASIAU6GDZSNJLCPADCPC/20240210/ap-northeast-2/s3/aws4_request&X-Amz-Signature=3d3520b186183ccc2606c5b7e5449c7b497b04a7ef0ef5847b83af7e63ebf947