AWS Systems Manager 의 Parameter Store가 교차 계정을 지원하게 되었습니다

AWS SSM Parameter Store에 추가된 Cross Account 기능에 대해 기재한 글입니다
2024.03.19

안녕하세요 클래스메소드의 수재입니다. 24년 2월 22일 부터 AWS Systems Manager(이하 AWS SSM) 의 Parameter Store가 교차 계정을 지원하게 되었습니다.
해당 내용에 대해 간략하게 알아보도록 하겠습니다.

SSM Parameter Store란?

Parameter Store 기능에 대해서 간략히 알아보자면 AWS SSM의 한 기능으로 파라미터를 키-값 쌍으로 저장하여 활용할 수 있도록 지원해주는 서비스입니다.
저장한 파라미터는 AWS SSM 의 다른 기능에서 사용할 수 있으며 AWS SSM 뿐만 아니라 다른 AWS 서비스에서도 사용이 가능합니다.
각 서비스에서 파라미터를 직접 기입하지 않고 Parameter Store에서 불러오기 때문에 보안적인 측면으로도 강화가 됩니다.

Parameter Store의 이점은 다음과 같습니다.(공식 문서 참조)

  • 안전하고 확장 가능한 호스팅 방식 암호 관리 서비스를 사용합니다(관리할 서버가 없음).
  • 데이터를 코드와 격리하여 보안 태세를 개선합니다.
  • 구성 데이터 및 암호화된 문자열을 계층으로 저장하고 버전을 추적합니다.
  • 세분화된 수준에서 액세스를 제어하고 감사합니다.
  • Parameter Store는 AWS 리전의 여러 가용 영역에서 호스팅되기 때문에 파라미터를 안정적으로 저장합니다.

신기능 내용

AWS Systems Manager의 기능인 Parameter Store에서 이제 AWS 계정과 고급 티어 파라미터를 공유할 수 있으므로, 구성 데이터를 중앙에서 관리할 수 있습니다. (중략) 이제 계정 간에 데이터를 수동으로 복제하고 동기화하는 대신, 액세스가 필요한 다른 계정과 파라미터를 공유하여 구성 데이터에 대한 단일 정보 소스를 유지할 수 있습니다. - 공식 아나운스

기존에는 저장한 계정에서만 파라미터를 이용할 수 있었지만 기능이 추가되어 AWS Resource Access Manager(이하 AWS RAM)에 공유할 파라미터를 등록하면 다른 특정 계정에 공유 및 권한 관리가 가능하게 되었습니다.
덕분에 일관된 값을 중앙에서 관리 유지 할 수 있게 되기 때문에 효율적인 관리가 가능합니다.

공식 문서에는 다음과 같은 유저에게 공유할 수 있는 것으로 기재되어 있습니다.

  • Specific AWS accounts inside or outside of its organization in AWS Organizations
  • An organizational unit inside its organization in AWS Organizations
  • Its entire organization in AWS Organizations

굳이 같은 AWS Organization 에 소속된 유저 뿐만 아니라 Organization 밖의 일반 유저를 대상으로도 공유가 가능합니다.

주의 사항

계정에서 파라미터를 공유하려면 먼저 다음 전제 조건을 충족해야 합니다.

  • 본인이 소유한 파라미터만 공유할 수 있습니다. 자신에게 공유된 파라미터를 다른 계정에 공유하는 것은 불가능합니다.
  • 매개변수를 공유하려면 고급 매개변수 계층이어야 합니다.
    • 따라서 기존에 사용하던 표준 매개변수에는 적용할 수 없으며 적용하기 위해서는 고급 매개변수로 변경해야 합니다.
  • 파라미터를 공유하려면 고객 관리형 키로 암호화해합니다.
    • AWS 관리형 키는 공유할 수 없습니다. 대신 고객 관리형 키를 사용하도록 기본 AWS 관리형 키로 암호화된 매개변수를 업데이트할 수 있습니다. AWS KMS 키 정의는 AWS Key Management Service 개발자 안내서 의 AWS KMS 개념을 참조하십시오.

AWS Organizations의 조직 또는 조직 단위와 파라미터를 공유하려면 AWS Organizations와의 공유를 활성화해야 합니다. 자세한 내용은 AWS RAM 사용 설명서 의 AWS 조직과 공유 활성화를 참조하십시오.

사용 방법

공유하기

SSM ParameterStore 는 다음과 같이 만들어 줍니다.
위에 기재된 대로 Tier는 Advanced(고급 매개변수)로 설정합니다.
암호화를 위한 KMS는 aws의 키가 아닌 고객 관리형 키를 설정합니다.

파라미터가 만들어졌다면 AWS Resource Access Manager(RAM)에서 리소스 공유를 작성합니다.
우선 공유할 파라미터를 지정합니다.

이후 공유 권한을 지정합니다.
파라미터가 여러 버전이 있다면 공유할 버전을 선택하고, 현재 버전 뿐만 아니라 다른 버전의 공유도 필요하다면 역할에서 history도 확인할 수 있는 권한을 필요에 따라 부여합니다.

그리고 공유할 주체를 선택합니다.
이번 글에서는 특정 어카운트를 대상으로 공유하겠습니다.
필요에 따라 AWS IAM 역할 등을 지정할 수도 있습니다.

이후 설정한 내용이 문제 없는지 확인한 후 리소스 공유를 생성합니다.

공유 받은 측에서 사용하기

우선 RAM에서 나와 공유 탭을 보면 초대가 온 것을 확인할 수 있습니다.
해당 초대를 클릭하여 리소스 공유 수락을 합니다.

공유받은 파라미터를 cli에서 확인하려면 다음과 같은 커맨드를 입력합니다.

aws ssm get-parameter --name {공유 받은 파라미터 arn}

CloudFormation에서 사용할 때는 다음과 같이 사용합니다.

Parameters:
  ProjectName:
    Type: AWS::SSM::Parameter::Value<String>
    Default: "{공유 받은 파라미터 arn}"

마무리

이번에 SSM Parameter Store에 추가된 cross account 기능에 대하여 알아보았습니다.
이를 통해 좀 더 전체 환경에 대해 중앙 관리식으로 관리하기가 편해진 것 같네요.

긴 글 읽어주셔서 감사합니다.
오탈자 및 내용 피드백은 must01940 지메일로 보내주시면 감사합니다.