개요
- 사용 도구
RestAPI, AWS CLI,AWS CDK를 통해서 java,Net,Ruby,PHP,Node.js,python등을 통해 생성 가능합니다.
CLI :https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-windows.html
버킷 생성
해당 index.html 파일을 업로드 하여 테스트를 진행합니다.
CLI를 통한 Presigned URL 생성
aws s3 presign s3://s3 object path –expires-in “만료시간” –region “대상리전”
- CLI를 통한 URL 정보 획득
- 해당 URL은 S3 특정 Object를 다운로드할 수 있는 권한이 적용되어 있는 URL입니다.
- 해당 expires 시간은 120 : 2분입니다.
- Presigned URL TEST
- 기존 bucket url을 통한 접속
차단 확인 - 기본적으로 프라이빗 이기 때문
- Presigned-URL 접속
- Time over
- 기존 bucket url을 통한 접속
- CLI를 통한 URL 정보 획득
추가
Bucket Policy를 이용하여 Presinged URL의 지정된 권한을 무시하여 방지
지정된 VPC외부로 S3에 저장된 데이터를 공유하는 것을 방지 할 수 있습니다
- 정책 편집
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Bucket Access From specified VPC only", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:user/username" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::bucketname/*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-xxxxxxxx" } } } ] }
- Presigned URL 생성
- 접속 test
접근 차단 확인
- boto 3 이용시
import boto conn = boto.connect_s3() url = conn.generate_url(120, 'GET', bucket='presignedurl-sample-bucket', key='test.txt') print url
- 정책 편집
테스트
<AWS CLI를 통하여 Presigned URL을 생성>
결론
따라서, Presigned URL 은 S3 Bucket을 공유할 때(다운로드 or 업로드) 편리하게 사용할 수 있다는 장점이 있지만 S3 Bucket에 대한 권한이 없는 환경에서도 Bucket 에 대한 접근 권한을 줄 수 있다는 점에서 조심스럽게 사용되어야 합니다.또한, 누구나 Presigned URL을 생성가능하며 permission이 필요하지 않습니다. 공유 대상이 되는 S3 Bucket 도 별도의 제한없이 지정이 가능합니다. 왜냐하면 S3 Presigned URL 은 공유 대상이 되는 S3 Bucket 과 Object 를 지정하고 공유를 하는 IAM 자격증명의 권한을 함께 지정함으로써 최종적으로 누군가가 Presigned URL 로 접근했을 때 Presigned URL 에 포함되어 있는 권한을 검사하여 해당 요청을 허용/차단하도록 동작하기 때문입니다. 즉, 최종적인 권한 검사는 Presigned URL 을 이용한 요청이 유입되었을 때 이루어지기 때문에 Presigned URL 을 생성하는 단계에서 어떤 제한을 적용할 수는 없습니다.따라서, Bucket Policy나 IAM Policy에 다양한 Condition을 적용하여 권한을 적절하게 제한하여 사용하는 것이 중요합니다.
'aws' 카테고리의 다른 글
RDS → s3 백업 (0) | 2021.03.29 |
---|---|
Elastisearch 를 사용 VPC FLOWLOGS (0) | 2021.03.29 |
CloudWatch / SSM Agent (0) | 2021.03.29 |
lb -acm 인증서를 이용한 접속 (0) | 2021.02.09 |
route 53 도메인 연결 (0) | 2021.02.09 |