

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

# 跨區域複寫 AWS Secrets Manager 秘密
<a name="replicate-secrets"></a>

您可以在多個 中複寫秘密 AWS 區域 ，以支援分散在這些區域中的應用程式，以滿足區域存取和低延遲需求。如果您稍後需要，您可以將[複本秘密提升為獨立，](standalone-secret.md)然後將其單獨設定為複寫。機密管理員會複寫已加密的機密資料和中繼資料，例如跨越指定區域的標籤和資源政策。

複寫秘密的 ARN 與主要秘密的 ARN 基本相同，唯一差異在於 Region 部分，示例如下：
+ 主要機密：`arn:aws:secretsmanager:Region1:123456789012:secret:MySecret-a1b2c3`
+ 複本秘密：`arn:aws:secretsmanager:Region2:123456789012:secret:MySecret-a1b2c3`

如需複本機密的定價資訊，請參閱 [AWS Secrets Manager 定價](https://aws.amazon.com/secrets-manager/pricing/)。

當您針對可複製到其他區域的來源資料庫儲存資料庫憑證時，機密會包含來源資料庫的連線資訊。如果隨後複製機密，則複本是來源機密的副本，並包含相同的連線資訊。您可以將其他金鑰/值對新增到區域連線資訊的機密。

如果您對主要機密開啟輪換，則機密管理員會在主要區域中輪換機密，而新的機密值會傳播至所有相關聯的複本機密。您不必單獨管理所有複本機密的輪換。

您可以將秘密複寫到所有已啟用 AWS 的區域。不過，如果您在 AWS GovCloud (US) 或 中國 AWS 區域等特殊區域使用 Secrets Manager，您只能在這些特殊 AWS 區域內設定秘密和複本。您無法將已啟用 區域中的秘密複寫 AWS 至特定區域，或將秘密從特定區域複寫至商業區域。

在您可以將機密複寫到另一個區域之前，必須先啟用該區域。如需詳細資訊，請參閱[管理 AWS 區域](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-enable)。

透過調用儲存機密之區域中的機密管理員端點，您可以在無需複製的情況下跨多個區域使用機密。如需端點清單，請參閱 [AWS Secrets Manager 端點](asm_access.md#endpoints)。若要使用複寫來改善工作負載的彈性，請參閱 [上的災難復原 (DR) 架構 AWS，第 I 部分：雲端中的復原策略](https://aws.amazon.com/blogs/architecture/disaster-recovery-dr-architecture-on-aws-part-i-strategies-for-recovery-in-the-cloud/)。

複寫機密時，Secrets Manager 會產生 CloudTrail 日誌項目。如需詳細資訊，請參閱[使用 記錄 AWS Secrets Manager 事件 AWS CloudTrail](monitoring-cloudtrail.md)。

**若要將機密複寫到其他區域 (控制台)**

1. 前往以下位置開啟機密管理員控制台：[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)。

1. 從秘密清單中選擇秘密。

1. 在秘密詳細資訊頁面的**複寫**分頁上，執行以下其中一項操作：
   + 如果尚未複寫您的機密，請選擇 **Replicate secret** (複寫機密)。
   + 如果已複寫您的機密，請在 **Replicate secret** (複寫機密) 區段中選擇 **Add Region** (新增區域)。

1. 在 **Add replica regions** (新增複寫區域) 對話方塊中，執行下列操作：

   1. 針對 **AWS Region** (AWS 區域)，選擇您要複寫機密的目標 Region (區域)。

   1. (選用) 針對 **Encryption key** (加密金鑰)，選擇要用於將機密加密的 KMS 金鑰。金鑰必須在複本區域中。

   1. (選用) 若要新增另一個區域，請選擇 **Add more regions** (新增其他區域)。

   1. 選擇 **Replicate** (複寫)。

   返回機密詳細資訊頁面。在 **Replicate Secret** (複寫機密) 區段中，會顯示每個區域的 **Replication Status** (複寫狀態)。

## AWS CLI
<a name="replicate-secrets_CLI"></a>

**Example 將機密複寫至其他區域**  
下列 [https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/replicate-secret-to-regions.html](https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/replicate-secret-to-regions.html) 範例會將機密複寫至 eu-west-3。複本會使用 AWS 受管金鑰 加密**aws/secretsmanager**。  

```
aws secretsmanager replicate-secret-to-regions \
        --secret-id MyTestSecret \
        --add-replica-regions Region=eu-west-3
```

**Example 建立秘密並進行複寫**  
下列[範例](https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/create-secret.html)會建立秘密並將其複寫至 eu-west-3。複本會使用 加密 AWS 受管金鑰 **aws/secretsmanager**。  

```
aws secretsmanager create-secret \
    --name MyTestSecret \
    --description "My test secret created with the CLI." \
    --secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}"
    --add-replica-regions Region=eu-west-3
```

## AWS 開發套件
<a name="replicate-secrets_SDK"></a>

若要複寫機密，請使用 [https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ReplicateSecretToRegions.html](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ReplicateSecretToRegions.html) 命令。如需詳細資訊，請參閱[AWS SDKs](asm_access.md#asm-sdks)。

# 在 中將複本秘密提升為獨立秘密 AWS Secrets Manager
<a name="standalone-secret"></a>

複本秘密是從另一個主要 中複寫的秘密 AWS 區域。它具有與主要秘密相同的秘密值和中繼資料，但可以使用不同的 KMS 金鑰加密。複本秘密不能獨立於其主要秘密更新，但其加密金鑰除外。升級複本秘密會中斷複本秘密與主要秘密的連線，並將複本秘密設為獨立秘密。主要秘密的任何變更均不會再複寫到獨立秘密。

您可以在主要秘密無法使用時，將複本秘密提升為獨立的秘密，以此作為災難復原解決方案。或者，如果您要開啟複本的輪換功能，您可以將複本提升為獨立的秘密。

如果要提升複本，請務必更新對應的應用程式，以便使用獨立的秘密。

提升機密時，Secrets Manager 會產生 CloudTrail 日誌項目。如需詳細資訊，請參閱[使用 記錄 AWS Secrets Manager 事件 AWS CloudTrail](monitoring-cloudtrail.md)。

**若要提升複本秘密 (主控台)**

1. 登入 Secrets Manager，網址為 [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)。

1. 導覽至複本區域。

1. 在 **Secrets** (機密) 頁面上，選擇複本機密。

1. 在複本機密詳細資訊頁面上，選擇 **Promote to standalone secret** (提升為獨立機密)。

1. 在 **Promote replica to standalone secret** (將複本提升為獨立機密) 對話方塊中，輸入 Region (區域)，然後選擇 **Promote replica** (提升複本)。

## AWS CLI
<a name="standalone-secret-cli"></a>

**Example 將複本機密提升為主要機密**  
下列 [https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/stop-replication-to-replica.html](https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/stop-replication-to-replica.html) 範例會移除複本機密至主要機密之間的連結。複本機密會提升為複本區域中的主要機密。您必須從複本區域內呼叫 [https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/stop-replication-to-replica.html](https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/stop-replication-to-replica.html)。  

```
aws secretsmanager stop-replication-to-replica \
    --secret-id MyTestSecret
```

## AWS 開發套件
<a name="standalone-secret-sdk"></a>

若要將複本秘密提升為獨立的秘密，請使用 [https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_StopReplicationToReplica.html](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_StopReplicationToReplica.html) 命令。您必須從複本秘密區域呼叫此命令。如需詳細資訊，請參閱[AWS SDKs](asm_access.md#asm-sdks)。

# 防止 AWS Secrets Manager 複寫
<a name="replicate-secrets-permissions"></a>

由於秘密可以使用 [https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ReplicateSecretToRegions.html](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ReplicateSecretToRegions.html)或使用 建立時複寫[https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html)，如果您想要防止使用者複寫秘密，我們建議您防止包含 `AddReplicaRegions` 參數的動作。您可以在許可政策中使用`Condition`陳述式，僅允許不新增複本區域的動作。如需您可以使用的條件陳述式，請參閱下列政策範例。

**Example 防止複寫許可**  
下列政策範例顯示如何允許未新增複本區域的所有動作。這可防止使用者透過 `ReplicateSecretToRegions`和 複寫秘密`CreateSecret`。    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "secretsmanager:*",
      "Resource": "*",
      "Condition": {
        "Null": {
          "secretsmanager:AddReplicaRegions": "true"
        }
      }
    }
  ]
}
```

**Example 僅允許對特定區域的複寫許可**  
下列政策說明如何允許下列所有項目：  
+ 建立無需複寫的秘密
+ 僅在美國和加拿大使用複寫功能建立秘密至 區域
+ 僅在美國和加拿大將秘密複寫至 區域   
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:CreateSecret",
        "secretsmanager:ReplicateSecretToRegions"
      ],
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringLike": {
          "secretsmanager:AddReplicaRegions": [
            "us-*",
            "ca-*"
          ]
        }
      }
    }
  ]
}
```

# 對 AWS Secrets Manager 複寫進行故障診斷
<a name="replicate-secrets_troubleshoot"></a>

AWS Secrets Manager 複寫可能會因為各種原因而失敗。若要檢查秘密無法複寫的原因，您可以執行下列其中一項操作：
+ 呼叫 `DescribeSecret` API 操作
+ 檢閱 AWS CloudTrail 事件

當複寫失敗時：
+ 如果沒有可用的秘密版本，Secrets Manager 會從複本區域移除秘密。
+ 如果成功複寫秘密版本，它們會保留在複本區域中，直到您使用 `RemoveRegionsFromReplication` API 操作明確移除它們為止。

下列各節說明複寫失敗的一些常見原因。

## 選取的區域中存在具有相同名稱的秘密。
<a name="w2aac17c33c13"></a>

若要解決此問題，您可以覆寫複本區域中的重複名稱機密。重試複寫，接著在**重試複寫**對話方塊中，選擇**覆寫**。

## KMS 金鑰上沒有可用的許可來完成複寫
<a name="w2aac17c33c15"></a>

Secrets Manager 會先解密秘密，然後再使用複本區域中的新 KMS 金鑰重新加密。如果您沒有主要區域中的加密金鑰的 `kms:Decrypt` 許可，則會遇到此錯誤。要使用 KMS 密鑰以外的密鑰加密複製的秘密`aws/secretsmanager`，你需要 `kms:GenerateDataKey` 和 `kms:Encrypt` 密鑰。請參閱 [KMS 金鑰的許可](security-encryption.md#security-encryption-authz)。

## KMS 金鑰已停用或找不到 KMS 金鑰
<a name="w2aac17c33c17"></a>

如果主要區域中的加密金鑰已停用或已刪除，Secret Manager 就無法複寫秘密。如果秘密具有使用已停用或已刪除的加密金鑰進行加密的[自訂標記版本](whats-in-a-secret.md#term_version)，則即便您已變更加密金鑰，仍可能發生此錯誤。如需 Secrets Manager 如何加密的相關資訊，請參閱 [中的秘密加密和解密 AWS Secrets Manager](security-encryption.md)。若要解決這個問題，您可以重新建立秘密版本，讓 Secrets Manager 使用目前的加密金鑰進行加密。如需詳細資訊，請參閱[變更秘密的加密金鑰](manage_update-encryption-key.md#manage_update-encryption-key_CLI)。然後重試複寫。

```
aws secretsmanager put-secret-value \
  --secret-id testDescriptionUpdate \
  --secret-string "SecretValue" \
  --version-stages "MyCustomLabel"
```

## 尚未啟用要進行複寫的區域
<a name="w2aac17c33c19"></a>

如需如何啟用區域的相關資訊，請參閱《*AWS 帳戶管理參考指南》*中的[管理 AWS 區域。](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-enable)