티스토리 뷰
안녕하세요. 최근 CloudNet@ AWS Security Study를 진행하며 해당 내용을 이해하고 공유하기 위해 작성한 글입니다. 해당 내용은 ‘쉽게 적용하는 AWS 보안 레시피’ 책과 AWS Docs 내용을 기반으로 했습니다.
[aws] S3 Security — 1. S3 접근 제어 목록 생성편 다음으로 [aws] S3 Security — 2. S3 버킷 정책 생성에 대해 알아봅시다.
2. S3 버킷 정책 생성
- 가능하면 ACL 대신 버킷 정책이나 IAM 정책을 사용하는 것이 좋습니다.
사전준비
- 동작 확인을 위한 S3 버킷 생성 및 이미지 파일 업로드
# S3 버킷 Suffix (접미사) 변수 지정
# S3suffix=<자신의 닉네임>
export S3suffix=hayley
echo $S3suffix# S3 버킷 생성
#aws s3 mb s3://버킷(유일한 이름) --region ap-northeast-2
aws s3 mb s3://cass-s3bucket-$S3suffix --region ap-northeast-2# 제임스웹 우주망원경이 찍은 사진 하나 다운로드
curl -s https://www.nasa.gov/sites/default/files/thumbnails/image/main_image_star-forming_region_carina_nircam_final-5mb.jpg -o jameswebb.jpg# 관리자 프로필로 이미지를 업로드하고, public-read ACL 적용
aws s3 cp jameswebb.jpg s3://cass-s3bucket-$S3suffix/jameswebb.jpg# S3 버킷 조회
aws s3 ls s3://cass-s3bucket-$S3suffix
2. 버킷 URL 접속 시도하여 차단 확인
# 버킷 URL 접속 시도하여 차단 확인
curl -s https://cass-s3bucket-$S3suffix.s3.$AWS_REGION.amazonaws.com
3. IAM 사용자 준비 : awssecadmin(관리자), testuser(권한없음, CLI 가능)
2.1 콘솔에서 버킷 정책 적용
- S3 → 버킷 → 권한 → 버킷 정책 편집 ⇒ 오른쪽 상단에 정책 생성기 클릭
버킷 정책 생성
- Resource 에 자신의 버킷 ARN 과 Condition에 EpochTime 설정
버킷 정책 적용
2. 버킷 URL 접속 확인 및 객체 다운로드 시도
# 버킷 URL 접속 확인
curl -s https://cass-s3bucket-$S3suffix.s3.$AWS_REGION.amazonaws.com
**# 객체 다운로드 시도
curl -v https://cass-s3bucket-$S3suffix.s3.$AWS_REGION.amazonaws.com/jameswebb.jpg -o jameswebb2.jpg
다운로드 실패
3. S3 → 버킷 → 권한 → 버킷 정책 편집 : 객체(파일)을 보기 위해서 Get Object로 Action을 변경하고, 특히 객체에 접근하는 동작 설정은 prefix(/)를 추가
4. 버킷 URL 접속 확인 및 객체 다운로드 시도
# 버킷 URL 접속 확인 **⇒ 어떻게 되나요?**
curl -s https://cass-s3bucket-$S3suffix.s3.$AWS_REGION.amazonaws.com
**# 객체 다운로드 시도 ⇒ 어떻게 되나요?**
curl -v https://cass-s3bucket-$S3suffix.s3.$AWS_REGION.amazonaws.com/jameswebb.jpg -o jameswebb2.jpg
# 객체 직접 링크를 웹 브라우저에서 접속 확인
echo -e "S3 URL = https://cass-s3bucket-$S3suffix.s3.$AWS_REGION.amazonaws.com/jameswebb.jpg"S3 URL = https://cass-s3bucket-hayley.s3..amazonaws.com/jameswebb.jpg
객체 확인 가능
5. CLI 실습을 위해 버킷 정책 삭제
2.2 CLI에서 버킷 정책 적용
- 정책 파일 생성 : testuser 사용자 계정으로 버킷 내용 나열
2. CLI로 정책 추가
# CLI로 정책을 추가
aws s3api put-bucket-policy --bucket cass-s3bucket-$S3suffix --policy file://bucket-policy-allow-test-user.json --profile awssecadmin
3. 테스트 : testuser 사용자 계정으로 버킷 내용을 나열할 수 있는지 확인
# testuser 사용자 계정으로 버킷 내용을 나열 확인
aws s3 ls cass-s3bucket-$S3suffix --profile testuser2022-08-14 23:56:44 5310371 jameswebb.jpg# testuser 사용자 계정으로 이미지 파일(객체) 다운로드(읽기)
aws s3 cp s3://cass-s3bucket-$S3suffix/jameswebb.jpg jameswebb3.jpg --profile testuserfatal error: An error occurred (403) when calling the HeadObject operation: Forbidden# awssecadmin 사용자 계정으로 버킷 내용을 나열 확인
aws s3 ls cass-s3bucket-$S3suffix --profile awssecadmin2022-08-14 23:56:44 5310371 jameswebb.jpg# awssecadmin 사용자 계정으로 이미지 파일(객체) 다운로드(읽기)
aws s3 cp s3://cass-s3bucket-$S3suffix/jameswebb.jpg jameswebb3.jpg --profile awssecadmindownload: s3://cass-s3bucket-hayley/jameswebb.jpg to ./jameswebb3.jpg
4. 다음 실습을 위해 버킷 삭제
# 실습에 사용한 S3 버킷 삭제
aws s3 rm s3://cass-s3bucket-$S3suffix --recursive delete: s3://cass-s3bucket-hayley/jameswebb.jpgaws s3 rb s3://cass-s3bucket-$S3suffix
remove_bucket: cass-s3bucket-hayley
blog migration project
written in 2022.8.15
https://medium.com/techblog-hayleyshim/aws-s3-security-s3-%EB%B2%84%ED%82%B7-%EC%A0%95%EC%B1%85-%EC%83%9D%EC%84%B1-12fb77985da
'IT > Infra&Cloud' 카테고리의 다른 글
[aws] S3 Security — 4. Create S3 pre-signed URL with validity period (0) | 2023.10.29 |
---|---|
[aws] S3 Security — 3. S3 cross-region replication of the same account (0) | 2023.10.29 |
[aws] S3 Security — 1. Create S3 Access Control List (0) | 2023.10.29 |
[aws] IAM & Organizations (0) | 2023.10.29 |
실습편 - GCP 프로젝트 간 스냅샷 데이터 공유하기 (0) | 2023.10.28 |
- Total
- Today
- Yesterday
- VPN
- PYTHON
- 국제 개발 협력
- security
- terraform
- AI
- 혼공챌린지
- IaC
- cni
- OS
- operator
- 혼공단
- 파이썬
- k8s cni
- gcp serverless
- k8s
- AWS
- 도서
- EKS
- k8s calico
- cloud
- S3
- GKE
- 혼공파
- handson
- SDWAN
- controltower
- GCP
- NW
- NFT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |