本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從 AWS 服務啟用記錄
雖然許多服務只會將日誌發佈至 CloudWatch Logs,但某些 AWS 服務可以直接將日誌發佈至 Amazon Simple Storage Service 或 Amazon Data Firehose。如果您的日誌主要需求是在這些服務之一中進行儲存或處理,您可以讓產生日誌的服務直接傳送到 Amazon S3 或 Firehose,而無需額外設定。
即使日誌直接發佈至 Amazon S3 或 Firehose,仍需支付費用。如需詳細資訊,請參閱 Amazon CloudWatch 定價
有些 AWS 服務使用常見的基礎設施來傳送其日誌。若要啟用從這些服務記錄日誌,您必須以具有特定許可的使用者身分登入。此外,您必須將許可授予 AWS ,才能傳送日誌。
對於需要這些許可的服務,需要兩種許可版本。在資料表中會將需要這些額外許可的服務標註為支援的 [V1 許可] 和 支援的 [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: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
會自動建立下列政策。
{ "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:PutResourcePolicy
、logs:DescribeResourcePolicies
及 logs:DescribeLogGroups
許可,則該陳述式會附加至日誌群組的資源政策。
傳送至 Amazon S3 的日誌
當您將日誌設定為傳送至 Amazon S3 時, 會視需要 AWS 建立或變更與接收日誌的 S3 儲存貯體相關聯的資源政策。
直接發佈至 Amazon S3 的日誌會發佈至您指定的現有儲存貯體。在指定的儲存貯體中,每五分鐘會建立一或多個日誌檔案。
當您第一次將日誌傳送到 Amazon S3 儲存貯體時,傳送日誌的服務會記錄儲存貯體的擁有者,以確保日誌僅傳送到屬於此帳戶的儲存貯體。因此,若要變更 Amazon S3 儲存貯體擁有者,您必須在原始服務中重新建立或更新日誌訂閱。
注意
CloudFront 使用的許可模型與其他將付費日誌傳送至 S3 的 服務不同。如需詳細資訊,請參閱設定標準記錄和存取日誌檔案所需的許可。
此外,如果您針對 CloudFront 存取日誌和另一個日誌來源使用相同的 S3 儲存貯體,在 CloudFront 的儲存貯體上啟用 ACL 也會將許可授予使用此儲存貯體的所有其他日誌來源。
重要
如果您要將日誌傳送至 Amazon S3 儲存貯體,且儲存貯體政策包含 NotAction
或 NotPrincipal
元素,則自動將日誌交付許可新增至儲存貯體,並建立日誌訂閱將會失敗。若要成功建立日誌訂閱,您需要手動將日誌交付許可新增至儲存貯體政策,然後建立日誌訂閱。如需詳細資訊,請參閱本節中的指示。
如果儲存貯體使用客戶受管 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:GetBucketPolicy
和 S3: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: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 儲存貯體伺服器端加密
您可以啟用伺服器端加密搭配 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:CreateLogDelivery
和 firehose: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 角色。
重要
刪除日誌產生資源後,您有責任移除日誌交付資源。若要這樣做,請遵循下列步驟。
Delivery
使用 DeleteDelivery 操作刪除 。DeliverySource
使用 DeleteDeliverySource 操作刪除 。如果與您剛刪除
DeliverySource
的DeliveryDestination
相關聯的 僅用於此特定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:PutResourcePolicy
、logs:DescribeResourcePolicies
及logs: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:GetBucketPolicy
和 S3: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: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 儲存貯體伺服器端加密
您可以啟用伺服器端加密搭配 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:region
:AAAAAAAAAA
: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:SourceArn
、aws:SourceOrgID
、 aws:SourceAccount
和 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:SourceAccount
和 aws:SourceArn
來限制許可。
若要大規模防範混淆代理人問題,請在資源型政策中使用 aws:SourceOrgID
或 aws:SourceOrgPaths
全域條件內容鍵和資源的組織 ID 或組織路徑。當您新增、移除或移動組織中的帳戶時,包含 aws:SourceOrgID
或 aws:SourceOrgPaths
鍵的政策將會自動包含正確的帳戶,您無需手動更新政策。
本頁先前章節中的政策說明如何使用 aws:SourceArn
和 aws:SourceAccount
全域條件內容金鑰來預防混淆代理人問題。
AWS 受管政策的 CloudWatch Logs 更新
檢視自此服務開始追蹤這些變更以來CloudWatch Logs AWS 受管政策更新的詳細資訊。如需有關此頁面變更的自動提醒,請訂閱 CloudWatch Logs 文件歷史記錄頁面上的 RSS 摘要。
變更 | 描述 | 日期 |
---|---|---|
CloudWatch Logs 已變更 IAM 政策中與 AWSServiceRoleForLogDelivery 服務連結角色相關聯的許可。變更如下:
|
2021 年 7 月 15 日 | |
CloudWatch Logs 開始追蹤變更 |
CloudWatch Logs 開始追蹤其 AWS 受管政策的變更。 |
2021 年 6 月 10 日 |