Jenkins에서 AWS Parameter Store 사용하기(withAWSParameterStore)

ssongkim·2022년 3월 23일
0

jenkins

목록 보기
4/7
post-thumbnail

AWS Parameter Store

AWS Systems Manager의 기능인 Parameter Store는 구성 데이터 관리 및 암호 관리를 위한 안전한 계층적 스토리지를 제공합니다. 암호, 데이터베이스 문자열, 라이선스 코드와 같은 데이터를 파라미터 값으로 저장할 수 있습니다. 값을 일반 텍스트 또는 암호화된 데이터로 저장할 수 있습니다. 파라미터를 생성할 때 지정한 고유 이름을 사용하여 스크립트, 명령, SSM 문서, 구성 및 자동화 워크플로에서 Systems Manager 파라미터를 참조할 수 있습니다.

젠킨스를 통해 CI / CD를 구축하며 스프링에 jwt secret key와 firebase admin sdk 정보를 입력해주어야 할 일이 생겼고 AWS Parameter Store을 사용해보았습니다.

과정

전체적인 과정을 먼저 나열하면 다음과 같습니다.

순서과정
1aws IAM 키방식 계정 생성 및 권한 설정
2aws KMS 대칭키 생성
3AWS Parameter Store 파라미터 생성
4jenkins AWS Parameter Store Build Wrapper plugin 설치
5젠킨스에 aws Credentials 등록
6파이프라인 작성

1. AWS IAM 키방식 계정 생성 및 권한 설정

먼저 젠킨스에서 AWS Parameter Store에 접근할 수 있도록 계정을 생성하고 적절한 권한을 추가해주어야 합니다. Access KeySecret Access Key를 제공하는 키 방식으로 계정을 생성하고

파라미터 스토어에 접근하기 위해서는 AmazonSSMFullAccess를 추가해주세요.

2. AWS KMS 대칭키 생성

만약 해당 파라미터를 암호화해서 관리하고 싶다면 KMS 클라우드 서비스를 통해 대칭키를 먼저 생성해주어야 합니다. (유료입니다.)

파라미터를 암호화해서 관리하고 싶지 않다면(무료로 쓰고 싶다면) 2번과 3번과정을 건너띄어주세요.

대칭키로 생성해주어야 합니다.

대칭키 생성 과정에서 관리자를 등록하라고 하는데 1번 과정에서 생성한 계정을 해당 대칭키 관리자로 등록합니다.

3. 파라미터 스토어 값 생성

이제 여러 애플리케이션에서 참조할 파라미터를 생성해줄 차례입니다.

생성버튼을 누릅니다.

3-1. 경로 지정


파라미터 경로를 지정해줍니다. 저는 /{project_name}/{type}/{profile}/{key}의 형태로 파라미터 경로를 지정해주었습니다.
만약 프로파일이 test인지, dev, prod에 따라 해당하는 파라미터를 지정하게 하고싶다면 이렇게 해줍니다.

3-2 암호화 유무 지정

파라미터값의 암호화 유무에 따라 이부분에서 살짝 갈립니다. 암호화를 하지 않고 무료로 사용하고 싶다면 유형에서 문자열을 선택하고 암호화하고자 한다면 보안 문자열을 선택합니다.

문자열을 선택한 경우, text 부분에 해당 파라미터 경로에 해당하는 value를 입력하면 됩니다.

보안 문자열을 선택한 경우

KMS 키 소스에서 다른 계정을 선택하고, KMS 키 ID부분에는 암호화하고자 하는 KMS 대칭키의 ARN을 복사 붙여넣기 해줍니다. ARN은 AWS KMS로 가면 확인 가능합니다.

4. jenkins AWS Parameter Store Build Wrapper plugin 설치

withAWSParameterStore를 사용하기 위해서는 젠킨스에 AWS Parameter Store Build Wrapper plugin를 설치해주어야 합니다.

젠킨스 관리 -> 플러그인 관리로 이동하여 이 플러그인을 설치합니다.

5. 젠킨스에 aws Credentials 등록

젠킨스는 1번 단계에서 등록한 AWS 계정을 이용해 파라미터 스토어에 접근합니다. 이를 위해 aws Credentials를 등록합니다.

젠킨스 관리 -> Manage Credentials 이동, Add Credentials 클릭

이와 같이 1번 단계에서 aws 계정 생성 시 발급받았던 액세스 키와 시크릿 액세스 키를 입력하고 ID를 지정하여 젠킨스에서 aws 파라미터 스토어에 접근할 수 있게 되었습니다.

6. 파이프라인 작성

stage('create secret file by aws parameter store') {
		steps {
			dir('src/main/resources/secrets') {
				withAWSParameterStore(credentialsId: 'aws-all-knu',
              				path: "/all-knu/jwt/${env.PROFILE}",
              				naming: 'basename',
              				regionName: 'ap-northeast-2') {
                               writeFile file: 'jwt-secrets.properties', text: "${env.KEY}"
           		   }		
			}
          }
	   post {
		success {
		   echo 'success create secret file'
		}
		failure {
		   slackSend (channel: '#jenkins-notification', color: '#FF0000', message: "${env.CONTAINER_NAME} CI / CD 파이프라인 구동 실패, 젠킨스 확인 해주세요")
		   error 'fail create secret file'
		}
	   }
	}

파라미터 경로를 입력하고 reginName 꼭 지정해주셔야 합니다!
env.{parameter_key} 꼴로 접근이 가능합니다.

옵션에 대한 자세한 설명은 https://www.jenkins.io/doc/pipeline/steps/aws-parameter-store/ 에서 확인해주세요.

profile
鈍筆勝聰✍️

0개의 댓글