S3
- S3 = Storage + Backup
- 재해 복구 용도로도 쓰인다 ex) 리전이 다운되는 경우 여러분은 데이터를 다른 리전으로 이동시킬 것 이다.
- Archive -> S3 에 파일을 아카이브 해두면 추후 매우 손 쉽게 검색할 수 있다.
- Hybrid Cloud Storage -> 온프레미스 스토리지가 있지만, 클라우드로 확장하고자 한다면 S3 를 사용할 수 있다. 또한 애플리케이션을 호스팅하고 동영상 파일이나 이미지 등 미디어를 호스팅할 수 있다.
- 데이터 레이크를 보유하여 다량의 데이터를 저장하고 빅데이터 분석을 수행하기 위해서도 사용된다
- S3 는 파일을 버킷에 저장하는데, 버킷은 상위 레벨 디렉토리로 표시된다.
- S3 버킷의 파일은 객체
- 버킷은 계정 안에 생성되며, 버킷에는 전역적으로 고유한 이름이 있어야 하는데, 즉, 이름은 계정에 있는 모든 리전과 AWS 에 존재하는 모든 계정에서 고유해야 한다.
- AWS 에서 전역적으로 고유한 단 하나의 이름이어야 한다.
- 버킷은 리전 수준에서 정의된다. -> 버킷 이름이 모든 리전과 모든 계정에서 공유해도 버킷은 반드시 특정 AWS 리전에서 정의되어야 한다.
- S3 는 전역 서비서처럼 보이지만 버킷을 사실상 리전에서 생성된다. 이것이 초보자들이 겪는 흔한 실수.
- 객체나 파일에는 키가 있다. S3 키는 파일의 전체 경로이다.
- ex.) s3://my-bucket/my_file.txt
- 폴더에 중첩하려는 경우, 키는 전체 경로가 된다.
- S3 그 자체로는 디렉토리의 개념은 없다
- S3 의 핵심은 Key
- 객체란 무엇일까? -> Value : 본문의 내용 , 파일 등 원하는 것은 뭐든지 S3 로 업로드할 수 있는데, 최대 객체 크기는 5TB 이다.
- 이때는 멀티파트 업로드를 사용해서 해당 파일을 여러 부분으로 나눠 업로드해야 한다.
- 객체에는 메타데이터도 있는데, 키-값 쌍 리스트를 말한다.
- 태그는 보안과 수명 주기에 유용하다.
S3 의 보안과 정책
- 사용자에게는 IAM 정책이 있다면, S3 에는 버킷 정책이 있다.
- 이 버킷 정책은 S3 콘솔에서 직접 할당할 수 있다. : 전체 버킷 규칙
- 가령, 특정 사용자가 들어올 수 있게 하거나 다른 계정의 사용자를 허용할 수 있는데, 이를 S3 버킷에 액세스할 수 있는 교차 계정이라고 한다.
- ACL (Object Access Control List) : 객체 액세스 제어 목록이며, 이 목록은 보다 세밀한 보안이며, 비활성화할 수 있는데, 버킷 수준에서 살펴보면 버킷 ACL 이 있는데, 훨씬 덜 일반적이다. 이 역시 비활성화가 가능하다.
- 그렇다면 어떤 상황에서 IAM 원칙이 S3 객체에 액세스 할 수 있을까?
- IAM 권한이 이를 허용하거나 리소스 정책이 이를 허용하는 경우가 된다. 이것이 작동할 때는 명백한 거부는 없다.
- IAM 원칙이 특정 API 를 호출 시 S3 객체에 액세스 할 수 있다는 것
- 암호키를 사용하여 객체를 암호화 하는 것
- JSON 기반의 정책으로 활용된다.
- Resource 블록 에서는 이 정책이 적용되는 버킷과 객체를 정책에 알려준다
- 이것이 examplebucket 내에서 모든 객체에 적용되는 것을 볼 수 있다.
- 허용 또는 거부라는 결과인데, 무엇을 허용하고 거부하는 것 일까?
- 바로 작업을 거부한다. -> 우리가 허용하거나 거부할 수 있는 API 집합이 있는데, 해당 예시에서 우리가 허용한 작업은 GetObject 이다 이 원칙 덕분에 모든 사용자를 허용한다.
- S3 버킷은 버킷 내 모든 객체에 대해 공개 읽기로 설정하고 있는데, 필요한 버킷 정책을 사용해서 버킷에 대한 공개 액세스를 허용할 수 있으며, 또는 업로드 시 객체를 강제로 암호화하거나 또 다른 계정으로의 액세스를 허용할 수도 있다.
- 예시로 공개 액세스를 위한 버킷 정책이 있다고 가정하고, 사용자는 월드 와이드 웹에 있는데, 이 웹사이트 방문자는 S3 버킷 안에 있는 파일에 액세스하려고 한다. -> 필요한 버킷 정책을 첨부하여 공개 액세스를 허용할 것이고, 이것은 버킷 정책이 S3 버킷에 첨부되면 그 안에 잇는 모든 객체에 액세스할 수 있다.
- IAM 사용가 있는 경우
- 해당 사용자는 S3 에 액세스하고자 한다. 그럼 우리는 정책을 통해 이 사용자에게 IAM 권한을 할당할 수 있다.
- 정책이 S3 버킷으로의 액세스를 허용하므로 해당 사용자는 지금 우리의 S3 버킷에 액세스할 수 있고, EC2 인스턴스가 있는 경우, EC2 인스턴스에서 S3 버킷으로 액세스를 제공할 수 있다.
- 하지만. IAM 사용자는 적절하지 않으며, IAM Role을 사용해야한다.
-> 올바른 IAM 권한을 통해 EC2 인스턴스 Role 을 생성하고, 이 EC2 는 S3 버킷에 액세스할 수 있을 것이다. - 여기서 교차 계정 액세스를 허용하려면 버킷 정책을 사용해야 하는데, 다른 계정에 IAM 사용자가 있다.
-> 추가 버킷 정책을 생성해서 이 특정 IAM 사용자에게 교차 계정 액세스를 허용하려고 한다.
-> 따라서 IAM 사용자는 S3 버킷으로 API 호출을 할 수 있게 된다.
- 교차 계정 액세스를 허용하려면 버킷 정책을 사용해야 하는데, 다른 계정에 IAM 사용자가 있다.
- 추가 버킷 정책을 생성해서 이 특정 IAM 사용자에게 교차 계정 액세스를 허용하려고 할때, IAM 사용자는 S3 버킷으로 API 를 호출할 수 있다
- 블록 공개 액세스에 관한 버킷 설정: 버킷을 생성할 때 설정하는 것으로, 기업 데이터 유출을 방지하기 위한 추가 보안 계층으로서 AWS 가 개발하였다.
- 이 버킷 정책을 설정하여 공개로 만들더라도 이 설정이 활성화되어 있다면, 버킷은 결코 공개되지 않을 것이다. 이렇게 데이터 유출을 방지할 수 있다.
'AWS' 카테고리의 다른 글
What is Global Accelerator? (2) | 2024.10.21 |
---|---|
AWS CloudFront ? (1) | 2024.10.20 |
DNS , Route 53, 레코드 (1) | 2024.10.18 |
RDS 와 Aurora 의 보안, RDS Proxy, ElastiCache (0) | 2024.10.17 |
Aurora 의 기능, 장애 조치, 스토리지, 가용영역, 인스턴스 접속, 작동 (0) | 2024.10.15 |