はじめに
AWSでアプリケーションを構築する際、データベースの接続パスワードや外部APIのアクセストークン、環境変数などのパラメータ情報をAWS Secrets Manager と AWS Systems Manager Parameter Store のどちらに保存すべきか?で迷うことがあります。
この記事では、両者の違いやそれぞれの特性(コスト、ローテーション、暗号化、権限制御)を比較し、実際の現場や用途に応じた使い分けのポイントについて理解を深めていきます。
「AWS Secrets Manager」と「AWS Parameter Store」の比較
1. コスト
どちらのサービスを選定するかを検討する際、
最も大きな決定要因となるのがコストです。両者の違いは非常に明確です。
- Parameter Store: (Standard ティアであれば)基本的に無料
- Secrets Manager: 有料(固定月額料金 + APIリクエスト従量課金)
- シークレット 1 個ごとに月額料金が発生し、呼び出し回数に応じた従量課金が加算されます
そのため、特別な制御が不要なパラメータであれば Parameter Store を第一選択とするのが一般的です。
2. 自動ローテーション機能
Secrets Manager の大きな特徴であり強みのひとつが、資格情報の自動ローテーション機能です。
AWS Lambda や各種データベース(Amazon RDS 等)と連携し、定期的にパスワードを自動変更するローテーション機能が標準で用意されています。
AWS認定試験問題で「定期的に自動ローテーションする必要がある」という文言が出てきた場合は、迷わず Secrets Manager を選択しましょう。
3. 暗号化(KMS連携)
データの暗号化については、Secret Mangerのみかと思いきや、両サービスとも AWS KMS(Key Management Service) を利用して安全に保管できます。
- Secrets Manager: デフォルトで保管時暗号化が有効になっています
- Parameter Store: パラメータ作成時に
SecureStringタイプを選択することで、AWS KMS による暗号化を適用できます
「データを暗号化して保持したいだけ」という要件であれば、実はParameter Store の SecureString でも十分要件を満たすことができます。
4. 権限制御とアクセス範囲(ポリシー構造)
両者の重要な技術的違いがアクセスポリシーの構造です。
アクセスポリシーには以下の2種類があります。
- アイデンティティベースポリシー:
- IAM ユーザー、IAM グループ、IAM ロール(アクセスする側の主体)に対して直接添付するポリシーです。
- 平たく言えばIAMポリシーで制御する方法
- リソースベースポリシー:
- AWS リソースそのもの(Secrets Manager のシークレット、S3 バケット、KMS キーなど)に対して直接添付するポリシーです。
- ポリシー内に Principal(主体)を指定し、「このリソースに対して誰(どの IAM ロールや他アカウントのユーザー)がアクセスを行ってよいか」を保管場所(リソース)側で直接定義します。
Parameter StoreとSecret Mangerは以下のポリシーが設定できます。
- Parameter Store: アイデンティティベースポリシーのみ
- Secrets Manager: アイデンティティベースポリシー + リソースベースポリシー
アカウント内部でよりセキュアに情報を管理したい場合は、Secret Mangerを使う必要がありそうです。
むすび
今回、AWS Secret ManagerとAWS Parameter Storeの比較を行いました。
試験対策としてAWS Secret Managerの特性を覚えておくと良さそうですが、 実際の案件では、圧倒的にParameter Storeを使うことが多くなりそうです。