brunch

You can make anything
by writing

- C.S.Lewis -

by Master Seo Jul 24. 2020

418.  S3에 데이터 넣기

 S3  이해하기

AWS에서 S3 에 데이터 넣는 방법은 4가지가 있다.


1.  Access-key 계정을 만들어  S3 권한을  부여해서 데이터를 넣는법  (access-key)

     Access-key , Secret-Key를 사용한다.

2.  S3  버킷에 정책을 넣어 사용자를 관리하는 법  (access-key)

     Access-key는 발급하나 권한을 주지 않는다.

3.  역할(정책)을 만들어  EC2에 적용하여  EC2 에서 S3 에 데이터를 넣는법

    Access-key 없음.

4. 콘솔계정에    S3 권한을  부여해서 데이터를 넣는법

    Access-key 없음.






AWS에서 S3 에 데이터 넣는 경로는 2가지 이다.


1  Public으로 데이터는 넣는 방법





2.  VPC  안에 서버를 이용해 Private로 데이터를 넣는 방법




1)  서버 -----  IGW ----- S3 경로



2)  서버 ---------    VPC Endpoint  --------- S3

   VPC Endpoint  사용이 필수다.







목표


EC2에서   S3로 데이터 올려 보자.



<0> 구성

<1>  EC2 접속

<2>  액세스 키로   S3  접속하기

<3> access key 제거하고 데이터 올리는법

<4>  특정버킷만 사용 가능하게  제한하기

<5>  VPC endpint에서만    S3  버킷  허용되는지 확인해보기

<6>  VPC endpint  적용하여    S3  버킷에 데이터 올리기 



<0> 구성

사용자-------- EC2 (node로 웹사이트)  -------------- S3


1. 사전 작업


1) S3 버킷 작업  

seo-up-s3

2) S3 endpoint  설정하기

vpc > endpoint  >  S3 

3) EC2 생성,  node  설정하기




<1>  EC2 접속

ssh 로  public ip로 서버 접속하기



<2>  액세스 키로   S3  접속하기


EC2 접속 > pwd

node 설치



1  수정하기


vi server.js

//configure the AWS credentials used for file upload
AWS.config.update({
accessKeyId: "ENTER ACCESS KEY",
secretAccessKey: "ENTER SECRET ACCESS KEY"

});


bucket: 'ENTER BUCKET NAME'



2

// 80으로 오면  3001로 전달

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3001


npm start


3

공인 IP로 웹 접속해보기


4

웹사이트에서  S3로  이미지 파일 올리기

// EC2 -> IGW 를 통해   S3 로 접속하는 경우이다.


5

S3버킷에 올린 파일이 있는지 확인하기

// 웹서버에 액세스 키와 보안키가 올라가 있는 경우이다.

보안에 취약하니 제거하는 방법으로 운영해보자.




<3> access key 제거하고 데이터 올리는법


1

 vi server.js

애세스 키와 보안키를 //로  주석 문 처리하라


2

파일을 업로드해보라.

업로드 실패


3

파일 업로드 가능한 역할 만들기

EC2에 역할 연결하기


4

파일을 업로드해보라.

업로드 성공




<4>  특정버킷만 사용 가능하게  제한하기


1

파일 리스트만  보는 게 가능한 역할 만들기

EC2에 역할 연결하기


공인 IP로 웹 접속해 파일 올리기

오류남


2

aws s3 ls

잘 됨.


3

aws s3 cp mytestfile.txt s3://bucket name/

오류남


4

AWS 계정 ID와  역할  ID 확인하는 명령어

aws sts get-caller-identity


5

서비스 > S3  >  버킷 ARN  복사

arn:aws:s3:::lab-d3101fe0


6

정책 편집기 사용해보기

https://awspolicygen.s3.amazonaws.com/policygen.html


s3 Bucket policy

Principal  에  S3listroleARN   입력 

arn:aws:iam::830396134372:role/qls-16953643-9ea78f24ed3e10f-InstanceIamRoleS3List-5YJEA9CG14HN


Actions 

Putobject

PputobjectAcl

ARN (버킷  ARN) 

arn:aws:s3:::lab-d3101fe0,arn:aws:s3:::lab-d3101fe0/*


ADD Condition 

stringlike

key

aws:userid

values   // AROA ID , 

AROA4CV3XOPSGL6ZTZCW5:i-0d7a45313781a4f62


> Add statement  > Generate policy  > 정책이 만들어진다



// 참고 AROA role ID 

https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids



7

서비스 >  s3  > 퍼미션   >  버킷 정책

만들어진 정책 입력


10

ec2에 ssh 로 로그인

npm  start





<5>  VPC endpint에서만    S3  버킷  허용되는지 확인해보기


1

서비스 >   VPC >  앤드포인트>  라우팅 테이블   >  라우팅 테이블 관리 클릭 >  subnet1  체크 지우기  

> 수정 라우팅 테이블


2

테이터 올려 보기




감사합니다.

매거진의 이전글 417. Config로 보안 그룹 모니터링하기

매거진 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari