-
S3, 특정 버킷의 특정 폴더에만 읽기 권한 부여하기 (feat. IAM 사용자 정책)AWS/S3 2020. 7. 8. 11:39
[목표]
S3에는 여러 개의 버킷을 생성하고 사용할 수 있습니다. 여러 개의 버킷 중, 특정 하나의 버킷만 공유하고, 그 버킷 안에서 특정 폴더의 데이터만 공유하기 위해 IAM 정책을 작성한 뒤 사용자를 생성합니다.
1. 공유하고자 하는 버킷, 폴더
- 내 계정의 S3 서비스에서 공유하고자 하는 버킷을 준비합니다.
- 버킷안의 폴더 중에 공유하고자 하는 폴더와 공유하지 않는 폴더를 특정합니다. (가이드에서는 'private'를 공유하지 않는 폴더, 'share'를 공유하는 폴더로 예시를 듭니다.)
2. IAM 정책 생성
- 'share' 폴더를 공유받는 사용자에게 부여할 IAM 정책을 생성합니다.
- 위치 : IAM 서비스 -> 정책 -> 정책 생성 -> JSON 탭
- 아래와 같이 정책을 작성합니다. *자신의 사용환경에 맞게 버킷 이름과 폴더를 수정
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListBucket", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::test-share-my-data" ], "Condition": { "StringEquals": { "s3:prefix": [ "", "share/" ], "s3:delimiter": [ "/" ] } } }, { "Sid": "AllowS3ActionsInUserFolder", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::test-share-my-data/share/*" ] } ] }
3. IAM 그룹 생성
- 사용자를 생성하기 전에, 그룹을 먼저 생성합니다.
- 사용자별로 정책을 적용하는 것도 가능하지만, 그룹별로 정책을 적용하고 해당하는 사용자를 포함시키는 것이 관리 차원에서 더 바람직하고 편하기 때문입니다.
- 위치 : IAM - 그룹 - 새로운 그룹 생성
4. IAM 사용자 생성
- S3 폴더를 공유받는 사용자를 생성합니다.
- 생성하면서, 앞서 생성한 그룹에 사용자를 추가합니다.
5. 사용자 로그인, S3 접근
- 생성한 사용자로 로그인 합니다.
- 콘솔을 통해 S3 서비스에 접근합니다.
- 정책에 'ListAllMyBuckets' 권한을 주지 않았기 때문에 버킷의 전체 리스트를 볼 수 없습니다.
- 공유받는 버킷의 url을 브라우저에 직접 입력해 접근합니다.
https://s3.console.aws.amazon.com/s3/buckets/test-share-my-data/
6. GetObject
- 정책을 통해 GetObject 권한이 있는 폴더와 권한이 없는 폴더에 각각 접근합니다.
- Read 권한이 있으므로 파일을 다운로드 하는 것이 가능합니다.
[review]
1) 공유하고자 하는 S3 버킷과 버킷안의 폴더를 준비
2) 특정 버킷의 특정 폴더 읽기 권한을 부여하는 정책 생성
3) IAM 그룹을 생성하며 2)의 정책을 연결
4) 사용자를 생성하며 3)의 그룹에 추가
5) 생성한 사용자로 AWS Console에 로그인
6) 공유받는 버킷의 url로 접근, 읽기 권한 확인
[참고]
https://aws.amazon.com/ko/premiumsupport/knowledge-center/iam-s3-user-specific-folder/
https://aws.amazon.com/ko/premiumsupport/knowledge-center/s3-console-access-certain-bucket/
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/walkthrough1.html
'AWS > S3' 카테고리의 다른 글
S3 이벤트 알람을 위한 SNS 정책 (0) 2020.07.16 S3 Standard to Glacier 스토리지 클래스 변경, 복원 (1) 2020.06.15 Linux Goofys 설치 및 S3 버킷 마운트 (0) 2020.04.21 S3 요청자 지불 옵션 활성화시 List 명령어 (0) 2020.04.16 특정 루트계정 접근허용(List, Get) S3 정책 (0) 2020.04.16