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 ポリシーで復号権限を制御します。パラメータのバージョン管理で変更履歴を追跡し、問題発生時に以前のバージョンにロールバックできます。パラメータポリシーで有効期限を設定し、期限切れのパラメータを自動通知します。 設定管理の運用ノウハウを深めるには、専門書籍 (Amazon)が役立ちます。

Parameter Store の料金

Standard パラメータは無料で、アカウントあたり最大 10,000 パラメータを保存できます。Advanced パラメータは 1 パラメータあたり月額約 0.05 ドルで、最大 8KB のサイズ、パラメータポリシー、100,000 パラメータの上限に対応します。API コールは Standard で無料、Advanced の高スループットオプションで 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 コール数を抑えます。CloudFormationCDK ではテンプレート内でパラメータを動的に参照でき、デプロイ時に最新の設定値を埋め込めます。ただし、SecureString をテンプレートの出力やログに展開してしまわないよう、参照箇所の扱いには注意します。アクセス頻度が高い場合は、Advanced パラメータの高スループット設定を検討します。

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

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

まとめ

Parameter Store はアプリケーション設定と秘密情報を階層的に管理するサービスです。Lambda エクステンションでキャッシュを活用した低レイテンシの設定取得を実現し、ECS タスク定義の secrets セクションでコンテナに安全に注入します。Standard パラメータは無料で 10,000 件まで保存でき、Secrets Manager と比較して自動ローテーションが不要な設定値のコスト効率に優れています。