Amazon S3의 최신 사용 사례 대부분은 더 이상 ACL을 사용할 필요가 없습니다. 각 객체에 대해 액세스를 개별적으로 제어할 필요가 있는 드문 상황을 제외하고는 ACL을 비활성화한 채로 두는 것이 좋습니다. ACL을 비활성화하면 누가 객체를 버킷에 업로드했는지에 관계없이 정책을 사용하여 버킷의 모든 객체에 대한 액세스를 제어할 수 있습니다. 자세한 내용은객체 소유권 제어 및 버킷에 대해 ACL 사용 중지섹션을 참조하세요.
버킷 정책 : 버킷 정책은 S3 작업, 요청자, 리소스 및 요청의 여러 측면(예: IP 주소)를 비롯한 다양한 조건을 기반으로 버킷 및 객체에 대한 중앙 집중식 액세스 제어를 제공
**각종 S3 버킷 데이터 유출 보안 사고로 조회 및 접근할 수 없도록 기본적으로 차단되도록 변경.**
**테스트를 위해**
[AWS 콘솔] 퍼블릭 액세스 차단 편집 : (Uncheck) 모든 퍼블릭 액세스 차단 → ‘변경 사항 저장’ 클릭 ⇒ ‘확인’ 입력
[AWS 콘솔] 버킷에 텍스트 파일 3개 객체 파일 업로드
# 파일 생성
echo "memo1" > memo1.txt
echo "memo2" > memo2.txt
echo "memo3" > memo3.txt
# S3로 업로드
aws s3 cp memo1.txt s3://ahss-$NICKNAME
aws s3 cp memo2.txt s3://ahss-$NICKNAME
aws s3 cp memo3.txt s3://ahss-$NICKNAME
# 파일 확인
aws s3 ls s3://ahss-$NICKNAME --recursive --human-readable --summarize
aws s3api list-objects --bucket ahss-$NICKNAME | jq
업로드된 파일 확인
[AWS 콘솔] 객체 URL 주소 확인 → 버킷 액세스 방식 확인 : 가상 호스팅 방식, S3 액세스 포인트, S3://를 사용 - 링크
객체 URL객체 URL을 통한 접근
AccessDenied의 원인은??!
[EC2] 자신의 버킷 탐색
# 출력 결과의 원인을 유추해보자!
NICKNAME=<자신의닉네임>
NICKNAME=yeongil
aws s3 ls s3://ahss-$NICKNAME --human-readable
aws s3 ls s3://ahss-$NICKNAME --human-readable --no-sign-request
[AWS 콘솔] 권한 → 객체 소유권 편집 : ‘ACL 활성화’ , ‘버킷 소유자 선호’
[EC2] 자신의 버킷 탐색
# 탐색 실행
aws s3 ls s3://ahss-$NICKNAME --human-readable --no-sign-request
# 파일 복사 실행 : 출력 결과의 원인을 유추해보자!
aws s3 cp s3://ahss-$NICKNAME/memo1.txt . --no-sign-request
memo2.txt : 인증된 사용자 그룹(AWS 계정이 있는 모든 사용자) - 객체 (Check 읽기) → ‘변경 사항 저장’
버킷 새로고침 후 확인
[EC2] 자신의 버킷 탐색
# 파일 복사 실행 : 출력 결과의 원인을 유추해보자!
aws s3 cp s3://ahss-$NICKNAME/memo1.txt . --no-sign-request
# 파일 복사 실행 : 출력 결과의 원인을 유추해보자!
aws s3 cp s3://ahss-$NICKNAME/memo2.txt . --no-sign-request
# 파일 복사 실행 : 출력 결과의 원인을 유추해보자!
aws s3 cp s3://ahss-$NICKNAME/memo3.txt . --no-sign-request
결과는???! copy 성공!!
ACL을 사용하게 되면, 계정이 인증된 전세계 AWS 모든 사용자에게 자신의 버킷을 허용하게 되는 상황이니 조심하자!
[권장!]
[AWS 콘솔] 리소스 정책 : 버킷 정책 설정 - 편집 클릭 후 아래 내용 입력 후 ‘변경 사항 저장’
# 파일 복사 실행 : 출력 결과의 원인을 유추해보자!
aws s3 cp s3://ahss-$NICKNAME/memo1.txt . --no-sign-request
# 파일 복사 실행 : 출력 결과의 원인을 유추해보자!
aws s3 cp s3://ahss-$NICKNAME/memo2.txt . --no-sign-request
# 파일 복사 실행 : 출력 결과의 원인을 유추해보자!
aws s3 cp s3://ahss-$NICKNAME/memo3.txt . --no-sign-request