本文へスキップ
BecomeCoder

AWS SAA(ソリューションアーキテクト)コース · 第3章 セキュアなアーキテクチャ設計 · レッスン15

シークレット管理

導入

データベースのパスワードやAPIキーをアプリのコードやコンテナイメージに直接書いてしまう——これはCLFでも触れた典型的なアンチパターンです。SAAでは「どちらの管理サービスを使うべきか」まで判断できる必要があります。

説明

パスワードやAPIキーなどの機密情報(シークレット)は、コードに直接書かず専用サービスで一元管理します。AWSには目的の異なる2つのサービスがあります。

サービス主な用途ローテーションコスト
Secrets ManagerDB認証情報など、定期的な自動ローテーションが必要なシークレット自動ローテーションに標準対応(RDS等と連携)有料(保存数・API呼び出しに応じて)
SSM Parameter Store設定値やシークレットの一元管理(ローテーションの仕組みは自前で用意)標準では非対応(Standard利用なら基本無料)無料枠が大きい(Standard)
flowchart LR
    APP["アプリケーション"] -- "実行時に取得" --> SM["Secrets Manager<br/>(自動ローテーション)"]
    APP -- "実行時に取得" --> PS["Parameter Store<br/>(設定値/シークレット)"]
    SM -. ローテーション .-> RDS["RDS"]

判断の軸は「自動ローテーションが必要かどうか」です。RDSのマスターパスワードのように、定期的に自動で変更してセキュリティを保ちたい場合はSecrets Manager一択です。一方、変更頻度の低い設定値やAPIキーで、コストを抑えたい場合はParameter Storeが適しています。

読んでみよう

「パスワードをコードに埋め込んでいる」という記述があれば、それだけで設計ミスのサインです。「自動ローテーションが要件にあるか」を問題文から探し出せれば、Secrets ManagerとParameter Storeのどちらが正解かはすぐに判別できます。