はじめに
SAP(AWS Certified Solutions Architect - Professional)の対策をしていると、こんな記述に出くわします。
「Systems Manager パラメータストアには、自動ローテーション機能がない」
丸暗記しても試験が終わればすぐ忘れる。なぜなら「なぜそうなのか」という理由が腑に落ちていないからです。
この記事では、「そもそもパラメータストアって何者なんだっけ?」という基礎から整理したうえで、自動ローテーション機能がない本質的な理由を深掘りします。
目次
- AWS Systems Manager パラメータストアとは
- 主な機能
- パラメータの種類と役割
- ユースケース
- なぜ自動ローテーション機能がないのか?
- 自動ローテーションが必要なら → AWS Secrets Manager
- まとめ:サービスの本質的な目的で使い分ける
1. AWS Systems Manager パラメータストアとは
AWS公式ドキュメントでは、次のように定義されています。
Parameter Store は、設定データ管理と機密管理のための安全な階層型ストレージを提供します。パスワード、データベース文字列、Amazon Machine Image (AMI) ID、ライセンスコードなどのデータをパラメータ値として保存することができます。
一言で言えば、**「設定値や機密情報を安全に一元管理するための保管庫」**です。
パラメータの作成時に指定した一意の名前を使って、スクリプト・コマンド・SSMドキュメント・オートメーションワークフローから安全に参照できます。
2. 主な機能
AWS公式ドキュメントに記載されている主な機能は以下のとおりです。
| 機能 | 説明 |
|---|---|
| 変更通知 | パラメータが変更された際に通知を設定し、自動化アクションを呼び出せる |
| パラメータの整理 | タグで分類・識別(環境別、部門別など) |
| ラベルのバージョン管理 | パラメータのバージョンにエイリアス(ラベル)を付けて管理できる |
| データ検証 | EC2 AMI ID などのパラメータを作成した際、リソースの存在・権限を自動検証 |
| シークレットの参照 | AWS Secrets Manager と統合し、Secrets Manager のシークレットを経由して取得できる |
| クロスアカウント共有 | 1つのアカウントで一元管理し、他のアカウントとパラメータを共有できる |
| 他のAWSサービスからのアクセス | Lambda・ECS・CodePipeline・CloudFormation など多数のサービスから直接参照可能 |
出典:AWS Systems Manager Parameter Store
3. パラメータの種類と役割
パラメータストアは3種類のパラメータをサポートしています。
String(文字列)
通常のテキスト文字列を格納します。
例)abc123 / ami-12345abcde / Example Corp
StringList(文字列リスト)
カンマ区切りの値リストを格納します。
例)Monday,Wednesday,Friday
例)CSV,TSV,CLF,ELF,JSON
SecureString(暗号化文字列)
AWS KMS(Key Management Service)で暗号化される機密データです。パスワード、APIキー、ライセンスキーなど、プレーンテキストで扱いたくない情報に使います。
SecureString パラメータの値は、セキュアな方法で保存および参照する必要がある機密データです。
String や StringList に機密データを保存しないでください。機密データを扱う場合は、必ず SecureString を使用します。
4. ユースケース
パラメータストアは以下のような場面に適しています。
設定データを一元管理したいとき
- 環境変数(dev / stg / prod)をパラメータ階層で整理し、各環境のリソースから参照する
- AMI ID や VPC ID など、インフラの構成値をコードから切り離して管理する
ソフトウェア開発者が認証情報を安全に扱いたいとき
- データベース接続文字列やAPIエンドポイントをコードにハードコーディングせず、パラメータストア経由で参照する
管理者がシークレットの変更を監視・通知したいとき
- EventBridge + SNS と組み合わせて、パラメータ変更時に通知を受け取る
他のAWSサービスと連携したいとき
- Lambda・ECS・CodePipeline・CloudFormation から
{{ssm:parameter-name}}の形式で直接参照できる
5. なぜ自動ローテーション機能がないのか?
ここが本題です。
パラメータストアの「本質的な目的」を振り返る
ここまでの内容を整理すると、パラメータストアの本質的な役割は
「設定データと機密情報を安全に一元管理・参照すること」
です。
保存・整理・参照・通知——これらが中核機能です。
自動ローテーションとは何か?
自動ローテーションとは、「パスワードや認証情報を定期的に新しい値へ自動更新する」仕組みです。これには単に値を変えるだけでなく、以下のような複雑な処理が絡みます。
- 新しい認証情報を生成する
- データベースやサービス側のパスワードを実際に変更する
- 接続確認(テスト)を行う
- シークレットの値を更新し、アプリケーションに反映する
つまり、自動ローテーションは「ライフサイクル全体の管理」です。これはパラメータストアが目指す「安全な保管・参照」とは目的が異なります。
AWS公式ドキュメントはこう言っている
実は、AWS公式ドキュメントのパラメータストアのページに、以下の注記が明示されています。
パスワードローテーションのライフサイクルを実装するには、AWS Secrets Manager を使用してください。 Secrets Manager を使用すると、データベースの認証情報、API キー、その他のシークレットをそのライフサイクルを通してローテーション、管理、取得できます。
これは機能の欠如ではなく、意図的な設計上の分離です。
パラメータストアは「保管と参照に特化したサービス」として設計されており、ライフサイクル管理(ローテーション)は専用サービスである Secrets Manager に任せる——という AWS の明確な責務分離の思想があります。
6. 自動ローテーションが必要なら → AWS Secrets Manager
では、自動ローテーションを実現する AWS Secrets Manager はどういうサービスなのでしょうか。
Secrets Manager の定義
AWS Secrets Manager は、データベースの認証情報、API キー、その他のシークレットをライフサイクル全体でのローテーション、管理、および取得を可能にします。
自動ローテーションの仕組み
Secrets Manager の自動ローテーションには、次の形式があります。
- マネージドローテーション — サービスによってローテーションが構成・管理されます。Lambda 関数を使用しません。
- Lambda 関数によるローテーション — その他のタイプのシークレットでは、Lambda 関数を使ってシークレットとデータベースやサービスを更新します。
また、ローテーションのスケジュールは、rate() 式(例:rate(30 days))や cron() 式で細かく指定できます。
アクティブなアプリケーションを再デプロイしたり中断したりすることなく、オンデマンドまたはスケジュールに従ってシークレットをローテーションします。
7. まとめ:サービスの本質的な目的で使い分ける
2つのサービスの違いを整理すると、以下のようになります。
| 比較軸 | Parameter Store | Secrets Manager |
|---|---|---|
| 本質的な目的 | 設定データ・構成値の安全な保管と参照 | シークレットのライフサイクル全体の管理 |
| 自動ローテーション | ❌ なし | ✅ あり(マネージド / Lambda) |
| 主な対象データ | AMI ID・設定フラグ・接続文字列など汎用的な構成値 | パスワード・APIキーなど定期更新が必要な機密情報 |
| 料金 | 標準パラメータは無料 | 有料(シークレット単位) |
| AWS公式の推奨 | 設定データの一元管理 | パスワードローテーションのライフサイクル管理 |
「パラメータストアに自動ローテーション機能がない」のは、機能が足りないのではなく、そもそもその役割を担うサービスではないからです。
SAP試験でこの知識が問われるのも、2つのサービスの本質的な目的の違いを理解しているかを測っているからだと思います。「どちらを使うべきか」の判断軸は、「保管・参照だけで足りるか、ライフサイクル管理(ローテーション)が必要か」です。