Chat Conversation
참여자: User, QueryPie
Message 1 from User
User
S3 버킷 정책 예제
Message 2 from QueryPie
QueryPie
AWS S3 버킷 정책에 대한 다양한 예제를 검색해서 포괄적인 정보를 제공하겠습니다. AWS S3 버킷 정책은 JSON 형식을 사용하여 리소스 기반 액세스 제어를 제공합니다. 버킷 소유자만이 정책을 연결할 수 있으며, 버킷 내 모든 객체에 적용됩니다.
기본 정책 구조
S3 버킷 정책은 다음과 같은 기본 요소로 구성됩니다:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "정책 ID",
"Effect": "Allow|Deny",
"Principal": "권한을 부여받을 주체",
"Action": "허용/거부할 S3 작업",
"Resource": "정책이 적용될 리소스",
"Condition": "조건부 제약사항"
}
]
}
주요 정책 예제
1. 읽기 전용 액세스 정책
특정 사용자에게 버킷과 객체에 대한 읽기 권한만 부여:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Dave"
},
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
]
}
]
}
2. 특정 폴더 액세스 정책
사용자가 자신의 폴더에만 접근할 수 있도록 제한:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUserToSeeFolder",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:user/JohnDoe"
},
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::company-bucket"],
"Condition": {
"StringLike": {
"s3:prefix": ["home/JohnDoe/*"]
}
}
},
{
"Sid": "AllowUserFolderAccess",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:user/JohnDoe"
},
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::company-bucket/home/JohnDoe/*"]
}
]
}
3. 태그 기반 액세스 제어
특정 태그가 있는 객체만 업로드 허용:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:user/JohnDoe"
},
"Action": ["s3:PutObject"],
"Resource": ["arn:aws:s3:::my-bucket/*"],
"Condition": {
"StringEquals": {
"s3:RequestObjectTag/Department": "Finance"
}
}
}
]
}
4. IP 주소 기반 접근 제한
특정 IP 범위에서만 접근 허용:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": ["203.0.113.0/24", "192.0.2.0/24"]
}
}
}
]
}
5. 크로스 계정 액세스
다른 AWS 계정에 접근 권한 부여:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT-B-ID:root"
},
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::shared-bucket/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}
6. 퍼블릭 읽기 액세스
모든 사용자에게 읽기 권한 부여:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::public-bucket/*"
}
]
}
정책 적용 시 주의사항
리소스 ARN 형식
- 버킷:
arn:aws:s3:::bucket-name - 객체:
arn:aws:s3:::bucket-name/*
보안 고려사항
- 최소 권한 원칙을 적용하여 필요한 최소한의 권한만 부여
- Condition 문을 활용하여 세밀한 접근 제어 구현
- 정기적으로 정책을 검토하고 불필요한 권한 제거
이러한 예제들을 참조하여 특정 요구사항에 맞는 S3 버킷 정책을 구성할 수 있습니다.
[Source: https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html] [Source: https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/example-bucket-policies.html] [Source: https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html]