☁️
AWS S3
July 13, 2024
AWS S3
-
S3는 한 리전에 귀속된다
Amazon S3 버킷은 특정 리전에 생성되며, 해당 리전에 귀속된다. 이를 통해 데이터가 저장되는 물리적 위치를 제어할 수 있으며, 리전 간의 데이터 전송에 따른 지연 시간을 줄일 수 있다. -
기본적으로 공개된 URL로 파일에 접근할 수 없다
기본적으로 S3 버킷에 저장된 객체는 비공개이며, 공개된 URL을 통해 접근할 수 없다. 하지만, 특정 설정을 통해 객체에 대한 접근을 허용할 수 있다. 이를 통해 데이터 보안을 유지하면서도 필요한 경우 접근을 제어할 수 있다.
보안 기능
사용자 기반 보안
- IAM 정책: 특정 사용자에 대해 어떤 API 호출을 허용할지를 정의한다. IAM 정책을 통해 세밀하게 접근 권한을 설정할 수 있다.
리소스 기반 보안
- 버킷 정책: S3 콘솔을 통해 설정할 수 있는 버킷 전체에 적용되는 규칙이다. 크로스 계정 액세스를 허용할 수 있다.
- 객체 접근 제어 목록 (ACL): 객체 수준에서 더 세밀한 권한 제어를 제공한다. 필요에 따라 비활성화할 수 있다.
- 버킷 접근 제어 목록 (ACL): 버킷 수준에서의 권한 제어를 제공하지만, 덜 일반적으로 사용되며 비활성화할 수 있다.
접근 제어
- IAM 주체가 S3 객체에 접근할 수 있는 경우:
- 사용자 IAM 권한이 허용되거나, 리소스 정책이 허용되며 명시적으로 거부되지 않는 경우에 접근할 수 있다.
암호화
- S3에 저장된 객체를 암호화 키를 사용하여 암호화할 수 있다. 이를 통해 데이터의 기밀성을 보장할 수 있다.
S3 버킷 정책
S3 버킷 정책은 JSON 형식으로 작성되며, 다음과 같은 요소를 포함한다:
- 리소스: 버킷과 객체를 지정한다.
- 효과 (Effect): 허용(Allow) 또는 거부(Deny) 동작을 정의한다.
- 작업 (Actions): 허용 또는 거부할 API 작업 세트를 정의한다.
- 주체 (Principal): 정책을 적용할 계정 또는 사용자를 지정한다.
버킷 정책의 사용 사례
- 버킷에 대한 공용 액세스 부여
- 업로드 시 객체 암호화 강제
- 다른 계정에 대한 액세스 권한 부여 (크로스 계정)
JSON 예시
다음은 버킷에 대한 공용 읽기 액세스를 허용하는 버킷 정책의 예시이다:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicRead",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::examplebucket/*"
]
}
]
}
공용 액세스 차단 설정
공용 액세스 차단 설정
- 모든 공용 액세스 차단: 모든 공용 액세스를 차단한다.
- 새로운 ACL을 통한 공용 액세스 차단: 새로운 ACL을 통한 버킷 및 객체의 공용 액세스를 차단한다.
- 기존 ACL을 통한 모든 공용 액세스 차단: 기존 ACL을 통한 모든 공용 액세스를 차단한다.
- 새로운 퍼블릭 버킷 또는 액세스 포인트 정책을 통한 공용 액세스 차단: 새로운 퍼블릭 버킷 또는 액세스 포인트 정책을 통한 공용 액세스를 차단한다.
- 모든 퍼블릭 버킷 또는 액세스 포인트 정책을 통한 공용 및 크로스 계정 액세스 차단: 모든 퍼블릭 버킷 또는 액세스 포인트 정책을 통한 공용 및 크로스 계정 액세스를 차단한다.
이러한 설정은 회사 데이터 유출을 방지하기 위해 만들어졌다. 버킷이 절대 공용이 되어서는 안 되는 경우, 이 설정을 유지하는 것이 좋다. 계정 수준에서 설정할 수 있다.