こんばんは、小寺です。
AWS Systems Manager パラメータストアがクロスアカウントをサポートしました。
https://aws.amazon.com/about-aws/whats-new/2024/02/aws-systems-manager-parameter-store-cross-account-sharing/

AWS Systems Manager パラメータストアについて振り返る

AWS Systems Manager パラメータストア利用されていますか?どのようなときに活用できるサービスなのか簡単に振り返りたいと思います。
パラメータストアはAWS Systems Managerの一機能です。設定データ管理と機密管理のための安全な階層型ストレージです。
保存できる値は以下です。
・パスワード
・データベース文字列
・AMI ID
・ライセンスコード

パラメータの違い

実は、パラメータストアにはスタンダードパラメータとアドバンストパラメータの2つが含まれています。スタンダードパラメータがデフォルトの仕様です。

スタンダードアドバンスト
パラメータの合計数 10,000 100,000
パラメータ値の最大サイズ 4K8K
パラメータポリシー 利用不可利用可能
利用料無料追加費用あり

アップデート内容

PutResourcePolicy APIを使って他のAWSアカウントとパラメータストアの共有を行うことが必要でした。今回のアップデートにより、アドバンストパラメータを他の AWS アカウントと共有できるようになり、設定データを一元管理できるようになります。

一元管理には、AWS Resource Access Manager(RAM)に追加して利用することができます。

確認してみる

前提条件

・パラメータを共有するには、対象パラメータがAWS アカウント内にあること。他アカウントから共有されたパラメータの共有はできない
・パラメータを共有するには、パラメータがアドバンスト パラメータ層にあること。
・SecureString パラメータを共有するには、顧客管理のキーでの暗号化が必要なので、KMSを利用すること。
・パラメータを組織または AWS Organizations の組織単位と共有するには、AWS Organizations との共有を有効にすること。

パラメータストア共有イメージ

パラメータストアをクロスアカウントで共有するイメージです。パラメータを共有するには、パラメータをRAMに追加しておきます。AWS RAM コンソールまたは AWS CLI を使用して、所有するパラメータを他アカウントへ共有できます。

やってみた

最初にKMSで カスタマー管理型のキー を作成しておきます。

パラメータストアから新規にパラメータを作成します。詳細(アドバンスト)しか共有できないため、注意します。※KMSキーは最初に作成しておいたものを選びます。

※パラメータ名の文字列では最後に「/(スラッシュ)」指定ができないため、作成時に変更しています。

パラメータの有効期限をオプションで指定することができます。コストがかかるので、ここでは、次の日を指定しています。

無事にパラメータが作成できました。

作成したキーを他アカウントに共有するために「シェアリング」タブを確認してみます。

KMSを共有する設定をしていなかったので、今回はKMS側で特定アカウントに共有ができるように設定を行いました。その上でRAMから共有を行います。

今回は組織のアカウント内共有ではなく、特定アカウント指定で共有を行いました。

共有先のアカウントで確認をしてみます。RAMを確認してみます。1リソースが自分と共有されていることが確認できます。「リソース共有を承認」をクリックして完了です。

招待を承諾後にリソースへアクセスできるようになります。

共有された側から削除しようとすると、エラーになります。

共有した元のアカウントで削除を行いました!

共有したパラメータへのアクセスにサポートされている内容です。

  • CloudFormationの動的参照
  • CloudFormation テンプレートパラメータ
  • AWS Parameters and Secrets Lambda Extension
  • EC2の起動テンプレート
  • AMIからインスタンスを作成するためのEC2 RunInstancesコマンドでのImageIDの値
  • Systems Manager Run Commandのコマンド内のパラメータ
  • Systems Manager Automationのランブックにおけるパラメータ値の取得

共有されたアカウントにかかるコスト

アカウントNumber of calls費用
Account A (共有元)10,000 callsアドバンストパラメータ: USD 0.0510,000 calls to MyAdvancedParameter: USD 0.05Total: USD 0.10
Account B (共有先)20,000 calls20,000 calls to MyAdvancedParameter: USD 0.10 Total: USD 0.10
Account C (共有先)30,000 calls30,000 calls to MyAdvancedParameter: USD 0.15 Total: USD 0.15

今日は、RAMを使ってSSMパラメータを他アカウントへ共有する方法を試してみました。