流量日誌的 Amazon S3 儲存貯體許可 - Amazon Virtual Private Cloud

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

流量日誌的 Amazon S3 儲存貯體許可

根據預設,Amazon S3 儲存貯體及其所包含的物件皆為私有。只有儲存貯體擁有者可存取儲存貯體及存放於其中的物件。但是,儲存貯體擁有者可藉由編寫存取政策,將存取權授予其他資源和使用者。

如果建立流量日誌的使用者擁有儲存貯體且具有該儲存貯體的 PutBucketPolicyGetBucketPolicy 許可,我們就會自動將以下政策連接至該儲存貯體。此政策會覆寫附加至儲存貯體的任何現有政策。

否則,儲存貯體擁有者必須將此政策新增至儲存貯體、指定流量日誌建立者的 AWS 帳戶 ID,否則流量日誌會建立失敗。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的「使用儲存貯體政策」。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "my-s3-arn/*", "Condition": { "StringEquals": { "aws:SourceAccount": account_id, "s3:x-amz-acl": "bucket-owner-full-control" }, "ArnLike": { "aws:SourceArn": "arn:aws:logs:region:account_id:*" } } }, { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::bucket_name", "Condition": { "StringEquals": { "aws:SourceAccount": account_id }, "ArnLike": { "aws:SourceArn": "arn:aws:logs:region:account_id:*" } } } ] }

您為 my-s3-arn 指定的 ARN 取決於您是否使用與 Hive 相容的 S3 字首。

  • 預設字首

    arn:aws:s3:::bucket_name/optional_folder/AWSLogs/account_id/*
  • 與 Hive 相容的 S3 字首

    arn:aws:s3:::bucket_name/optional_folder/AWSLogs/aws-account-id=account_id/*

最佳作法是將這些權限授與記錄傳遞服務主體,而非個別的 AWS 帳戶 ARN。這也是使用 aws:SourceAccountaws:SourceArn 條件金鑰來保護自己免受混淆代理人問題的困擾之最佳實務。來源帳戶是流量日誌的擁有者,且來源 ARN 是日誌服務的萬用字元 (*) ARN。