

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

# 適用於 CloudTrail 的 Amazon S3 儲存貯體政策
<a name="create-s3-bucket-policy-for-cloudtrail"></a>

根據預設，所有 Amazon S3 儲存貯體和物件皆為私有。只有資源擁有者 (建立儲存貯體的 AWS 帳戶)，可存取儲存貯體及其包含的物件。資源擁有者可藉由編寫存取政策，將存取許可授予其他資源和使用者。

若要建立或修改 Amazon S3 儲存貯體以接收組織追蹤的日誌檔案，則必須變更儲存貯體政策。如需詳細資訊，請參閱 [使用 為組織建立線索 AWS CLI](cloudtrail-create-and-update-an-organizational-trail-by-using-the-aws-cli.md)。

若要將日誌檔案交付到 S3 儲存貯體，CloudTrail 必須具備必要的許可，而且不得設定為[申請者付款](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html)儲存貯體。

CloudTrail 會在政策中為您新增下列欄位：
+ 允許的 SID
+ 儲存貯體名稱
+ CloudTrail 的服務委託人名稱
+ 存放日誌檔案的資料夾名稱，包括儲存貯體名稱、字首 （如果您指定了） 和 AWS 您的帳戶 ID

安全最佳實務是將 `aws:SourceArn` 條件金鑰新增至 Amazon S3 儲存貯體政策。IAM 全域條件金鑰 `aws:SourceArn` 有助於確保 CloudTrail 僅針對特定追蹤寫入 S3 儲存貯體。`aws:SourceArn` 的值一律為使用儲存貯體來存放日誌的追蹤 ARN (或追蹤 ARN 陣列)。請務必將 `aws:SourceArn` 條件金鑰新增至現有追蹤的 S3 儲存貯體政策。

**注意**  
如果您的追蹤設定錯誤 (例如，S3 儲存貯體無法連線)，CloudTrail 會在 30 天內嘗試重新傳遞日誌檔案到您的 S3 儲存貯體，且您需要為這些嘗試傳遞事件支付標準 CloudTrail 費用。若要避免支付追蹤設定錯誤費用，您需要刪除追蹤。

下列政策允許 CloudTrail 從支援的 將日誌檔案寫入儲存貯體 AWS 區域。將 *amzn-s3-demo-bucket*、*【optionalPrefix】/*、*myAccountID*、*region* 和 *trailName* 取代為您的組態的適當值。

**S3 儲存貯體政策**

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AWSCloudTrailAclCheck20150319",
            "Effect": "Allow",
            "Principal": {"Service": "cloudtrail.amazonaws.com"},
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:trail/trailName"
                }
            }
        },
        {
            "Sid": "AWSCloudTrailWrite20150319",
            "Effect": "Allow",
            "Principal": {"Service": "cloudtrail.amazonaws.com"},
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/[optionalPrefix]/AWSLogs/myAccountID/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control",
                    "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:trail/trailName"
                }
            }
        }
    ]
}
```

------

如需 的詳細資訊 AWS 區域，請參閱 [CloudTrail 支援的區域](cloudtrail-supported-regions.md)。

**Contents**
+ [

## 指定 CloudTrail 日誌交付的現有儲存貯體
](#specify-an-existing-bucket-for-cloudtrail-log-delivery)
+ [

## 從其他帳戶接收日誌檔案
](#aggregration-option)
+ [

## 建立或更新 Amazon S3 儲存貯體以存放組織追蹤的日誌檔案
](#org-trail-bucket-policy)
+ [

## 針對 Amazon S3 儲存貯體政策進行故障診斷
](#troubleshooting-s3-bucket-policy)
  + [

### 常見的 Amazon S3 政策設定錯誤
](#s3-bucket-policy-for-multiple-regions)
  + [

### 變更現有儲存貯體的前綴
](#cloudtrail-add-change-or-remove-a-bucket-prefix)
+ [

## 其他資源
](#cloudtrail-S3-bucket-policy-resources)

## 指定 CloudTrail 日誌交付的現有儲存貯體
<a name="specify-an-existing-bucket-for-cloudtrail-log-delivery"></a>

如果您指定現有的 S3 儲存貯體做為日誌檔案交付的儲存位置，您必須將政策連接到儲存貯體以允許 CloudTrail 寫入儲存貯體。

**注意**  
最佳實務是使用 CloudTrail 日誌專用的 S3 儲存貯體。

**將必要的 CloudTrail 政策新增至 Amazon S3 儲存貯體**

1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 選擇您想要讓 CloudTrail 交付日誌檔案的目標儲存貯體，然後選擇 **Permissions** (許可)。

1. 選擇**編輯**。

1. 將 [S3 bucket policy](#s3-bucket-policy) 複製到 **Bucket Policy Editor** (儲存貯體政策編輯器) 視窗。將斜體預留位置取代成您儲存貯體的名稱、前綴和帳號。如果您在建立追蹤時指定了前綴，請在這裡包含它。前綴是 S3 物件金鑰的選用新增項目，可在您的儲存貯體中建立類似資料夾的組織。
**注意**  
如果現有的儲存貯體已連接一或多個政策，請將 CloudTrail 存取陳述式新增至這些政策。請評估所產生的一組許可，以確保它們適用於將存取儲存貯體的使用者。

## 從其他帳戶接收日誌檔案
<a name="aggregration-option"></a>

您可以設定 CloudTrail 將日誌檔案從多個 AWS 帳戶傳送到單一 S3 儲存貯體。如需詳細資訊，請參閱[從多個帳戶接收 CloudTrail 日誌檔案編輯其他帳戶呼叫之資料事件的儲存貯體擁有者帳戶 ID](cloudtrail-receive-logs-from-multiple-accounts.md)。

## 建立或更新 Amazon S3 儲存貯體以存放組織追蹤的日誌檔案
<a name="org-trail-bucket-policy"></a>

您必須指定 Amazon S3 儲存貯體以接收組織追蹤的日誌檔案。這個儲存貯體必須具備特定政策，允許 CloudTrail 將組織的日誌檔案放入儲存貯體。

以下是名為 amzn-s3-demo-bucket 的 Amazon S3 儲存貯體的範例政策，該儲存貯體為組織的管理帳戶所擁有。 **將 *amzn-s3-demo-bucket*、 *region*、 *managementAccountID*、 *trailName* 和 *o-organizationID* 取代為組織的值

此儲存貯體政策包含三個陳述式。
+ 第一個陳述式允許 CloudTrail 在 Amazon S3 儲存貯體上呼叫 Amazon S3 `GetBucketAcl` 動作。
+ 第二個陳述式允許記錄當追蹤從組織追蹤變更成僅限該帳戶使用的事件。
+ 第三個陳述式允許組織追蹤記錄。

範例政策會納入 Amazon S3 儲存貯體政策的 `aws:SourceArn` 條件金鑰。IAM 全域條件金鑰 `aws:SourceArn` 有助於確保 CloudTrail 僅針對特定追蹤寫入 S3 儲存貯體。在組織追蹤中，`aws:SourceArn` 的值必須是管理帳戶所擁有且使用管理帳戶 ID 的追蹤 ARN。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AWSCloudTrailAclCheck20150319",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "cloudtrail.amazonaws.com"
                ]
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": "arn:aws:cloudtrail:region:managementAccountID:trail/trailName"
                }
            }
        },
        {
            "Sid": "AWSCloudTrailWrite20150319",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "cloudtrail.amazonaws.com"
                ]
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/managementAccountID/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control",
                    "aws:SourceArn": "arn:aws:cloudtrail:region:managementAccountID:trail/trailName"
                }
            }
        },
        {
            "Sid": "AWSCloudTrailOrganizationWrite20150319",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "cloudtrail.amazonaws.com"
                ]
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/o-organizationID/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control",
                    "aws:SourceArn": "arn:aws:cloudtrail:region:managementAccountID:trail/trailName"
                }
            }
        }
    ]
}
```

------

這個範例政策不允許成員帳戶中任何使用者存取為該組織建立的日誌檔案。在預設情況下，只有管理帳戶才能存取組織日誌檔案。如需有關如何允許成員帳戶中 IAM 使用者對於 Amazon S3 儲存貯體的讀取許可，請參閱 [在 AWS 帳戶之間共用 CloudTrail 日誌檔案](cloudtrail-sharing-logs.md)。

## 針對 Amazon S3 儲存貯體政策進行故障診斷
<a name="troubleshooting-s3-bucket-policy"></a>

下列各節說明如何針對 S3 儲存貯體政策進行故障診斷。

**注意**  
如果您的追蹤設定錯誤 (例如，S3 儲存貯體無法連線)，CloudTrail 會在 30 天內嘗試重新傳遞日誌檔案到您的 S3 儲存貯體，且您需要為這些嘗試傳遞事件支付標準 CloudTrail 費用。若要避免支付追蹤設定錯誤費用，您需要刪除追蹤。

### 常見的 Amazon S3 政策設定錯誤
<a name="s3-bucket-policy-for-multiple-regions"></a>

當您在建立或更新追蹤的過程中建立新的儲存貯體時，CloudTrail 會將必要的許可連接到您的儲存貯體。儲存貯體政策使用服務主體名稱 `"cloudtrail.amazonaws.com"`，其允許 CloudTrail 傳遞所有區域的日誌。

如果 CloudTrail 未傳遞某個區域的日誌，可能是您的儲存貯體具有為每個區域指定 CloudTrail 帳戶 ID 的舊版政策。此政策授予 CloudTrail 許可，只能傳遞指定區域的日誌。

最佳實務是更新政策以搭配 CloudTrail 服務委託人使用許可。若要執行此作業，請將帳戶 ID ARN 取代成服務主體名稱：`"cloudtrail.amazonaws.com"`。這會授予 CloudTrail 許可，以傳遞目前和新區域的日誌。安全最佳實務是將 `aws:SourceArn` 或 `aws:SourceAccount` 條件金鑰新增至 Amazon S3 儲存貯體政策。這有助於防止未經授權的帳戶存取您的 S3 儲存貯體。如果您具有現有的追蹤，請務必新增一或多個條件金鑰。以下範例顯示推薦的政策組態。將 *amzn-s3-demo-bucket*、*【optionalPrefix】/*、*myAccountID*、*region* 和 *trailName* 取代為您的組態的適當值。

**Example 儲存貯體政策與服務主體名稱範例**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AWSCloudTrailAclCheck20150319",
            "Effect": "Allow",
            "Principal": {"Service": "cloudtrail.amazonaws.com"},
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:trail/trailName"
                }
            }
        },
        {
            "Sid": "AWSCloudTrailWrite20150319",
            "Effect": "Allow",
            "Principal": {"Service": "cloudtrail.amazonaws.com"},
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/[optionalPrefix]/AWSLogs/myAccountID/*",
            "Condition": {"StringEquals": {
                "s3:x-amz-acl": "bucket-owner-full-control",
                "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:trail/trailName"
                }
            }
        }
    ]
}
```

### 變更現有儲存貯體的前綴
<a name="cloudtrail-add-change-or-remove-a-bucket-prefix"></a>

如果您嘗試為從追蹤接收日誌的 S3 儲存貯體，新增、修改或移除日誌檔案前綴，您可能會看到下列錯誤：**There is a problem with the bucket policy** (儲存貯體政策發生問題)。前綴不正確的儲存貯體政策可能會使您的追蹤無法將日誌交付到儲存貯體。若要解決此問題，請使用 Amazon S3 主控台更新儲存貯體政策中的前綴，然後使用 CloudTrail 主控台指定與追蹤中的儲存貯體相同的前綴。

**更新 Amazon S3 儲存貯體的日誌檔案前綴**

1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 選擇您要修改字首的儲存貯體，然後選擇 **Permissions** (許可)。

1. 選擇**編輯**。

1. 在儲存貯體政策中，編輯 `s3:PutObject` 動作下的 `Resource` 項目，以視需要新增、修改或移除日誌檔案 *prefix/*。

   ```
   "Action": "s3:PutObject",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/AWSLogs/myAccountID/*",
   ```

1. 選擇**儲存**。

1. 前往 [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/) 開啟 CloudTrail 主控台。

1. 選擇您的追蹤，然後針對 **Storage location** (儲存位置)，按一下鉛筆圖示以編輯您的儲存貯體設定。

1. 針對 **S3 bucket** (S3 儲存貯體)，選擇您要變更前綴的儲存貯體。

1. 針對 **Log file prefix** (日誌檔案前綴)，更新前綴以符合您在儲存貯體政策中輸入的前綴。

1. 選擇**儲存**。

## 其他資源
<a name="cloudtrail-S3-bucket-policy-resources"></a>

如需 S3 儲存貯體和政策的詳細資訊，請參閱 *Amazon Simple Storage Service 使用者指南*中的[使用儲存貯體政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)。