본문 바로가기

서버

aws ec2) application.properties 에서 accesskey 보호하는 방법

728x90

3일 동안 삽질함..

아직 완벽히 해결된 게 없다. 

 

aws ec2에서 s3로 파일업로드를 할 때

 

s3의 접근권한을 확인하고 객체를 얻어서

이미지를 업로드한다. 

(요건 뭐 검색하면 다 나옴)

 

문제는 accesskey, secretkey는 

보호되어야 된다. 

 

키가 노출되어

3자가 파일업로드를 대량 해버리면

요금 폭탄을 맞는다.

 

보호하는 방법은 정말 다양했다.

 


1. 리눅스 OS(배포 OS)에 환경변수로 추가하여 properties에서 사용하기

-> placeholder error 발생으로 실패(properties에 ${ 변수명 } 요걸 인식못하면 해당 에러발생..)

 

2. 톰캣 환경변수 

-> /bin/setenv.sh 파일에서 변수명 설정하여 사용 (시도안해봄)

 

3. catailna.properties 파일 수정

-> " standard or common configuration" 톰캣 공유 데이터가 들어가있음 (시도안함)

 

4. application.properties, env.properties(키값 있는 파일, 대신 git엔 안올림)

-> properties 파일을 두개 두어 하나는 gitignore을 걸어서 보호할 수 있게 함

-> 적용한 방법

-> placeholder문제로 시간이 걸림..

 

 


설명시작 >>>>>>>>>>>>>>>>>>>>>>> 

 

 

키값 넣을 파일경로는 다음과 같다.

 

 

 

application.properties에 

"나 다른 파일 config에서값 쓸거야~"

라고 얘기해줘야함 

 

그것이 바로

 

optional은 

"해당 파일에 키값이 있으면 그걸로 써~"

라는 뜻이다

 

 

위 value 값을

이상하게 넣어놨다.

 

그냥 의미없는 데이터다.

 

실제로 value가 있는

env.properties 값을 보자

 

 

실제 데이터가 있고

이 데이터가

application.properties에 불러와져서

의미없는 데이터에 덮어쓰기가 된다.

 

 

사용할 때는

properties환경변수로 

불러와 사용하면 됨!

 

 

 


이제 access key , secretkey 분리하는건 됐고...

gitignore을 통해

push할 때

 

env.properties(secretkey있는 파일)은 

올라가지않게 해보자

 


요래하고 올리면됨!