サポートされている Amazon RDS データベースのシークレットのローテーション化 - AWS Secrets Manager

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

サポートされている Amazon RDS データベースのシークレットのローテーション化

Amazon RDS データベースのシークレットを自動的に更新するように、AWS Secrets Manager を設定できます。Secrets Manager は、Secrets Manager が提供する Lambda 関数を使用します。

サポートされている Amazon RDS データベース

Secrets Manager の Amazon RDS オプションでは、サポートされているデータベースとは、ローテーションを有効にすると、Secrets Manager はそのデータベース用に設計された完全ですぐに実行できる Lambda ローテーション関数を提供することを意味しています。サポートされているデータベースの詳細な一覧については、「完全に構成された即時使用ローテーションをサポートするデータベース」を参照してください。他のタイプの データベースの場合でも、シークレットを更新することができます。ただし、他のデータベースのワークフローを使用する必要があります。これらの手順については、「他のデータベースやサービスのローテーションと AWS Secrets マネージャーシークレット」を参照してください。

シークレットのローテーションを有効にしたときRDS データベース認証情報シークレットのタイプとして、Secrets Manager は Lambda ローテーション関数を自動的に作成して設定します。次に、Secrets Manager は、関数の Amazon リソースネーム (ARN) を使用してシークレットを取得します。Secrets Manager は、関数に関連付けられた IAM ロールを作成し、必要なすべての権限を設定します。あるいは、別のシークレットでローテーション戦略を使用し、新しいシークレットで同じローテーションを使用する場合は、既存の関数の ARN を指定して両方のシークレットに使用できます。

Amazon VPC が提供する VPC で Amazon RDS DB インスタンスを実行しており、その VPC にパブリックインターネットアクセスがない場合、Secrets Manager は、その VPC 内で実行されるように Lambda 関数が設定されます。Secrets Manager では、必要な API オペレーションを呼び出すために、Lambda ローテーション関数が Secrets Manager サービスエンドポイントにアクセスできる必要があります。VPC の 1 つ以上のリソースがインターネットと通信する必要がある場合は、NAT ゲートウェイを使用して VPC を設定し、Lambda ローテーション関数がパブリック Secrets Manager サービスエンドポイントにクエリを実行できるようにすることができます。インターネットと通信できるようにする必要がない場合は、次の操作を実行できます。プライベートSecrets Manager サービスエンドポイントで VPC を設定するVPC 内からアクセスできるようになります。

それ以外の場合、Lambda 関数の作成にどのテンプレートを使用するかなど、いくつかの詳細情報を入力するだけで済みます。

  • シークレットを更新するアクセス許可を持つ認証情報を使用してシークレットを指定します: ユーザーが自分のパスワードを変更できることがあります。またある時は、ユーザーのアクセス許可が非常に制限されているため、自分のパスワードを変更することはできません。代わりに、ユーザーの認証情報を変更するには、別の管理者または「スーパー」ユーザーの認証情報を使用する必要があります。

    ローテーション関数が保護されたデータベースの認証情報を更新するために使用するシークレットを指定する必要があります。

    • このシークレットを使用する: 現在のシークレットの認証情報にデータベース内でパスワードを変更するアクセス許可がある場合は、このオプションを選択します。このオプションを選択すると、Secrets Manager は、ローテーション戦略を使用して Lambda 関数を実装し、各ローテーションで 1 人のユーザーのパスワードを変更します。このローテーション戦略の詳細については、「1 つのパスワードを使用してシングルユーザーの AWS Secrets Manager シークレットを更新する」を参照してください。

      Considerations

      Secrets Manager は、これを「低可用性」オプションとして提供します。ログインの失敗は、ローテーションによって古いパスワードが削除されてから、更新されたパスワードがシークレットの新しいバージョンとしてアクセス可能になるまでの間に発生する可能性があります。この時間枠は、非常に短く、1 秒以下です。このオプションを選択した場合は、クライアントアプリケーションが、コード内で適切な「バックオフとジッターで再試行」戦略を実装していることを確認してください。サインインが長時間にわたって何度か失敗した場合にのみ、アプリケーションがエラーを生成します。

    • AWS Secrets Manager] (AWS シークレットマネージャーで以前に保存したシークレットを使用): 現在のシークレットの認証情報に、制限的なアクセス許可があり、セキュリティで保護されたサービスの認証情報の更新に使用できない場合は、このオプションを選択します。または、シークレットの高可用性が必要な場合、これを選択します。このオプションを選択するには、保護されたサービスの認証情報を作成および更新するアクセス許可を持つ認証情報を持つ別の「マスター」シークレットを作成します。次に、リストからそのマスターシークレットを選択します。このオプションを選択すると、Secrets Manager が Lambda 関数を実装します。この Lambda 関数には、シークレットで見つかった最初のユーザーのクローンを作成するローテーション戦略があります。次に、ローテーションごとに 2 人のユーザーを交互に切り替え、アクティブになるユーザーのパスワードを更新します。このローテーション戦略の詳細については、「既存の 2 人のユーザーを切り替えることで AWS Secrets Manager シークレットを更新する」を参照してください。

      Considerations

      Secrets Manager は、このオプションを「高可用性」オプションとして提供します。これは、新しいバージョンの準備とテスト中に、古いバージョンのシークレットが引き続き動作し、サービスリクエストを処理するためです。Secrets Manager は、クライアントが新しいバージョンに切り替えるまで古いバージョンを非推奨にしません。このため、バージョン間の変更中にダウンタイムが発生しません。

      このオプションを使用するには、Lambda 関数を使用して、元のユーザーのアクセス権限を複製し、新しいユーザーに適用する必要があります。すると、この関数は、ローテーションごとに二人のユーザーを交互に切り替えます。

      ユーザーに付与されたアクセス許可を変更する必要がある場合は、両方のユーザーのアクセス許可を変更するようにしてください。

  • 関数をカスタマイズする: 組織の要件を満たすために Secrets Manager が提供する Lambda ローテーション関数をカスタマイズすることができます。たとえば、関数のフェーズである testSecret を拡張し、アプリケーション固有のチェックを使用して、新しいバージョンをテストし、新しいシークレットが想定通りに機能するかを確認することができます。手順については、「Secrets Manager が提供する Lambda ローテーション関数のカスタマイズ」を参照してください。