-
S3, 특정 버킷의 특정 폴더에만 읽기 권한 부여하기 (feat. IAM 사용자 정책)AWS/S3 2020. 7. 8. 11:39
[목표]
S3에는 여러 개의 버킷을 생성하고 사용할 수 있습니다. 여러 개의 버킷 중, 특정 하나의 버킷만 공유하고, 그 버킷 안에서 특정 폴더의 데이터만 공유하기 위해 IAM 정책을 작성한 뒤 사용자를 생성합니다.
1. 공유하고자 하는 버킷, 폴더
- 내 계정의 S3 서비스에서 공유하고자 하는 버킷을 준비합니다.
공유하고자 하는 버킷, 예시)test-share-my-data - 버킷안의 폴더 중에 공유하고자 하는 폴더와 공유하지 않는 폴더를 특정합니다. (가이드에서는 'private'를 공유하지 않는 폴더, 'share'를 공유하는 폴더로 예시를 듭니다.)
공유하지 않는 'private' 폴더와 공유하는 'share' 폴더 '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/
url를 통해 권한이 있는 버킷에 접근 6. GetObject
- 정책을 통해 GetObject 권한이 있는 폴더와 권한이 없는 폴더에 각각 접근합니다.
권한이 없는 'private' 폴더, 'Access Denied' 오류 발생 권한이 있는 'share' 폴더, 접근 가능하며 List 확인 가능 - 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/
IAM 정책을 사용하여 사용자별 폴더에 대한 액세스 권한 부여
단일 사용자 정책 - 이 예제 정책을 사용하면 특정 IAM 사용자가 버킷의 첫 번째 수준에서 특정 폴더를 확인한 다음, 원하는 폴더 및 하위 폴더의 객체에 대해 작업을 수행할 수 있습니다. 이 예제
aws.amazon.com
https://aws.amazon.com/ko/premiumsupport/knowledge-center/s3-console-access-certain-bucket/
특정 버킷에만 Amazon S3 콘솔 액세스 허용
사용자에게 버킷에 대한 Amazon Simple Storage Service(Amazon S3) 콘솔 액세스 권한을 부여하고 싶습니다. 그러나 사용자가 계정의 다른 버킷은 보지 못하게 하고 싶습니다. 사용자의 콘솔 액세스를 특정
aws.amazon.com
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/walkthrough1.html
연습: 사용자 정책을 사용하여 버킷에 대한 액세스 제어 - Amazon Simple Storage Service
이 연습에서는 companybucket을 버킷 이름으로 사용하고, Alice와 Bob을 IAM 사용자로 사용하며, Consultants를 그룹 이름으로 사용합니다. Amazon S3에서는 버킷 이름이 글로벌로 고유해야 하기 때문에 버킷
docs.aws.amazon.com
'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