본문 바로가기

서버

aws ec2) application.properties에서 OS환경변수사용하기(secret key 안전하게 사용)

728x90

IAM 사용자로 잡은 

계정(access key, secret key)를 application.properties에 직접 넣으면

보안상 문제가 생겨서 보호해야한다.

 

보호하는 방법은 다양하게 있는 것 같은데

나는 OS에 저장해서 사용하는 방법을 선택했다.

 

내 ec2는 ubuntu 이고

ubuntu에 먼저 환경변수에 저장한 뒤에 

application.properties에 환경변수명을 잡고

배포하면 된다.

 

 


 

putty로 ec2에 접속해

다음 명령어를 통해

OS 환경변수 설정허자

 

echo 'export access_key=액세스키값' >> ~/.bashrc
echo 'export secret_key=시크릿키값' >> ~/.bashrc

source ~/.bashrc

echo $access_key // 나오면 잘된거임
echo $secret_key // 나오면 잘된거임

 

 


spring boot의 

application properties에 

만들어놓은 OS 환경변수를

넣어줘야한다. 

 

application yml은 그냥 써도 되는데

properties는 오류가 떠서 기본값을 설정해줘야함!

 

 

 

cloud.aws.s3.bucket=버켓이름
cloud.aws.region.static=위치정보
cloud.aws.region.auto=false
cloud.aws.stack.auto=false
cloud.aws.credentials.access-key=${access_key:test} //요기
cloud.aws.credentials.secret-key=${secret_key:test} //요기

 

${secret_key} << 요건 OS 환경변수 설정 변수값이다. 

 

yml은 저것만 넣어도 되는데

 

properties는 알 수 없는 값이라고mvn build가 안된다.

 

그래서 기본값을 뒤에 :test 넣어주었다.

 

test라는 값은 별 의미없이 오류나서 넣은거다.

 

참고할사람은 다음 사이트 보고 수정해도됨https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config

 

Core Features

In the absence of an Executor bean in the context, Spring Boot auto-configures an AsyncTaskExecutor. When virtual threads are enabled (using Java 21+ and spring.threads.virtual.enabled set to true) this will be a SimpleAsyncTaskExecutor that uses virtual t

docs.spring.io

 


요렇게 설정하면

gitignore따로 안해줘도

 

그냥 올려도 됨