블로그 릴레이 - IAM 사용자에게 하나의 S3 버킷에 대한 접근 권한을 나누어 봤습니다.
안녕하세요! 클라우드 사업본부 컨설팅부의 김재욱입니다.
본 블로그는 당사의 한국어 블로그 릴레이의 2025년 첫 번째 블로그입니다.
이번 블로그의 주제는「IAM 사용자에게 하나의 S3 버킷에 대한 접근 권한을 나누어 봤습니다.」입니다.
사전 준비
먼저 두 가지의 IAM 사용자를 생성합니다.
- test-jaewook-1 : 특정 S3 버킷에 대한 모든 권한을 가지고 있음.
- test-jaewook-2 : 특정 S3 버킷에 지정한 폴더에 대한 접근 권한만 가지고 있음.
S3 버킷을 생성하고, test-jaewook-1 사용자는 secret 폴더와 uploads 두 폴더에 대한 모든 접근 권한을 가지고 있습니다. 반면 test-jaewook-2는 uploads 폴더에 대한 접근 권한만을 가지고 있으며, secret 폴더에 대한 접근 권한을 가지고 있지 않습니다.
IAM 정책 생성
먼저 test-jaewook-1 사용자의 권한은 다음과 같습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::test-jaewook-bucket2",
"arn:aws:s3:::test-jaewook-bucket2/*"
]
}
]
}
해당 S3 버킷에 대한 모든 권한을 가지고 있습니다.
이어서 test-jaewook-2 사용자의 권한은 다음과 같습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::test-jaewook-bucket2"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::test-jaewook-bucket2/uploads/*"
},
{
"Effect": "Deny",
"Action": "*",
"Resource": [
"arn:aws:s3:::test-jaewook-bucket2/secret/*"
]
}
]
}
기본적으로 [s3:ListBucket]을 통해서 모든 폴더를 볼 수 있게 표시해야 합니다. uploads만 해당 사용자에게 표시하는 것은 불가능한 것 같으며, uploads만 표시하도록 권한을 설정하면 아래와 같은 에러 문구가 표시됩니다.
객체를 표시할 권한 부족
귀하 또는 귀하의 AWS 관리자가 권한을 업데이트하여 s3:ListBucket 작업을 허용하면 페이지를 새로 고치세요.
이러한 문구가 표시되면, uploads 폴더 또한 보이지 않게 되므로 uploads과 secret 두 폴더를 다 표시할 수 있도록 설정했습니다.
검증
먼저 모든 권한을 가지고 있는 test-jaewook-1 사용자로 접속하여 테스트합니다.
secret 폴더에 접근하여 파일을 다운로드할 수 있습니다.
이어서 uploads/jaewook 폴더에 있는 파일 또 한 다운로드할 수 있습니다.
모든 권한을 가지고 있기 때문에 어느 폴더에나 접근이 가능한 것을 확인할 수 있습니다.
다음은 uploads 폴더에 대한 권한만을 가지고 있는 test-jaewook-2 사용자로 접속하여 테스트합니다.
uploads/jaewook 폴더에 있는 파일은 문제없이 다운로드 가능합니다.
secret 폴더에 접근하여 파일 내부를 확인하려고 하면, 접근 거부가 표시됩니다.
이렇게 하나의 버킷에 여러 사용자들에 대한 접근 권한을 나누어 보다 안전하게 파일을 관리할 수 있지 않을까 생각합니다.
마무리
이상, 한국어 블로그 릴레이의 2025년 첫 번째 블로그「IAM 사용자에게 하나의 S3 버킷에 대한 접근 권한을 나누어 봤습니다.」편이었습니다. 다음 두 번째 블로그 릴레이는 1월 다섯 번 째 주에 공개됩니다.
끝까지 읽어주셔서 감사합니다! 이상, 클라우드 사업본부 컨설팅부의 김재욱이었습니다.