

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

# 需要額外許可 [V1] 的日誌記錄
<a name="AWS-vended-logs-permissions"></a>

有些 AWS 服務會使用常見的基礎設施，將日誌傳送至 CloudWatch Logs、Amazon S3 或 Firehose。若要讓上表中列出的 AWS 服務將日誌傳送至這些目的地，您必須以具有特定許可的使用者身分登入。

此外，必須授予 許可 AWS ，才能傳送日誌。 AWS 可以在設定日誌時自動建立這些許可，或者您可以在設定日誌之前先自行建立這些許可。若要跨帳戶交付，您必須自行手動建立許可政策。

如果您選擇在您或組織中的某人第一次設定日誌傳送時，讓 AWS 自動設定必要的許可和資源政策，則設定日誌傳送的使用者必須具有特定許可，如本節稍後所述。或者，您可以自行建立資源政策，所以設定傳送日誌的使用者就不需要這麼多許可。

下列主題提供每個目的地的更多詳細資訊。

**Topics**
+ [傳送至 CloudWatch Logs 的日誌](AWS-logs-infrastructure-CWL.md)
+ [傳送至 Amazon S3 的日誌](AWS-logs-infrastructure-S3.md)
+ [傳送至 Firehose 的日誌](AWS-logs-infrastructure-Firehose.md)

# 傳送至 CloudWatch Logs 的日誌
<a name="AWS-logs-infrastructure-CWL"></a>

**重要**  
當您將下列清單中的日誌類型設定為傳送至 CloudWatch Logs 時， AWS 會視需要為接收日誌的日誌群組建立或變更相關聯的資源政策。繼續閱讀本節以查看詳細資訊。

本節適用於將上一節表中列出的日誌類型，傳送至 CloudWatch Logs 的情況：

**使用者許可**

您必須以具有下列許可的帳戶登入，才能第一次設定將任何這些類型的日誌傳送到 CloudWatch Logs。
+ `logs:CreateLogDelivery`
+ `logs:PutResourcePolicy`
+ `logs:DescribeResourcePolicies`
+ `logs:DescribeLogGroups`
**注意**  
當您指定 `logs:DescribeLogGroups`、 `logs:DescribeResourcePolicies`或 `logs:PutResourcePolicy`許可時，請務必將其`Resource`行的 ARN 設定為使用`*`萬用字元，而不是只指定單一日誌群組名稱。例如 `"Resource": "arn:aws:logs:us-east-1:111122223333:log-group:*"`

如果任何這些類型的日誌已傳送到 CloudWatch Logs 中的某個日誌群組，則若要設定將另一種類型的日誌傳送到同一個日誌群組，您只需要 `logs:CreateLogDelivery` 許可。

**日誌群組和資源政策**

日誌送往的日誌群組必須具有包含特定許可的資源政策。如果日誌群組目前沒有資源政策，且設定記錄的使用者具有日誌群組的 `logs:PutResourcePolicy`、`logs:DescribeResourcePolicies` 及`logs:DescribeLogGroups` 許可，則當您開始將日誌傳送至 CloudWatch Logs 時， AWS 會自動建立下列政策。對於新建立的訂閱，資源政策是在日誌群組層級設定，大小上限為 51，200 個位元組。如果現有的帳戶層級資源政策已透過萬用字元授予許可，則不會建立單獨的日誌群組層級政策。若要檢查特定日誌群組的 logGroup 層級資源政策，請使用 `describe-resource-policies`命令，並將 `--resource-arn` 參數設定為日誌群組 ARN，並將 `--policy-scope` 參數設定為 `RESOURCE`。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AWSLogDeliveryWrite20150319",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "delivery.logs.amazonaws.com"
                ]
            },
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:111122223333:log-group:my-log-group:log-stream:*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": [
                        "0123456789"
                    ]
                },
                "ArnLike": {
                    "aws:SourceArn": [
                        "arn:aws:logs:us-east-1:111122223333:*"
                    ]
                }
            }
        }
    ]
}
```

------

日誌群組的資源政策限制為 51，200 個位元組。一旦達到此限制，AWS 就無法新增新許可。這需要客戶手動修改政策，以授予 `logs:CreateLogStream`和 `logs:PutLogEvents`動作`delivery.logs.amazonaws.com`的服務主體許可。客戶應該將日誌群組名稱字首與萬用字元搭配使用，例如 ，`/aws/vendedlogs/*`並將此日誌群組名稱用於未來的交付建立。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AWSLogDeliveryWrite20150319",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "delivery.logs.amazonaws.com"
                ]
            },
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:111122223333:log-group:my-log-group/aws/vendedlogs/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": [
                        "0123456789"
                    ]
                },
                "ArnLike": {
                    "aws:SourceArn": [
                        "arn:aws:logs:us-east-1:111122223333:*"
                    ]
                }
            }
        }
    ]
}
```

------

# 傳送至 Amazon S3 的日誌
<a name="AWS-logs-infrastructure-S3"></a>

當您將日誌設定為傳送至 Amazon S3 時， 會視需要 AWS 建立或變更與接收日誌的 S3 儲存貯體相關聯的資源政策。

直接發佈至 Amazon S3 的日誌會發佈至您指定的現有儲存貯體。在指定的儲存貯體中，每五分鐘會建立一或多個日誌檔案。

當您第一次將日誌傳送到 Amazon S3 儲存貯體時，傳送日誌的服務會記錄儲存貯體的擁有者，以確保日誌僅傳送到屬於此帳戶的儲存貯體。因此，若要變更 Amazon S3 儲存貯體擁有者，您必須在原始服務中重新建立或更新日誌訂閱。

**注意**  
CloudFront 使用的許可模型與其他將付費日誌傳送至 S3 的 服務不同。如需詳細資訊，請參閱[設定標準記錄和存取日誌檔案所需的許可](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html#AccessLogsBucketAndFileOwnership)。  
此外，如果您針對 CloudFront 存取日誌和另一個日誌來源使用相同的 S3 儲存貯體，在 CloudFront 的儲存貯體上啟用 ACL 也會將許可授予使用此儲存貯體的所有其他日誌來源。

**重要**  
如果您要將日誌傳送至 Amazon S3 儲存貯體，且儲存貯體政策包含 `NotAction`或 `NotPrincipal`元素，則自動將日誌交付許可新增至儲存貯體，並建立日誌訂閱將會失敗。若要成功建立日誌訂閱，您需要手動將日誌交付許可新增至儲存貯體政策，然後建立日誌訂閱。如需詳細資訊，請參閱本節中的指示。  
如果儲存貯體使用客戶受管 AWS KMS 金鑰進行伺服器端加密，您還必須為客戶受管金鑰新增金鑰政策。如需詳細資訊，請參閱[Amazon S3 儲存貯體伺服器端加密](#AWS-logs-SSE-KMS-S3)。  
如果目的地儲存貯體已啟用 SSE-KMS 和儲存貯體金鑰，則連接的客戶受管 KMS 金鑰政策不再適用於所有請求。如需詳細資訊，請參閱[使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html)。  
如果您使用付費日誌和 S3 加密搭配客戶受 AWS KMS 管金鑰，則必須在設定儲存貯體時使用完整 AWS KMS 金鑰 ARN，而非金鑰 ID。如需詳細資訊，請參閱 [ put-bucket-encryption](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-encryption.html)。

**使用者許可**

您必須以具有下列許可的帳戶登入，才能第一次設定將任何這些類型的日誌傳送到 Amazon S3。
+ `logs:CreateLogDelivery`
+ `S3:GetBucketPolicy`
+ `S3:PutBucketPolicy`

如果任何這些類型的日誌已傳送到某個 Amazon S3 儲存貯體，則若要設定將另一種類型的日誌傳送到同一個儲存貯體，您只需要有 `logs:CreateLogDelivery` 許可。

**S3 儲存貯體資源政策**

日誌送往的 S3 儲存貯體必須具有包含特定許可的資源政策。如果儲存貯體目前沒有資源政策，且設定記錄的使用者具有儲存貯體的 `S3:GetBucketPolicy` 和 `S3:PutBucketPolicy` 許可，則當您開始將日誌傳送至 Amazon S3 時， AWS 會自動建立下列政策。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "AWSLogDeliveryWrite20150319",
    "Statement": [
        {
            "Sid": "AWSLogDeliveryAclCheck",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": [
                        "0123456789"
                    ]
                },
                "ArnLike": {
                    "aws:SourceArn": [
                        "arn:aws:logs:us-east-1:111122223333:*"
                    ]
                }
            }
        },
        {
            "Sid": "AWSLogDeliveryWrite",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/account-ID/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control",
                    "aws:SourceAccount": [
                        "0123456789"
                    ]
                },
                "ArnLike": {
                    "aws:SourceArn": [
                        "arn:aws:logs:us-east-1:111122223333:*"
                    ]
                }
            }
        }
    ]
}
```

------

在先前的政策中，對於 `aws:SourceAccount`，指定要將日誌交付至此儲存貯體的帳戶 IDS 清單。對於 `aws:SourceArn`，指定產生日誌之資源的 ARN 清單，格式為 `arn:aws:logs:source-region:source-account-id:*`。

如果儲存貯體具有資源政策，但該政策未包含前一個政策中出現的陳述式，且設定記錄的使用者具有儲存貯體的 `S3:GetBucketPolicy` 和 `S3:PutBucketPolicy` 許可，則該陳述式會附加至儲存貯體的資源政策。

**注意**  
在某些情況下， AWS CloudTrail 如果 `s3:ListBucket`許可尚未授予 ，您可能會在 中看到`AccessDenied`錯誤`delivery.logs.amazonaws.com`。若要避免 CloudTrail 日誌中出現這些錯誤，您必須將 `s3:ListBucket` 許可授予 `delivery.logs.amazonaws.com`，且必須包含與先前儲存貯體政策中設定的 `s3:GetBucketAcl` 許可一起顯示的 `Condition` 參數。為簡化此操作而不用建立一個新的 `Statement`，你可以直接將 `AWSLogDeliveryAclCheck` 更新為 `“Action”: [“s3:GetBucketAcl”, “s3:ListBucket”]`

## Amazon S3 儲存貯體伺服器端加密
<a name="AWS-logs-SSE-KMS-S3"></a>

您可以啟用伺服器端加密搭配 Amazon S3 S3-managed金鑰 (SSE-S3) 或使用存放在 AWS Key Management Service (SSE-KMS) 中的 AWS KMS 金鑰進行伺服器端加密，以保護 Amazon S3 儲存貯體中的資料。如需詳細資訊，請參閱[使用伺服器端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)。

如果您選擇 SSE-S3，則不需要其他組態。Amazon S3 會處理加密金鑰。

**警告**  
如果您選擇 SSE-KMS，您必須使用客戶受管金鑰，因為此案例不支援使用 AWS 受管金鑰。如果您使用 AWS 受管金鑰設定加密，日誌將以無法讀取的格式交付。

當您使用客戶受管 AWS KMS 金鑰時，您可以在啟用儲存貯體加密時指定客戶受管金鑰的 Amazon Resource Name (ARN)。您必須將以下內容新增至客戶受管金鑰的金鑰政策 (而不是 S3 儲存貯體的儲存貯體政策)，以便日誌傳遞帳戶可以寫入您的 S3 儲存貯體。

如果您選擇 SSE-KMS，則必須使用客戶受管金鑰，因為此情況不支援使用 AWS 受管金鑰。當您使用客戶受管 AWS KMS 金鑰時，您可以在啟用儲存貯體加密時指定客戶受管金鑰的 Amazon Resource Name (ARN)。您必須將以下內容新增至客戶受管金鑰的金鑰政策 (而不是 S3 儲存貯體的儲存貯體政策)，以便日誌傳遞帳戶可以寫入您的 S3 儲存貯體。

```
{
    "Sid": "Allow Logs Delivery to use the key", 
    "Effect": "Allow", 
    "Principal": {
        "Service": [ "delivery.logs.amazonaws.com" ] 
    }, 
    "Action": [ 
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:SourceAccount": ["0123456789"]
        },
        "ArnLike": {
            "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"]
        }
        }
}
```

對於 `aws:SourceAccount`，指定要將日誌交付至此儲存貯體的帳戶 IDS 清單。對於 `aws:SourceArn`，指定產生日誌之資源的 ARN 清單，格式為 `arn:aws:logs:source-region:source-account-id:*`。

# 傳送至 Firehose 的日誌
<a name="AWS-logs-infrastructure-Firehose"></a>

本節適用於上一節資料表中列出的日誌類型傳送至 Firehose 的情況：

**使用者許可**

若要第一次設定將任何這類日誌傳送至 Firehose，您必須使用下列許可登入 帳戶。
+ `logs:CreateLogDelivery`
+ `firehose:TagDeliveryStream`
+ `iam:CreateServiceLinkedRole`

如果這些類型的日誌中有任何一種已經傳送到 Firehose，則若要設定將另外一種類型的日誌傳送至 Firehose，您只需要擁有 `logs:CreateLogDelivery`和 `firehose:TagDeliveryStream`許可。

**用於許可的 IAM 角色**

由於 Firehose AWS 不使用資源政策，因此 會在設定將這些日誌傳送至 Firehose 時使用 IAM 角色。 會 AWS 建立名為 的服務連結角色**AWSServiceRoleForLogDelivery**。此服務連結角色包含下列許可。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "firehose:PutRecord",
                "firehose:PutRecordBatch",
                "firehose:ListTagsForDeliveryStream"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/LogDeliveryEnabled": "true"
                }
            },
            "Effect": "Allow"
        }
    ]
}
```

------

此服務連結角色會針對`LogDeliveryEnabled`標籤設定為 的所有 Firehose 交付串流授予許可`true`。當您設定記錄時，會將此標籤 AWS 提供給目的地交付串流。

此服務連結角色也有信任政策，以允許 `delivery.logs.amazonaws.com` 服務委託人擔任所需的服務連結角色。該信任政策如下：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------