このドキュメントでは、Secret Manager での Cloud SQL シークレットの自動ローテーションについて説明します。自動ローテーションにより、Secret Manager は安全なパスワードを生成し、ターゲットの Cloud SQL データベース インスタンスのシークレットを更新して、新しいシークレットを最新のシークレット バージョンとして保存します。
自動ローテーションのメリット
自動ローテーションには次の利点があります。
- 認証情報をローテーションするためのカスタム Cloud Run functions を維持する必要がなくなります。
- 認証情報を頻繁にローテーションすることで、認証情報の漏洩による影響を最小限に抑えます。
- Payment Card Industry Data Security Standards(PCI-DSS)など、パスワードの定期的なローテーションを義務付けるコンプライアンス要件を満たすことができます。詳しくは、コンプライアンス リソース センターをご覧ください。
主なコンセプト
自動ローテーションを使用するには、次のコンセプトを理解する必要があります。
Secret の種類
Secret の種類を使用して、シークレットを分類できます。自動ローテーションを有効にするには、作成時に [Cloud SQL DB credentials] Secret の種類を選択します。詳細については、リージョン シークレットを
作成するをご覧ください。
既存のシークレットでは自動ローテーションはサポートされていません。
Secret の組み込み ID
Secret は、組み込み ID を持つリソースタイプです。
各 Secret には、 プロジェクト内の他のすべてのリソースと区別するための一意の識別子があります。 Cloud de Confiance by S3NS この一意の識別子は、Secret の作成時にシステムによって自動的に生成され、Secret リソースの iamPolicyUidPrincipal フィールドに保存されます。詳細については、リソースの組み込み ID をご覧ください。
Cloud SQL インスタンスの認証情報を更新するには、組み込み ID に必要な権限を付与する必要があります。 これにより、Secret は独自の認証情報をローテーションするために必要な権限のみを保持し、最小権限の原則に準拠します。
ローテーションのスケジュールとステータス
ローテーションのスケジュールを使用すると、Secret をローテーションする頻度を指定できます。 たとえば、30 日ごとまたは 90 日ごとなどです。
システムは、Secret のローテーション ステータスを使用して、ローテーション スケジュールの健全性を追跡します。
Enabled: ローテーション スケジュールが有効になっており、最新の ローテーションが成功しました。Disabled: ローテーション スケジュールが一時停止しています。ローテーションの試行が失敗した場合も、ステータスはDisabledに変わります。
ローテーション戦略
各 Cloud SQL DB credentials Secret は、1 組のデータベース認証情報(Cloud SQL インスタンス ID、ユーザー名、パスワード)を管理します。
ローテーション中に、Secret Manager は Cloud SQL ユーザーの安全なパスワードを生成し、Secret Manager とターゲットの Cloud SQL インスタンスの両方で Secret を更新します。
ローテーションのライフサイクル
自動ローテーション プロセスは、Secret Manager によって管理される特定のライフサイクルに従います。ワークフローには次のステップが含まれます。
- 開始: 構成されたローテーション スケジュールまたは オンデマンドの手動ローテーションに基づいてプロセスが開始されます。
- 生成: Secret Manager は、 Cloud SQL パスワード ポリシーに準拠した安全なパスワードを生成します。
- 同期: Secret Manager は、ターゲットの Cloud SQL
インスタンスのパスワードを更新し、新しい Secret を最新の Secret バージョンとして保存します。この段階では、Cloud SQL インスタンスに新しいパスワードが設定されていますが、Secret
aliasは古いバージョンを指しています。 - エイリアスの更新: Secret Manager は、新しい Secret バージョンを指すように Secret エイリアスを更新します。
- 通知の送信: 構成されている場合、Secret Manager は Pub/Sub 通知を送信して、ローテーションの成功または失敗を通知します。
ローテーションが失敗すると、システムは自動的に再試行します。失敗が続く場合、Secret Manager はローテーション ステータスを Disabled に設定します。ローテーションを再開するには、根本的な問題を解決して、ローテーションを再度有効にする必要があります。