AWS Systems Manager Parameter Store で管理する設定と秘密情報 - 階層構造と暗号化

Parameter Store による設定値と秘密情報の管理、階層構造の設計、Secrets Manager との使い分けを解説します。

Parameter Store の概要

Parameter Store は設定データや秘密情報を階層的に管理するキーバリューストアです。Secrets Manager が認証情報の自動ローテーションなどの機能を備えるのに対し、Parameter Store はアプリケーション設定全般 (機能フラグ、エンドポイント URL、閾値) と秘密情報の両方を管理します。Standard パラメーターは無料で最大 10,000 個まで作成できます。

階層構造と Secrets Manager との使い分け

パラメーター名にパス区切り (/) を使用して階層構造を構築します。/myapp/prod/db/host、/myapp/prod/db/password のように環境とコンポーネントで整理し、GetParametersByPath で特定パス配下のパラメーターを一括取得します。Secrets Manager との使い分けは、自動ローテーションが必要な DB 認証情報は Secrets Manager、それ以外の設定値と秘密情報は Parameter Store が向いています。Parameter Store は Secrets Manager の参照 (aws:secretsmanager:) もサポートし、両サービスを統合的に利用できます。

Lambda と ECS との統合

Lambda 関数から Parameter Store のパラメーターを取得するには、 AWS Parameters and Secrets Lambda Extension を使用します。エクステンションがパラメーターをローカルにキャッシュするので、Lambda の実行ごとの API の呼び出しが減ります。 ECS タスク定義の secrets セクションで Parameter Store のパラメーターを参照し、コンテナの環境変数として注入します。 SecureString パラメーターは KMS で暗号化され、 IAM ポリシーで復号権限を制御します。パラメーターのバージョン管理で変更履歴を追跡し、問題発生時に以前のバージョンにロールバックできます。パラメータポリシーで有効期限を設定し、期限切れのパラメーターを自動通知します。

Parameter Store の料金

Standard パラメーターは無料で、アカウントとリージョンごとに最大 10,000 パラメーターを保存できます。Advanced パラメーターは 1 パラメーターあたり月額約 0.05 ドルで、最大 8KB のサイズ、パラメータポリシー、100,000 パラメーターの上限に対応します (2026 年 8 月時点)。API コールは、高スループットの設定 (パラメーターの階層とは別の設定) では 10,000 リクエストあたり約 0.05 ドルです。Secrets Manager (月額 0.40 ドル/シークレット) と比較して、自動ローテーションが不要な設定値には Parameter Store の方が費用を抑えやすくなります。

IAM とパスベースのアクセス制御

Parameter Store の権限は、パラメーター名の階層を活かして設計します。IAM ポリシーのリソース指定で /myapp/prod/* のようにパスを限定すると、本番環境のパラメーターには本番用のロールだけがアクセスできるよう制御できます。SecureString の復号には、パラメーターの取得権限とは別に、暗号化に使った KMS キーの復号権限が必要です。アプリケーションごとに専用の KMS キーを使い分け、キーポリシーと IAM ポリシーの両面で最小権限にすると、秘密情報が意図せず読み取られるリスクの低減につながります。

設定変更の安全な運用

パラメーターは更新のたびにバージョン番号が自動採番され、過去の値を参照したり以前のバージョンに戻したりできます。本番設定の変更は、CI/CD パイプラインからコードレビューを経て反映する運用にすると、手作業による事故を減らせます。パラメーターの変更は EventBridge のイベントとして検知できるため、特定の設定が書き換わったときに通知を送ったり、関連する処理を自動で起動したりする仕組みを組めます。重要な設定はバージョン番号を明示して参照し、意図しないタイミングで値が切り替わらないようにする方法もあります。

アプリからの取得パターンと落とし穴

アプリケーションから頻繁にパラメーターを取得する場合は、API のスロットリングに注意が必要です。起動時に一度だけ読み込んでメモリにキャッシュする、複数のパラメーターは GetParameters でまとめて取得する、といった工夫で API コール数を抑えます。CloudFormation や CDK ではテンプレート内でパラメーターを動的に参照でき、デプロイ時に最新の設定値を埋め込めます。ただし、SecureString をテンプレートの出力やログに展開してしまわないよう、参照箇所の扱いには注意します。アクセス頻度が高い場合は、高スループットの設定 (パラメーターの階層とは別の設定) を検討します。

マルチアカウント / マルチリージョンでの共有

複数アカウントや複数リージョンで同じ設定を使う場合、Parameter Store はリージョンごとに独立しているため、各リージョンに同じパラメーターを配置するか、共有用アカウントから読み取る設計にします。組織全体で共通の設定を配布したいときは、CI/CD で各環境へ同期する仕組みを用意すると、環境間で設定がずれるドリフトが起きにくくなります。Advanced パラメーターは 1 件あたりのサイズ上限が大きいため、小さな JSON 設定をまとめて 1 つのパラメーターで管理する方法もあります。値が大きくなりすぎる場合は、設定の分割や S3 との併用を検討します。

まとめ

Parameter Store はアプリケーション設定と秘密情報を階層的に管理するサービスです。Lambda エクステンションのキャッシュで設定の取得を速くし、ECS タスク定義の secrets セクションでコンテナに渡せます。Standard パラメーターは無料で 10,000 件まで保存でき、Secrets Manager と比較して自動ローテーションが不要な設定値では費用を抑えやすくなります。

参考資料 (AWS 公式)

本ページの一次情報は AWS 公式サイトと公式ドキュメントです。最新の仕様と料金は次の公式ページで確認できます。

本ページと公式ドキュメントの記述が食い違う場合は、公式ドキュメントを正としてください。

共有する