본문 바로가기

AWS Parameter store 사용하기

애플리케이션에는 외부에 노출되어서는 안 되는 비밀 값들이 있습니다. 예를 들면, 데이터베이스 접속 정보, 외부 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