啟用從 AWS 服務記錄 - Amazon CloudWatch 日誌

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

啟用從 AWS 服務記錄

雖然許多服務只會將日誌發佈到 CloudWatch 日誌,但有些 AWS 服務可以將日誌直接發佈到 Amazon 簡單儲存服務或 Amazon 資料 Firehose。如果您對日誌的主要需求是在其中一項服務中進行儲存或處理,則可以輕鬆地讓生成日誌的服務將日誌直接傳送到 Amazon S3 或 Firehose,而無需進行其他設置。

即使日誌直接發佈到 Amazon S3 或 Firehose,也需要支付費用。如需詳細資訊,請參閱 Amazon CloudWatch 定價中索引標籤上的付費日誌。

某些 AWS 服務會使用通用基礎結構來傳送記錄檔。若要啟用從這些服務記錄日誌,您必須以具有特定許可的使用者身分登入。此外,您必須授與權限,才 AWS 能啟用要傳送的記錄。

對於需要這些許可的服務,需要兩種許可版本。在資料表中會將需要這些額外許可的服務標註為支援的 [V1 許可]支援的 [V2 許可] 。如需有關這些必要許可的詳細資訊,請參閱資料表後面的章節。

日誌類型 CloudWatch Logs Amazon S3 Firehose

Amazon API Gateway 存取日誌

支援的 [V1 許可]

AWS AppSync logs

支援

Amazon Aurora MySQL 日誌

支援

Amazon Bedrock 知識庫記錄

支援的 [V2 許可] 支援的 [V2 許可] 支援的 [V2 許可]

Amazon Chime 媒體品質指標日誌和 SIP 訊息日誌

支援的 [V1 許可]

CloudFront:訪問日誌

支援的 [V1 許可]

AWS CloudHSM 稽核記錄

支援

CloudWatch 顯然評估事件日誌

支援的 [V1 許可] 支援的 [V1 許可]

CloudWatch 互聯網監控日誌

支援的 [V1 許可]

CloudTrail 日誌

支援

AWS CodeBuild logs

支援

Amazon CodeWhisperer 事件記錄

支援的 [V2 許可] 支援的 [V2 許可] 支援的 [V2 許可]

Amazon Cognito logs

支援的 [V1 許可]

Amazon Connect 日誌

支援

AWS DataSync logs

支援

Amazon ElastiCache 的 Redis 日誌

支援的 [V1 許可] 支援的 [V1 許可]

AWS Elastic Beanstalk logs

支援

Amazon Elastic Container Service 日誌

支援

Amazon Elastic Kubernetes Service 控制平面日誌

支援

Amazon EventBridge 管道記錄

支援的 [V1 許可] 支援的 [V1 許可] 支援的 [V1 許可]

AWS Fargate logs

支援

AWS Fault Injection Service 實驗日誌

支援的 [V1 許可]

Amazon FinSpace

支援的 [V1 許可] 支援的 [V1 許可] 支援的 [V1 許可]

AWS Global Accelerator 流程記錄

支援的 [V1 許可]

AWS Glue 工作記錄

支援

IAM 身分識別中心錯誤記錄

支援的 [V2 許可] 支援的 [V2 許可] 支援的 [V2 許可]

Amazon Interactive Video Service 聊天日誌

支援的 [V1 許可] 支援的 [V1 許可] 支援的 [V1 許可]

AWS IoT logs

支援

AWS IoT FleetWise logs

支援的 [V1 許可] 支援的 [V1 許可] 支援的 [V1 許可]

AWS Lambda logs

支援

Amazon Macie 日誌

支援

AWS Mainframe Modernization

支援的 [V1 許可] 支援的 [V1 許可] 支援的 [V1 許可]

Amazon Managed Service for Prometheus

支援的 [V1 許可]

Amazon MSK 代理程式日誌

支援的 [V1 許可]

支援的 [V1 許可] 支援的 [V1 許可]

Amazon MSK Connect 日誌

支援的 [V1 許可]

支援的 [V1 許可] 支援的 [V1 許可]

Amazon MQ 一般和稽核日誌

支援

AWS Network Firewall 記錄

支援的 [V1 許可]

支援的 [V1 許可] 支援的 [V1 許可]

Network Load Balancer 存取日誌

支援的 [V1 許可]

OpenSearch 日誌

支援

Amazon OpenSearch 服務擷取日誌

支援的 [V1 許可] 支援的 [V1 許可] 支援的 [V1 許可]

AWS OpsWorks logs

支援

Amazon 關係數據庫 ServicePostgre SQL 日誌

支援

AWS RoboMaker 日誌

支援

Amazon Route 53 公有 DNS 查詢日誌

支援

Amazon Route 53 Resolver 查詢日誌

支援的 [V1 許可]

支援的 [V1 許可]

Amazon SageMaker 活動

支援的 [V1 許可]

Amazon SageMaker 工人活動

支援的 [V1 許可]

AWS 網站到網站 VPN 記錄檔

支援的 [V1 許可]

支援的 [V1 許可]

支援的 [V1 許可]

Amazon Simple Notification Service 日誌

支援

Amazon Simple Notification Service 資料保護政策日誌

支援

EC2 Spot 執行個體資料摘要檔案

支援的 [V1 許可]

AWS Step Functions 快速工作流程和標準工作流程

支援的 [V1 許可]

Storage Gateway 稽核日誌和運作狀態日誌

支援的 [V1 許可]

AWS Transfer Family logs

支援的 [V1 許可]

支援的 [V1 許可]

支援的 [V1 許可]

AWS Verified Access logs

支援的 [V1 許可]

支援的 [V1 許可]

支援的 [V1 許可]

Amazon Virtual Private Cloud 流程日誌

支援

支援的 [V1 許可] 支援的 [V1 許可]

Amazon VPC Lattice 存取日誌

支援的 [V1 許可] 支援的 [V1 許可] 支援的 [V1 許可]

AWS WAF logs

支援的 [V1 許可] 支援的 [V1 許可]

支援

Amazon WorkMail 日誌

支援的 [V2 許可] 支援的 [V2 許可] 支援的 [V2 許可]

需要額外許可 [V1] 的日誌記錄

某些 AWS 服務使用通用基礎設施將日誌傳送到 CloudWatch 日誌、Amazon S3 或 Firehose。若要讓下表列出的 AWS 服務將日誌傳送到這些目的地,您必須以具有特定許可的使用者身分登入。

此外,必須授與權限才能傳送記錄。 AWS AWS 可以在設定記錄時自動建立這些權限,或者您可以在設定記錄之前先自行建立這些權限。對於跨帳戶傳遞,您必須自行手動建立權限原則。

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

下表摘要說明本節中的資訊適用於哪些日誌類型及哪些日誌目的地。

下列各節提供各個目的地的詳細資訊。

傳送至記錄 CloudWatch 檔的記錄

重要

當您在下列清單中設定要傳送至記錄檔的 CloudWatch 記錄檔類型時,請視需要 AWS 建立或變更與接收記錄檔之記錄群組相關聯的資源策略。繼續閱讀本節以查看詳細資訊。

當上一節中表格中列出的記錄檔類型傳送至「 CloudWatch 記錄檔」時,本節適用:

使用者許可

若要設定第一次將這些類型的記錄檔傳送至 CloudWatch 記錄檔,您必須登入具有下列權限的帳戶。

  • logs:CreateLogDelivery

  • logs:PutResourcePolicy

  • logs:DescribeResourcePolicies

  • logs:DescribeLogGroups

    注意

    當您指定logs:DescribeLogGroups、或logs:PutResourcePolicy權限時logs:DescribeResourcePolicies,請務必將其Resource行的 ARN 設定為使用*萬用字元,而不是僅指定單一記錄群組名稱。例如:"Resource": "arn:aws:logs:us-east-1:111122223333:log-group:*"

如果這些類型的記錄檔已經傳送至 CloudWatch 記錄檔中的記錄群組,則若要設定將另一種記錄檔傳送到相同的記錄群組,您只需要該logs:CreateLogDelivery權限即可。

日誌群組和資源政策

日誌送往的日誌群組必須具有包含特定許可的資源政策。如果記錄群組目前沒有資源原則,而且設定記錄的使用者具有記錄群組的logs:PutResourcePolicylogs:DescribeResourcePolicies、和logs:DescribeLogGroups權限,則當您開始將記錄檔傳送至記 CloudWatch 錄檔時,會 AWS 自動為其建立下列原則。

{ "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:0123456789:log-group:my-log-group:log-stream:*" ], "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"] } } } ] }

如果日誌群組有資源政策,但該政策未包含前一個政策中出現的陳述式,且設定記錄的使用者具有日誌群組的 logs:PutResourcePolicylogs:DescribeResourcePolicieslogs:DescribeLogGroups 許可,則該陳述式會附加至日誌群組的資源政策。

日誌群組資源政策大小限制考量

這些服務必須在資源原則中列出要傳送記錄檔的每個記錄群組,而且 CloudWatch 記錄檔資源策略的長度限制為 5120 個字元。將記錄檔傳送至大量記錄群組的服務可能會遇到此限制。

為了減輕此問題, CloudWatch Logs 會監視傳送記錄檔的服務所使用的資源原則大小,以及偵測到原則達到 5120 個字元的大小限制時, CloudWatch 記錄檔會自動/aws/vendedlogs/*在該服務的資源原則中啟用。然後,您就可以開始使用名稱開頭為 /aws/vendedlogs/ 的日誌群組,作為這些服務的日誌目的地。

傳送至 Amazon S3 的日誌

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

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

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

注意

CloudFront 使用與將付費日誌傳送到 S3 的其他服務不同的許可模型。如需詳細資訊,請參閱設定標準記錄和存取日誌檔案所需的許可

此外,如果您使用相同的 S3 儲存貯體來 CloudFront 存取日誌和另一個記錄來源,啟用儲存貯體上的 ACL CloudFront 也會授與使用此儲存貯體的所有其他日誌來源的權限。

使用者許可

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

  • logs:CreateLogDelivery

  • S3:GetBucketPolicy

  • S3:PutBucketPolicy

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

S3 儲存貯體資源政策

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

{ "Version": "2012-10-17", "Id": "AWSLogDeliveryWrite20150319", "Statement": [ { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::my-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"] } } }, { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-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:0123456789:*"] } } } ] }

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

如果儲存貯體具有資源政策,但該政策未包含前一個政策中出現的陳述式,且設定記錄的使用者具有儲存貯體的 S3:GetBucketPolicyS3: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 儲存貯體伺服器端加密

您可以使用 Amazon S3 受管金鑰 (SSE-S3) 啟用伺服器端加密,或使用存放在 (SSE-KMS) 的伺服器端加密來保護 Amazon S3 儲存貯體中的資 AWS Key Management Service 料。 AWS KMS 如需詳細資訊,請參閱使用伺服器端加密保護資料

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

警告

如果您選擇 SSE-KMS,則必須使用客戶受管金鑰,因為此案例不支援使用 AWS 受管金鑰。如果您使用 AWS 受管理金鑰設定加密,記錄檔將會以無法讀取的格式傳遞。

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

如果您選擇 SSE-KMS,則必須使用客戶受管金鑰,因為此案例不支援使用 AWS 受管金鑰。使用客戶受管 AWS KMS 金鑰時,您可以在啟用儲存貯體加密時指定客戶受管金鑰的 Amazon 資源名稱 (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

本節適用於上一節表格中列出的記錄類型傳送至 Firehose 時:

使用者許可

若要設定第一次將這些類型的記錄傳送至 Firehose,您必須登入具有下列權限的帳戶。

  • logs:CreateLogDelivery

  • firehose:TagDeliveryStream

  • iam:CreateServiceLinkedRole

如果這些類型的記錄檔已經傳送到 Firehose,則若要設定另一種類型的記錄檔傳送至 Firehose,您只需要擁有logs:CreateLogDeliveryfirehose:TagDeliveryStream權限即可。

用於許可的 IAM 角色

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

{ "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 服務委託人擔任所需的服務連結角色。該信任政策如下:

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

需要額外許可 [V2] 的日誌記錄

有些 AWS 服務會使用新方法來傳送記錄檔。這是一種靈活的方法,可讓您設定從這些服務到下列一或多個目的地的 CloudWatch 日誌傳遞:日誌、Amazon S3 或 Firehose。

工作記錄傳送包含三個元素:

  • ADeliverySource,這是一個邏輯對象,表示實際發送日誌的資源(S)。

  • ADeliveryDestination,這是代表實際傳遞目的地的邏輯物件。

  • ADelivery,將傳送來源連接至傳送目的地

若要設定支援的 AWS 服務與目的地之間的記錄傳遞,您必須執行下列動作:

  • 使用建立傳送來源PutDeliverySource

  • 使用建立傳送目的地PutDeliveryDestination

  • 如果您要跨帳戶傳送記錄檔,則必須 PutDeliveryDestinationPolicy在目標帳戶中使用,將 IAM 策略指派給目的地。此原則授權從帳戶 A 中的傳遞來源建立傳遞至帳戶 B 中的傳遞目的地。對於跨帳戶傳遞,您必須自行手動建立權限原則。

  • 使用將一個傳送來源和一個傳送目的地完全配對,以建立傳送 CreateDelivery

以下各節提供您在登入後使用 V2 處理程序設定每種目的地的日誌傳遞所需之許可的詳細資訊。可將這些許可授予您登入時具有的 IAM 角色。

重要

您有責任在刪除記錄產生資源之後移除記錄傳遞資源。為此,請按照下列步驟操作。

  1. 使用DeliveryDeleteDelivery業刪除。

  2. 使用DeliverySourceDeleteDeliverySource業刪除。

  3. 如果DeliveryDestination與您剛剛刪除的DeliverySource相關聯僅用於此特定內容DeliverySource,則可以使用該DeleteDeliveryDestinations操作將其刪除。

傳送至記錄 CloudWatch 檔的記錄

使用者許可

若要啟用將記錄檔傳送至 CloudWatch 記錄檔,您必須使用下列權限登入。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery" ], "Resource": [ "arn:aws:logs:region:account-id:delivery:*", "arn:aws:logs:region:account-id:delivery-source:*", "arn:aws:logs:region:account-id:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyCWL", "Effect": "Allow", "Action": [ "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:region:account-id:*" ] } ] }

日誌群組和資源政策

日誌送往的日誌群組必須具有包含特定許可的資源政策。如果記錄群組目前沒有資源原則,而且設定記錄的使用者具有記錄群組的logs:PutResourcePolicylogs:DescribeResourcePolicies、和logs:DescribeLogGroups權限,則當您開始將記錄檔傳送至記 CloudWatch 錄檔時,會 AWS 自動為其建立下列原則。

{ "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:0123456789:log-group:my-log-group:log-stream:*" ], "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"] } } } ] }

日誌群組資源政策大小限制考量

這些服務必須在資源原則中列出要傳送記錄檔的每個記錄群組,而且 CloudWatch 記錄檔資源策略的長度限制為 5120 個字元。將日誌傳送至大量日誌群組的服務可能會受到此限制。

為了減輕此問題, CloudWatch Logs 會監視傳送記錄檔的服務所使用的資源原則大小,以及偵測到原則達到 5120 個字元的大小限制時, CloudWatch 記錄檔會自動/aws/vendedlogs/*在該服務的資源原則中啟用。然後,您就可以開始使用名稱開頭為 /aws/vendedlogs/ 的日誌群組,作為這些服務的日誌目的地。

傳送至 Amazon S3 的日誌

使用者許可

若要啟用傳送日誌至 Amazon S3,您登入時必須具有以下許可。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery" ], "Resource": [ "arn:aws:logs:region:account-id:delivery:*", "arn:aws:logs:region:account-id:delivery-source:*", "arn:aws:logs:region:account-id:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyS3", "Effect": "Allow", "Action": [ "s3:PutBucketPolicy", "s3:GetBucketPolicy" ], "Resource": "arn:aws:s3:::bucket-name" } ] }

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

{ "Version": "2012-10-17", "Id": "AWSLogDeliveryWrite20150319", "Statement": [ { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::my-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:delivery-source*"] } } }, { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-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:0123456789:delivery-source:*"] } } } ] }

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

如果儲存貯體具有資源政策,但該政策未包含前一個政策中出現的陳述式,且設定記錄的使用者具有儲存貯體的 S3:GetBucketPolicyS3: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 儲存貯體伺服器端加密

您可以使用 Amazon S3 受管金鑰 (SSE-S3) 啟用伺服器端加密,或使用存放在 (SSE-KMS) 的伺服器端加密來保護 Amazon S3 儲存貯體中的資 AWS Key Management Service 料。 AWS KMS 如需詳細資訊,請參閱使用伺服器端加密保護資料

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

警告

如果您選擇 SSE-KMS,則必須使用客戶受管金鑰,因為此案例不支援使用 AWS 受管金鑰。如果您使用 AWS 受管理金鑰設定加密,記錄檔將會以無法讀取的格式傳遞。

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

如果您選擇 SSE-KMS,則必須使用客戶受管金鑰,因為此案例不支援使用 AWS 受管金鑰。使用客戶受管 AWS KMS 金鑰時,您可以在啟用儲存貯體加密時指定客戶受管金鑰的 Amazon 資源名稱 (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:delivery-source:*"] } } }

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

原木已傳送至 Firehose

使用者許可

若要啟用將記錄檔傳送至 Firehose,您必須使用下列權限登入。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery" ], "Resource": [ "arn:aws:logs:region:account-id:delivery:*", "arn:aws:logs:region:account-id:delivery-source:*", "arn:aws:logs:region:account-id:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyFH", "Effect": "Allow", "Action": [ "firehose:TagDeliveryStream" ], "Resource": [ "arn:aws:firehose:region:account-id:deliverystream/*" ] }, { "Sid": "CreateServiceLinkedRole", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::account-id:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery" } ] }

用於資源許可的 IAM 角色

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

{ "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 服務委託人擔任所需的服務連結角色。該信任政策如下:

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

服務特定權限

除了前幾節中列出的特定目的地權限之外,某些服務還需要明確授權,允許客戶從其資源傳送記錄檔,作為額外的安全層。它會針對在該服務AllowVendedLogDeliveryForResource中出現記錄的資源授權動作。對於這些服務,請使用下列政策,並以適當的值取代服務資源類型。如需這些欄位的服務特定值,請參閱這些服務的說明文件頁面以取得付費記錄檔。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ServiceLevelAccessForLogDelivery", "Effect": "Allow", "Action": [ "service:AllowVendedLogDeliveryForResource" ], "Resource": "arn:aws:service:region:account-id:resource-type/*" } ] }

主機特定權限

除了前幾節所列的權限之外,如果您要使用主控台而非 API 來設定記錄傳遞,您還需要下列其他權限:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLogDeliveryActionsConsoleCWL", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-east-1:111122223333:log-group:*" ] }, { "Sid": "AllowLogDeliveryActionsConsoleS3", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowLogDeliveryActionsConsoleFH", "Effect": "Allow", "Action": [ "firehose:ListDeliveryStreams", "firehose:DescribeDeliveryStream" ], "Resource": [ "*" ] } ] }

預防跨服務混淆代理人

混淆代理人問題屬於安全性問題,其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。在中 AWS,跨服務模擬可能會導致混淆的副問題。在某個服務 (呼叫服務) 呼叫另一個服務 (被呼叫服務) 時,可能會發生跨服務模擬。可以操縱呼叫服務來使用其許可,以其不應有存取許可的方式對其他客戶的資源採取動作。為了預防這種情況, AWS 提供的工具可協助您保護所有服務的資料,而這些服務主體已獲得您帳戶中資源的存取權。

我們建議在資源策略中使用aws:SourceArnaws:SourceAccountaws:SourceOrgID、、和aws:SourceOrgPaths全域條件內容索引鍵,以限制 CloudWatch Logs 將其他服務提供給資源的權限。用於僅aws:SourceArn將一個資源與跨服務存取相關聯。用於aws:SourceAccount讓該帳號中的任何資源與跨服務使用相關聯。用於aws:SourceOrgID允許組織內任何帳號的任何資源與跨服務使用相關聯。用於aws:SourceOrgPaths將 AWS Organizations 路徑中帳號的任何資源與跨服務使用相關聯。如需有關使用和瞭解路徑的詳細資訊,請參閱瞭解 AWS Organizations 實體路徑

防範混淆代理人問題的最有效方法是使用 aws:SourceArn 全域條件內容索引鍵,以及資源的完整 ARN。如果不知道資源的完整 ARN,或者如果您指定了多個資源,請使用 aws:SourceArn 全域內容條件索引鍵搭配萬用字元 (*) 來表示 ARN 的未知部分。例如 arn:aws:servicename:*:123456789012:*

如果 aws:SourceArn 值不包含帳戶 ID (例如 Amazon S3 儲存貯體 ARN),您必須同時使用 aws:SourceAccountaws:SourceArn 來限制許可。

若要大規模防範混淆代理人問題,請在資源型政策中使用 aws:SourceOrgIDaws:SourceOrgPaths 全域條件內容鍵和資源的組織 ID 或組織路徑。當您新增、移除或移動組織中的帳戶時,包含 aws:SourceOrgIDaws:SourceOrgPaths 鍵的政策將會自動包含正確的帳戶,您無需手動更新政策。

本頁先前章節中的政策說明如何使用 aws:SourceArnaws:SourceAccount 全域條件內容金鑰來預防混淆代理人問題。

CloudWatch 記錄 AWS 受管策略的更新

檢視有關 CloudWatch 記錄檔 AWS 受管理策略更新的詳細資料,因為此服務開始追蹤這些變更。如需有關此頁面變更的自動警示,請訂閱 CloudWatch 記錄文件歷史記錄頁面上的 RSS 摘要。

變更 描述 日期

AWSServiceRoleForLogDelivery 服務連結角色策略 — 現有策略的更新

CloudWatch 記錄檔變更了與AWSServiceRoleForLogDelivery服務連結角色相關聯的 IAM 政策中的許可。變更如下:

  • firehose:ResourceTag/LogDeliveryEnabled": "true" 條件金鑰已變更為 aws:ResourceTag/LogDeliveryEnabled": "true"

2021 年 7 月 15 日

CloudWatch 記錄檔開始追蹤變更

CloudWatch 記錄檔開始追蹤其 AWS 受管理策略的變更。

2021 年 6 月 10 日