

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Lambda 函數輪換策略
<a name="rotation-strategy"></a>

對於 [由 Lambda 函式輪換](rotate-secrets_lambda.md)，對於資料庫秘密，Secrets Manager 提供兩種輪換策略。

## 輪換策略：單一使用者
<a name="rotating-secrets-one-user-one-password"></a>

此策略會在一個秘密中更新一個使用者的憑證。對於 Amazon RDS Db2 執行個體，因為使用者無法變更自己的密碼，因此必須使用單獨的密碼來提供管理員登入資料。**這是最簡單的輪換策略，適用於大多數使用案例。**特別是，建議您將此策略用於一次性 (臨機操作) 或互動式使用者的憑證。

秘密輪換時，不會中斷開啟的資料庫連線。輪換正在進行時，資料庫中的密碼變更與更新秘密之間，有一小段時間落差。在此期間，資料庫有可能拒絕使用輪換後憑證的呼叫。您可以透過[適當的重試策略](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/)降低這種風險。輪換之後，新的連線會使用新的憑證。

## 輪換策略：交替使用者
<a name="rotating-secrets-two-users"></a>

此策略會在一個秘密中更新兩個使用者的憑證。您可以建立第一個使用者，然後在第一次輪換期間，輪換函數會複製該使用者，以建立第二個使用者。每當秘密輪換時，輪換函數都會交替要更新的使用者密碼。由於大多數使用者沒有複製自身的許可，所以您必須提供其他秘密中 `superuser` 的憑證。在資料庫中複製的使用者沒有與原始使用者相同的許可時，建議使用單一使用者輪換策略，以及將其用於一次性 (臨機操作) 或互動式使用者的憑證。

此策略適合具有許可模型的資料庫，其中一個角色擁有資料庫資料表，而第二個角色具有存取資料庫資料表的許可。這也適用於需要高可用性的應用程式。如果應用程式在輪換期間擷取秘密，應用程式仍會取得一組有效的憑證。輪換之後，`user` 和 `user_clone` 憑證都有效。在這種類型的輪換期間，應用程式遭到拒絕的機率比單一使用者輪換更低。如果資料庫託管於伺服器陣列，將密碼變更傳播到所有伺服器需要一段時間，則資料庫有可能拒絕使用新憑證的呼叫。您可以透過[適當的重試策略](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/)降低這種風險。

Secrets Manager 會建立複製使用者，該使用者擁有與原始使用者相同的許可。如果在建立複製使用者後變更原始使用者的許可，您也必須變更複製使用者的許可。

例如，如果您使用資料庫使用者的憑證建立秘密，則該秘密會包含一個具有這些憑證的版本。

 ![The secret contains one secret version labeled AWSCURRENT. The username for the AWSCURRENT version is MyUser.](http://docs.aws.amazon.com/zh_tw/secretsmanager/latest/userguide/images/AlternatingUsers1.png) 

**第一次輪換** – 輪換函數會使用產生的密碼來建立使用者的複製，而這些登入資料會成為目前的秘密版本。

 ![The secret contains two secret versions, one labeled AWSCURRENT and one labeled AWSPREVIOUS. The username for the AWSCURRENT version is MyUser_clone.](http://docs.aws.amazon.com/zh_tw/secretsmanager/latest/userguide/images/AlternatingUsers2.png) 

**第二次輪換** – 輪換函數會更新原始使用者的密碼。

 ![The secret contains two secret versions, one labeled AWSCURRENT and one labeled AWSPREVIOUS. The username for the AWSCURRENT version is MyUser.](http://docs.aws.amazon.com/zh_tw/secretsmanager/latest/userguide/images/AlternatingUsers3.png) 

**第三次輪**換 – 輪換函數會更新複製使用者的密碼。

 ![The secret contains two secret versions, one labeled AWSCURRENT and one labeled AWSPREVIOUS. The username for the AWSCURRENT version is MyUser_clone.](http://docs.aws.amazon.com/zh_tw/secretsmanager/latest/userguide/images/AlternatingUsers4.png) 