애플리케이션에는 외부에 노출되어서는 안 되는 비밀 값들이 있습니다. 예를 들면, 데이터베이스 접속 정보, 외부 API 서비스를 이용하기 위한 비밀 액세스 키 등이 있습니다. 이런 값들은 소스코드와 함께 서버에서 사용되지만 소스코드보다 훨씬 더 안전하게 관리되어야 합니다. 이런 값들을 관리하는 다양한 방법 중 AWS System Manager의 Parameter Store에 대해 소개하겠습니다.
파라미터 스토어의 특징으로는
- 무료다.
- 키-값 쌍으로 값을 저장한다.
- KMS를 이용해 암호화된 값을 저장할 수 있다.
- IAM을 이용해 일부 사용자만 접근할 수 있도록 설정할 수 있다.
- 값에 대한 변경 이력까지 저장하고 있다.
- 사용 방법이 간단하며 관리가 쉽다.
파라미터 생성
Systems Manager -> Parameter store
에서 생성할 수 있습니다.
String
파라미터 생성은 정말 간단합니다. Name, Value, Type만 설정하면 되며 Name은 슬래시(/)를 사용하여 계층 구조를 이루는 것을 추천합니다. 이유는
수십 또는 수백 개 파라미터를 하나의 집합 목록으로 관리하면 많은 시간이 들고 오류에 취약합니다. 작업에 적합한 파라미터를 식별하기가 어려울 수도 있습니다. 즉, 실수로 잘못된 파라미터를 사용하거나 동일한 구성 데이터를 사용하는 여러 파라미터를 생성할 수 있다는 뜻입니다.
SecureString
중요한 데이터를 저장할 때는 SecureString
사용을 권장합니다. SecureString
을 이용하면 Parameter Store에서 AWS Key Management Service(KMS) Customer Master Key(CMK)를 사용하여 파라미터 값을 암호화합니다.
SecureString
파라미터 생성 시 Parameter Store에서 비용이 부과되지 않지만 AWS Key Management Service 암호화 사용에 대한 요금이 적용됩니다. 자세한 내용은 AWS Key Management Service 요금을 참조하세요.
CLI로 파라미터 조회
제대로 되는지 CLI로 조회해보겠습니다.
$ aws ssm get-parameter --name /test/hello/world
{
"Parameter": {
"Name": "/test/hello/world",
"Type": "String",
"Value": "hello world",
"Version": 1,
"LastModifiedDate": "2020-05-24T21:47:44.206000+09:00",
"ARN": "arn:aws:ssm:ap-northeast-2:618247751127:parameter/test/hello/world"
}
}
$ aws ssm get-parameter --name /test/hello/bye
{
"Parameter": {
"Name": "/test/hello/bye",
"Type": "SecureString",
"Value": "AQICAHjWAbi++omTbcbFUtUhlV/k3eKCRIs/5FwE3fs6fhDCEAFFo4fVeNYGbnreVizCeXdaAAAAZjBkBgkqhkiG9w0BBwagVzBVAgEAMFAGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMgCymiGPq7coeACzCAgEQgCOSiQW++f7n3nv5JeKe9dCzipp7OA1BPtZLMb/aJFN7eC/gzg==",
"Version": 1,
"LastModifiedDate": "2020-05-24T21:48:13.463000+09:00",
"ARN": "arn:aws:ssm:ap-northeast-2:618247751127:parameter/test/hello/bye"
}
}
마무리
파라미터 스토어를 이용하면 파라미터를 무료로 쉽게 관리할 수 있다는 장점이 있습니다.
다음에는 spring에서 parameter store를 사용하는 방법을 소개하겠습니다.
References
'CI-CD' 카테고리의 다른 글
Github Action 을 이용한 CI 구축하기 (0) | 2020.05.10 |
---|