0Pricing
AWS Security Academy · レッスン

Secrets Managerで認証情報を保存する

データベースやAPIのシークレットを安全に保存・ローテーションし、コードには記述しない方法を学びます。

「Secrets Managerで認証情報を保存する」はCoddyKit上の無料AWS Security Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAWS Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AWS Security Academyコースには全4レッスンが含まれています。

ハードコードされたシークレットの問題

コードや設定ファイルにハードコードされたデータベースのパスワードや API キーは、情報漏えいの主な原因です。リポジトリ、ログ、バックアップを通じて漏えいします。

AWS Secrets Manager はシークレットを安全に保存し、IAM でアクセスを制御し、自動的にローテーションできます。そのため、シークレットをコード内に置く必要がありません。

Secrets Manager の機能

Secrets Manager は、データベースの認証情報や API キーなどのシークレットを保存、暗号化、取得、ローテーションします。

  • シークレットは KMS によって保存時に暗号化されます。
  • アプリケーションはシークレットを埋め込むのではなく、実行時に API 呼び出しで取得します。

暗号化とアクセス制御

各シークレットは KMS key で暗号化され、IAM とオプションのリソースベースポリシーによって保護されます。

シークレットを必要とする特定のロールだけにアクセスを許可し、取得操作はすべて CloudTrail に記録されるため、完全な追跡性を確保できます。

自動ローテーション

特に重要な機能は自動ローテーションです。

  • Lambda 関数がスケジュールに従ってシークレットを変更し、保存先を更新します。
  • 組み込みのローテーションは RDS やその他のデータベースをサポートしています。

認証情報が漏えいした場合でも、ローテーションによって被害が及ぶ期間を短縮できます。

ローテーションの仕組み

データベースでは通常、2 組の認証情報または交互にユーザーを切り替える方式を使用します。これにより、変更中にアプリケーションが無効なパスワードを参照することを防ぎます。

Lambda が新しいシークレット値を作成してテストし、その後に有効化します。正しく設定すれば、ダウンタイムなしで実行できます。

実行時のシークレット取得

アプリケーションは必要なときに GetSecretValue を呼び出してシークレットを取得し、多くの場合は短時間キャッシュします。

アプリケーションは IAM ロールを使用するため、シークレットを取得するための静的な認証情報は必要ありません。これにより、長期的なキーをコードから排除する仕組みが完成します。

aws secretsmanager get-secret-value \
  --secret-id prod/db/credentials \
  --query SecretString

Secrets Manager と Parameter Store の比較

SSM Parameter Store も設定やシークレット(SecureString)を保存でき、標準パラメータであれば無料です。

  • 自動ローテーションやアカウント間でのシークレット共有が組み込まれている Secrets Manager を選択します。
  • ローテーションを必要としない、よりシンプルで無料の設定管理には Parameter Store を選択します。

アカウント間およびリージョン間での利用

Secrets Manager は、別のアカウントとシークレットを共有するためのリソースポリシーをサポートし、シークレットを他のリージョンにレプリケートできます。

これにより、マルチリージョンアプリケーションやディザスタリカバリに対応し、ワークロードが実行される場所で一貫したシークレットを利用できます。

監査とモニタリング

CloudTrailでシークレットの使用状況(誰がシークレットを取得またはローテーションしたか)を監視し、異常を検出します。

たとえば、GuardDutyは通常とは異なるアクセスパターンを検出でき、Configルールはローテーションが有効になっているかを確認できます。これにより、シークレットの適切な管理状況を測定できます。

他のサービスとの統合

多くのAWSサービスは、Secrets Managerのシークレットをネイティブに利用できます。

  • RDSとRedshiftでは、マスター認証情報をそこに保存して管理できます。
  • ECS、Lambda、CodeBuildでは、実行時にシークレットを注入できます。

これにより、コードに認証情報を埋め込んだり、手動で取得したりすることなく、ワークロードに認証情報を安全に渡せます。

ベストプラクティス

シークレットを安全に使用するには、次の点に従います。

  • シークレットをハードコードしないで、Secrets Managerから取得します。
  • ローテーションを有効にし、専用のKMSキーを使用します。
  • シークレットごとに最小権限のアクセスを付与し、取得状況を監査します。

クイックチェック

適切なサービスを選択してください。

まとめ

Secrets Managerについて学びました。

  • シークレットを保存、暗号化(KMSを使用)、自動ローテーションできます。
  • アプリケーションは、IAMで制御されたAPI呼び出しによって実行時にシークレットを取得します。シークレットをハードコードする必要はありません。
  • ローテーションまたはアカウント間共有が必要な場合は、Parameter StoreよりもSecrets Managerを選択します。

よくある質問

「Secrets Managerで認証情報を保存する」レッスンは無料ですか?

はい。「Secrets Managerで認証情報を保存する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AWS Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AWS Security Academyコースには全4レッスンが含まれています。

「Secrets Managerで認証情報を保存する」で何を学びますか?

データベースやAPIのシークレットを安全に保存・ローテーションし、コードには記述しない方法を学びます。 ブラウザで直接実行するハンズオンコードでAWS Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AWS Security Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAWS Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Secrets Managerで認証情報を保存する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAWS Security Academyレッスンでコードを書いて実行できますか?

はい。すべてのAWS Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. S3、EBS、RDSの保存時暗号化
  2. すべての環境でデフォルト暗号化を強制する
  3. AWS Certificate ManagerでTLS証明書を扱う
  4. Secrets Managerで認証情報を保存する
← AWS Security Academyに戻る