WKLD.03 — エフェメラルシークレットまたはシークレット管理サービスを使用する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

WKLD.03 — エフェメラルシークレットまたはシークレット管理サービスを使用する

アプリケーションシークレットは、主にキーペア、アクセストークン、デジタル証明書、サインイン認証情報などの認証情報で構成されています。アプリケーションはこれらのシークレットを使用して、データベースなど、依存している他のサービスにアクセスします。これらのシークレットを保護するには、エフェメラルなもの (リクエスト時に生成され、IAM ロールなどでは有効期間が短いもの) にするか、シークレット管理サービスから取得することをお勧めします。これにより、静的な設定ファイルに保持するなど、安全性の低いメカニズムにより誤って公開されるのを防ぐことができます。また、アプリケーションコードを開発環境から本番環境に移行することも容易になります。

シークレット管理サービスの場合は、パラメータストア、AWS Systems Manager の機能、AWS Secrets Manager を組み合わせて使用することをお勧めします。

  • パラメータストアを使用すると、シークレットやその他のパラメータ (個別のキーと値のペア、文字列ベース、全体の長さが短いもの、頻繁にアクセスするものなど) を管理できます。AWS Key Management Service (AWS KMS) キーを使用して、シークレットを暗号化します。パラメータストアの標準階層にパラメータを保存しても料金はかかりません。パラメータ階層の詳細については、「パラメータ階層の管理」(Systems Manager のドキュメント) を参照してください。

  • シークレットマネージャーを使用して、ドキュメント形式のシークレット (関連する複数のキーと値のペアなど)、4 KB を超えるシークレット (デジタル証明書など)、または自動ローテーションのメリットを得られるシークレットを保存します。

パラメータストア API を使用して、シークレットマネージャーに保存されているシークレットを取得できます。これにより、両方のサービスを組み合わせて使用する際に、アプリケーションのコードを標準化できます。

パラメータストアでシークレットを管理するには
  1. 対称 AWS KMS キーの作成 (AWS KMS のドキュメント)

  2. SecureString パラメータを作成する (Systems Manager のドキュメント) パラメータストアのシークレットは SecureString データタイプを使用します。

  3. アプリケーションでは、プログラミング言語用の AWS SDK を使用して、パラメータストアからパラメータを取得します。Java の例については、「GetParameter.java」(AWS Code Sample Catalog) を参照してください。

Secrets Manager でシークレットを管理するには
  1. シークレットの作成 (Secrets Manager のドキュメント)

  2. コードの AWS Secrets Manager からシークレットを取得する (Secrets Manager のドキュメント)

    AWS Secrets Manager クライアント側のキャッシュライブラリを使用して、シークレット使用の可用性とレイテンシーを改善する」(AWS ブログ記事) を読むことが重要です。既にベストプラクティスが実装されているクライアント側の SDK を使用すると、Secrets Manager の使用と統合が迅速かつ簡単になります。