

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

# 針對存放在 Amazon S3 for CodePipeline 中的成品設定伺服器端加密
<a name="S3-artifact-encryption"></a>

有兩種方式可以設定 Amazon S3 成品的伺服器端加密：
+ 當您使用建立管道精靈建立管道 AWS 受管金鑰 時，CodePipeline 會建立 S3 成品儲存貯體和預設值。 AWS 受管金鑰 會與物件資料一起加密，並由 管理 AWS。
+ 您可以建立和管理自己的客戶受管金鑰。

**重要**  
CodePipeline 僅支援對稱 KMS 金鑰。請勿使用非對稱 KMS 金鑰來加密 S3 儲存貯體中的資料。

如果您使用的是預設 S3 金鑰，則無法變更或刪除此 AWS 受管金鑰。如果您在 中使用客戶受管金鑰 AWS KMS 來加密或解密 S3 儲存貯體中的成品，您可以視需要變更或輪換此客戶受管金鑰。

如果儲存貯體中所存放的所有物件都需要伺服器端加密，則 Amazon S3 支援您可使用的儲存貯體政策。例如，如果要求不包含要求含 SSE-KMS 之伺服器端加密的 `s3:PutObject` 標頭，則下列儲存貯體政策會拒絕向所有人上傳物件 (`x-amz-server-side-encryption`) 的許可。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "SSEAndSSLPolicy",
    "Statement": [
        {
            "Sid": "DenyUnEncryptedObjectUploads",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::codepipeline-us-west-2-89050EXAMPLE/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-server-side-encryption": "aws:kms"
                }
            }
        },
        {
            "Sid": "DenyInsecureConnections",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::codepipeline-us-west-2-89050EXAMPLE/*",
            "Condition": {
                "Bool": {
                    "aws:SecureTransport": "false"
                }
            }
        }
    ]
}
```

------

如需伺服器端加密的詳細資訊 AWS KMS，請參閱[使用伺服器端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)和[使用存放在 (SSE-KMS) 中的 AWS Key Management Service KMS 金鑰使用伺服器端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)。

如需 的詳細資訊 AWS KMS，請參閱 [AWS Key Management Service 開發人員指南](https://docs.aws.amazon.com/kms/latest/developerguide/)。

**Topics**
+ [檢視您的 AWS 受管金鑰](#S3-view-default-keys)
+ [使用 CloudFormation 或 設定 S3 儲存貯體的伺服器端加密 AWS CLI](#S3-rotate-customer-key)

## 檢視您的 AWS 受管金鑰
<a name="S3-view-default-keys"></a>

當您使用 **Create Pipeline (建立管道)** 精靈建立第一個管道時，在您建立管道的相同區域中，將會為您建立 S3 儲存貯體。儲存貯體用於存放管道成品。當管道執行時，S3 儲存貯體中會放入和擷取成品。根據預設，CodePipeline 會使用 AWS 受管金鑰 適用於 Amazon S3 的 ( `aws/s3`金鑰） 搭配 AWS KMS 使用伺服器端加密。 AWS 受管金鑰 這會建立並儲存在您的帳戶中 AWS 。從 S3 儲存貯體擷取成品時，CodePipeline 會使用相同的 SSE-KMS 程序來解密成品。

**檢視 的相關資訊 AWS 受管金鑰**

1. 登入 AWS 管理主控台 並開啟 AWS KMS 主控台。

1. 如果出現歡迎頁面，請選擇**立即開始使用**。

1. 在服務導覽窗格中，選擇**AWS 受管金鑰**。

1. 選擇管道的區域。例如，如果管道是在 中建立的`us-east-2`，請確定篩選條件設定為美國東部 （俄亥俄）。

   如需 CodePipeline 可用區域和端點的詳細資訊，請參閱[AWS CodePipeline 端點和配額](https://docs.aws.amazon.com/general/latest/gr/codepipeline.html)。

1. 在清單中，選擇具有管道所用別名的金鑰 （預設為 **aws/s3**)。隨即顯示金鑰的基本資訊。



## 使用 CloudFormation 或 設定 S3 儲存貯體的伺服器端加密 AWS CLI
<a name="S3-rotate-customer-key"></a>

當您使用 CloudFormation 或 AWS CLI 建立管道時，您必須手動設定伺服器端加密。使用上面的範例儲存貯體政策，然後建立您自己的客戶受管金鑰。您也可以使用自己的金鑰，而不是 AWS 受管金鑰。選擇您自己的金鑰的一些原因包括：
+ 您希望依照排程輪換金鑰，以符合您組織的商業或安全需求。
+ 您希望建立管道，使用與另一個 AWS 帳戶建立關聯的資源。這便需要使用客戶受管金鑰。如需詳細資訊，請參閱[在 CodePipeline 中建立使用其他 AWS 帳戶資源的管道](pipelines-create-cross-account.md)。

密碼編譯最佳實務不鼓勵大量重複使用加密金鑰。根據最佳實務，請定期輪換您的金鑰。若要為您的 AWS KMS 金鑰建立新的密碼編譯資料，您可以建立客戶受管金鑰，然後變更您的應用程式或別名，以使用新的客戶受管金鑰。或者，您可以為現有的客戶受管金鑰啟用自動金鑰輪換。

若要輪換客戶受管金鑰，請參閱[輪換金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)。

**重要**  
CodePipeline 僅支援對稱 KMS 金鑰。請勿使用非對稱 KMS 金鑰來加密 S3 儲存貯體中的資料。