從 AWS 服務啟用記錄 - Amazon CloudWatch Logs

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

從 AWS 服務啟用記錄

雖然許多服務只會將日誌發佈至 CloudWatch Logs,但某些 AWS 服務可以直接將日誌發佈至 Amazon Simple Storage Service 或 Amazon Data 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:存取日誌

付費日誌 支援的 [V2 許可] 支援的 [V2 許可] 支援的 [V2 許可]

AWS CloudHSM 稽核日誌

自訂日誌

支援

CloudWatch Evidently 評估事件日誌

付費日誌 支援的 [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 OSS) 日誌

付費日誌 支援的 [V1 許可] 支援的 [V1 許可]

AWS Elastic Beanstalk 日誌

自訂日誌

支援

Amazon Elastic Container Service 日誌

自訂日誌

支援

Amazon Elastic Kubernetes Service 控制平面日誌

付費日誌

支援

AWS Elemental MediaPackage 存取日誌

付費日誌 支援的 [V2 許可] 支援的 [V2 許可] 支援的 [V2 許可]

AWS Elemental MediaTailor logs

付費日誌 支援的 [V2 許可] 支援的 [V2 許可] 支援的 [V2 許可]
AWS Entity Resolution 日誌 付費日誌 支援的 [V2 許可] 支援的 [V2 許可] 支援的 [V2 許可]

Amazon EventBridge 管道記錄

付費日誌 支援的 [V1 許可] 支援的 [V1 許可] 支援的 [V1 許可]

AWS Fargate 日誌

自訂日誌

支援

AWS Fault Injection Service 實驗日誌

付費日誌 支援的 [V1 許可]

Amazon FinSpace

付費日誌 支援的 [V1 許可] 支援的 [V1 許可] 支援的 [V1 許可]

AWS Global Accelerator 流程日誌

付費日誌 支援的 [V1 許可]

AWS Glue 工作日誌

自訂日誌

支援

IAM Identity Center 錯誤日誌

付費日誌 支援的 [V2 許可] 支援的 [V2 許可] 支援的 [V2 許可]

Amazon Interactive Video Service 聊天日誌

付費日誌 支援的 [V1 許可] 支援的 [V1 許可] 支援的 [V1 許可]

AWS IoT 日誌

自訂日誌

支援

AWS IoT FleetWise logs

付費日誌 支援的 [V1 許可] 支援的 [V1 許可] 支援的 [V1 許可]

AWS Lambda 日誌

付費日誌

支援

支援

支援

Amazon Macie 日誌

自訂日誌

支援

Amazon SES 日誌 付費日誌 支援的 [V2 許可] 支援的 [V2 許可] 支援的 [V2 許可]

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 Service 擷取日誌

付費日誌 支援的 [V1 許可] 支援的 [V1 許可] 支援的 [V1 許可]

AWS OpsWorks 日誌

自訂日誌

支援

AWS PCS 日誌 付費日誌 支援的 [V2 許可] 支援的 [V2 許可] 支援的 [V2 許可]

Amazon 關聯式資料庫 ServicePostgreSQL 日誌

自訂日誌

支援

Amazon Q Business 對話日誌

付費日誌 支援的 [V2 許可] 支援的 [V2 許可] 支援的 [V2 許可]

AWS RoboMaker 日誌

自訂日誌

支援

Amazon Route 53 公有 DNS 查詢日誌

付費日誌

支援

Amazon Route 53 Resolver 查詢日誌

付費日誌

支援的 [V1 許可]

支援的 [V1 許可]

Amazon SageMaker AI 事件

付費日誌

支援的 [V1 許可]

Amazon SageMaker AI 工作者事件

付費日誌

支援的 [V1 許可]

AWS Site-to_Site VPN 日誌

付費日誌

支援的 [V1 許可]

支援的 [V1 許可]

支援的 [V1 許可]

Amazon Simple Email Service 日誌

付費日誌 支援的 [V2 許可] 支援的 [V2 許可] 支援的 [V2 許可]

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 許可]
Amazon VPC Route Server 付費日誌 支援的 [V2 許可] 支援的 [V2 許可] 支援的 [V2 許可]

AWS WAF 日誌

付費日誌 支援的 [V1 許可] 支援的 [V1 許可]

支援

Amazon WorkMail 稽核日誌

付費日誌 支援的 [V2 許可] 支援的 [V2 許可] 支援的 [V2 許可]

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

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

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

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

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

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

傳送至 CloudWatch Logs 的日誌

重要

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

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

使用者許可

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

  • logs:CreateLogDelivery

  • logs:PutResourcePolicy

  • logs:DescribeResourcePolicies

  • logs:DescribeLogGroups

    注意

    當您指定 logs:DescribeLogGroupslogs:DescribeResourcePolicieslogs:PutResourcePolicy許可時,請務必將其Resource行的 ARN 設定為使用*萬用字元,而不是只指定單一日誌群組名稱。例如 "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:*"

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

日誌群組和資源政策

日誌送往的日誌群組必須具有包含特定許可的資源政策。如果日誌群組目前沒有資源政策,且設定記錄的使用者具有日誌群組的 logs:PutResourcePolicylogs:DescribeResourcePolicieslogs:DescribeLogGroups 許可,則當您開始將日誌傳送至 CloudWatch Logs 時, 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 許可,則該陳述式會附加至日誌群組的資源政策。

傳送至 Amazon S3 的日誌

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

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

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

注意

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

此外,如果您針對 CloudFront 存取日誌和另一個日誌來源使用相同的 S3 儲存貯體,在 CloudFront 的儲存貯體上啟用 ACL 也會將許可授予使用此儲存貯體的所有其他日誌來源。

重要

如果您要將日誌傳送至 Amazon S3 儲存貯體,且儲存貯體政策包含 NotActionNotPrincipal元素,則自動將日誌交付許可新增至儲存貯體,並建立日誌訂閱將會失敗。若要成功建立日誌訂閱,您需要手動將日誌交付許可新增至儲存貯體政策,然後建立日誌訂閱。如需詳細資訊,請參閱本節中的指示。

如果儲存貯體使用客戶受管 AWS KMS 金鑰進行伺服器端加密,您還必須為客戶受管金鑰新增金鑰政策。如需詳細資訊,請參閱Amazon S3

如果目的地儲存貯體已啟用 SSE-KMS 和儲存貯體金鑰,則連接的客戶受管 KMS 金鑰政策不再適用於所有請求。如需詳細資訊,請參閱使用 Amazon S3 儲存貯體金鑰降低 SSE-KMS 的成本

如果您使用付費日誌和 S3 加密搭配客戶受管 AWS KMS 金鑰,您必須在設定儲存貯體時使用完整 AWS KMS 金鑰 ARN,而非金鑰 ID。如需詳細資訊,請參閱 put-bucket-encryption

使用者許可

您必須以具有下列許可的帳戶登入,才能第一次設定將任何這些類型的日誌傳送到 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:::amzn-s3-demo-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:::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: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 S3-managed金鑰 (SSE-S3) 或使用存放在 AWS Key Management Service (SSE-KMS) 中的 AWS KMS 金鑰進行伺服器端加密,以保護 Amazon S3 儲存貯體中的資料。如需詳細資訊,請參閱使用伺服器端加密保護資料

如果您選擇 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 的日誌

本節適用於上一節資料表中列出的日誌類型傳送至 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 Logs、Amazon S3 或 Firehose。

工作日誌交付包含三個元素:

  • DeliverySource(代表實際傳送日誌之資源的) 邏輯物件。

  • DeliveryDestination,這是代表實際交付目的地的邏輯物件。

  • Delivery將交付來源連線至交付目的地的

若要設定支援 AWS 的服務與目的地之間的日誌交付,您必須執行下列動作:

  • 使用 PutDeliverySource 建立交付來源。

  • 使用 PutDeliveryDestination 建立交付目的地。

  • 如果您要跨帳戶交付日誌,則必須在目的地帳戶中使用 PutDeliveryDestinationPolicy 將 IAM 政策指派給目的地。此政策授權從帳戶 A 中的交付來源建立交付至帳戶 B 中的交付目的地。若要跨帳戶交付,您必須自行手動建立許可政策。

  • 使用 CreateDelivery

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

重要

刪除日誌產生資源後,您有責任移除日誌交付資源。若要這樣做,請遵循下列步驟。

  1. Delivery 使用 DeleteDelivery 操作刪除 。

  2. DeliverySource 使用 DeleteDeliverySource 操作刪除 。

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

傳送至 CloudWatch Logs 的日誌

使用者許可

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

{ "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", "logs:UpdateDeliveryConfiguration" ], "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", "logs:DescribeConfigurationTemplates" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyCWL", "Effect": "Allow", "Action": [ "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:region:account-id:*" ] } ] }

日誌群組和資源政策

日誌送往的日誌群組必須具有包含特定許可的資源政策。如果日誌群組目前沒有資源政策,且設定記錄的使用者具有日誌群組的 logs:PutResourcePolicylogs:DescribeResourcePolicieslogs:DescribeLogGroups 許可,則當您開始將日誌傳送至 CloudWatch Logs 時, 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:*"] } } } ] }

傳送至 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", "logs:UpdateDeliveryConfiguration" ], "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", "logs:DescribeConfigurationTemplates" ], "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": "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: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 S3-managed金鑰 (SSE-S3) 或使用存放在 AWS Key Management Service (SSE-KMS) 中的 AWS KMS 金鑰進行伺服器端加密,以保護 Amazon S3 儲存貯體中的資料。如需詳細資訊,請參閱使用伺服器端加密保護資料

如果您選擇 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: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", "logs:UpdateDeliveryConfiguration" ], "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", "logs:DescribeConfigurationTemplates" ], "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/*" } ] }

主控台特定許可

除了前面各節中列出的許可之外,如果您使用主控台而非 APIs設定日誌交付,您也需要下列其他許可:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLogDeliveryActionsConsoleCWL", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:CreateLogGroups" ], "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": [ "*" ] } ] }

跨帳戶交付範例

在此範例中,涉及兩個帳戶。具有日誌產生資源的帳戶是帳戶 A、ID:AAAAAAAAA,而具有日誌使用資源的帳戶是帳戶 B、ID:BBBBBBBBBB

帳戶 A 想要使用 ARN arn:aws:bedrock:regionAAAAAAAAAA:knowledge-base/XXXXXXXXXX 從帳戶中的 Amazon Bedrock 知識庫傳遞日誌。

在此範例中,帳戶 A 需要下列許可:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowVendedLogDeliveryForKnowledgeBase", "Effect": "Allow", "Action": [ "bedrock:AllowVendedLogDeliveryForResource" ], "Resource": "arn:aws:bedrock:region:AAAAAAAAAAAA:knowledge-base/XXXXXXXXXX" }, { "Sid": "CreateLogDeliveryPermissions", "Effect": "Allow", "Action": [ "logs:PutDeliverySource", "logs:CreateDelivery" ], "Resource": [ "arn:aws:logs:region:AAAAAAAAAAAA:delivery-source:*", "arn:aws:logs:region:AAAAAAAAAAAA:delivery:*", "arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:*" ] } ] }

建立交付來源

首先,帳戶 A 會建立交付來源及其基礎知識庫:

aws logs put-delivery-source --name my-delivery-source --log-type APPLICATION_LOGS --resource-arn arn:aws:bedrock:region:AAAAAAAAAAAA:knowledge-base/XXXXXXXXXX

接下來,帳戶 B 必須使用下列其中一個流程建立交付目的地:

設定交付至 Amazon S3 儲存貯體

帳戶 B 想要使用 ARN arn:aws:s3::amzn-s3-demo-bucket 接收其 S3 儲存貯體的日誌。在此範例中,帳戶 B 將需要下列許可:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PutLogDestinationPermissions", "Effect": "Allow", "Action": [ "logs:PutDeliveryDestination", "logs:PutDeliveryDestinationPolicy" ], "Resource": "arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:*" } ] }

儲存貯體在其儲存貯體政策中將需要下列許可:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogsDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/AAAAAAAAAAAA/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["AAAAAAAAAAAA"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region:AAAAAAAAAAAA:delivery-source:my-delivery-source"] } } } ] }

如果儲存貯體使用 SSE-KMS 加密,請確保 AWS KMS 金鑰政策具有適當的許可。例如,如果 KMS 金鑰為 arn:aws:kms:region:BBBBBBBBBBBB:key/X,請使用下列項目:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLogsGenerateDataKey", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" } "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:BBBBBBBBBBBB:key/X", "Condition": { "StringEquals": { "aws:SourceAccount": ["AAAAAAAAAAAA"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region:AAAAAAAAAAAA:delivery-source:my-delivery-source"] } } } ] }

然後,帳戶 B 可以使用 S3 儲存貯體做為目的地資源來建立交付目的地:

aws logs put-delivery-destination --name my-s3-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket"

接下來,帳戶 B 在其新建立的交付目的地上建立交付目的地政策,這會授予帳戶 A 建立日誌交付的許可。將新增至新建立的交付目的地的政策如下:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDelivery", "Effect": "Allow", "Principal": { "AWS": "AAAAAAAAAAAA" }, "Action": [ "logs:CreateDelivery" ], "Resource": "arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:my-s3-delivery-destination" } ] }

此政策將儲存在帳戶 B 的電腦中,做為destination-policy-s3.json連接此資源之用,帳戶 B 將執行下列命令:

aws logs put-delivery-destination-policy --delivery-destination-name my-s3-delivery-destination --delivery-destination-policy file://destination-policy-s3.json

最後,帳戶 A 會建立交付,將帳戶 A 中的交付來源連結至帳戶 B 中的交付目的地。

aws logs create-delivery --delivery-source-name my-delivery-source --delivery-destination-arn arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:my-s3-delivery-destination

設定交付至 Firehose 串流

在此範例中,帳戶 B 想要將日誌接收到其 Firehose 串流。Firehose 串流具有下列 ARN,並設定為使用 DirectPut 交付串流類型:

arn:aws:firehose:region:BBBBBBBBBBBB:deliverystream/X

在此範例中,帳戶 B 需要下列許可:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowFirehoseCreateSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::BBBBBBBBBBBB:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery", }, { "Sid": "AllowFirehoseTagging", "Effect": "Allow", "Action": [ "firehose:TagDeliveryStream" ], "Resource": "arn:aws:firehose:region:BBBBBBBBBBBB:deliverystream/X" }, { "Sid": "AllowFirehoseDeliveryDestination", "Effect": "Allow", "Action": [ "logs:PutDeliveryDestination", "logs:PutDeliveryDestinationPolicy" ], "Resource": "arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:*" } ] }

Firehose 串流必須將標籤LogDeliveryEnabled設定為 true

帳戶 B 接著會使用 Firehose 串流做為目的地資源來建立交付目的地:

aws logs put-delivery-destination --name my-fh-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:firehose:region:BBBBBBBBBBBB:deliverystream/X"

接下來,帳戶 B 在其新建立的交付目的地上建立交付目的地政策,這會授予帳戶 A 建立日誌交付的許可。要新增至新建立的交付目的地的政策如下:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDelivery", "Effect": "Allow", "Principal": { "AWS": "AAAAAAAAAAAA" }, "Action": [ "logs:CreateDelivery" ], "Resource": "arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:my-fh-delivery-destination" } ] }

此政策會儲存在帳戶 B 的電腦中,做為destination-policy-fh.json連接此資源之用,帳戶 B 會執行下列命令:

aws logs put-delivery-destination-policy --delivery-destination-name my-fh-delivery-destination --delivery-destination-policy file://destination-policy-fh.json

最後,帳戶 A 會建立交付,將帳戶 A 中的交付來源連結至帳戶 B 中的交付目的地。

aws logs create-delivery --delivery-source-name my-delivery-source --delivery-destination-arn arn:aws:logs:region:BBBBBBBBBBBB:delivery-destination:my-fh-delivery-destination

預防跨服務混淆代理人

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

我們建議在資源政策中使用 aws:SourceArnaws:SourceOrgIDaws:SourceAccountaws: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 全域條件內容金鑰來預防混淆代理人問題。

AWS 受管政策的 CloudWatch Logs 更新

檢視自此服務開始追蹤這些變更以來CloudWatch Logs AWS 受管政策更新的詳細資訊。如需有關此頁面變更的自動提醒,請訂閱 CloudWatch Logs 文件歷史記錄頁面上的 RSS 摘要。

變更 描述 日期

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

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

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

2021 年 7 月 15 日

CloudWatch Logs 開始追蹤變更

CloudWatch Logs 開始追蹤其 AWS 受管政策的變更。

2021 年 6 月 10 日