AWSSupport-TroubleshootS3PublicRead - AWS Systems Manager 自動化 Runbook 參考

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

AWSSupport-TroubleshootS3PublicRead

Description

AWSSupport-TroubleshootS3PublicRead Runbook 診斷從您在 S3BucketName 參數中指定的公有 Amazon Simple Storage Service (Amazon S3) 儲存貯體讀取物件時發生問題。也會分析 S3 儲存貯體中物件的設定子集。

執行此自動化 (主控台)

限制

  • 此自動化不會檢查允許公開存取物件的存取點。

  • 此自動化不會評估 S3 儲存貯體政策中的條件索引鍵。

  • 如果您使用的是 AWS Organizations,則此自動化不會評估服務控制政策,以確認允許存取 Amazon S3。

文件類型

 自動化

擁有者

Amazon

平台

Linux、macOS, Windows

參數

  • AutomationAssumeRole

    類型:字串

    說明:(選用) 允許 Systems Manager Automation 代表您執行動作ARN的 () 角色的 AWS Identity and Access Management Amazon Resource Name (IAM)。如果未指定角色,Systems Manager Automation 會使用啟動此 Runbook 的使用者許可。

  • CloudWatchLogGroupName

    類型:字串

    說明:(選用) 您要傳送自動化輸出的 Amazon CloudWatch Logs 日誌群組。如果找不到符合您指定值的日誌群組,自動化將會使用此參數值建立日誌群組。此自動化所建立之日誌群組的保留期間為 14 天。

  • CloudWatchLogStreamName

    類型:字串

    說明:(選用) 您要傳送自動化輸出的 CloudWatch Logs 日誌串流。如果找不到符合您指定值的日誌串流,自動化將會使用此參數值建立日誌串流。如果您未為此參數指定值,自動化將使用 ExecutionId作為日誌串流的名稱。

  • HttpGet

    類型:布林值

    有效值:true | false

    預設:true

    描述:(選用) 如果此參數設定為 true ,自動化會對S3BucketName指定的物件提出部分HTTP請求。只會使用範圍HTTP標頭傳回物件的第一個位元組。

  • IgnoreBlockPublicAccess

    類型:布林值

    有效值:true | false

    預設:false

    說明:(選用) 如果此參數設定為 true ,自動化會忽略您在 S3BucketName 參數中指定的 S3 儲存貯體的公有存取區塊設定。不建議從預設值變更此參數。

  • MaxObjects

    類型:整數

    有效值:1-25

    預設:5

    描述:(選用) 您在 S3BucketName 參數中指定的 S3 儲存貯體中要分析的物件數量。

  • S3BucketName

    類型:字串

    描述:(必要) 要進行故障診斷的 S3 儲存貯體名稱。

  • S3PrefixName

    類型:字串

    說明:(選用) 您要在 S3 儲存貯體中分析的物件的金鑰名稱字首。如需詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南 中的物件金鑰

  • StartAfter

    類型:字串

    描述:(選用) 您希望自動化開始分析 S3 儲存貯體中物件的物件金鑰名稱。

  • ResourcePartition

    類型:字串

    有效值:aws | aws-us-gov | aws-cn

    預設:aws

    描述:(必要) S3 儲存貯體所在的分割區。

  • 詳細資訊

    類型:布林值

    有效值:true | false

    預設:false

    說明:(選用) 若要在自動化期間傳回更多詳細資訊,請將此參數設定為 true 。如果參數設定為 false ,則只會傳回警告和錯誤訊息。

必要IAM許可

AutomationAssumeRole 參數需要下列動作才能成功使用 Runbook。

只有在您希望自動化將日誌資料傳送至 CloudWatch 日誌時,才需要 logs:CreateLogGroup logs:CreateLogStream 、 和 logs:PutLogEvents許可。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iam:SimulateCustomPolicy", "iam:GetContextKeysForCustomPolicy", "s3:ListAllMyBuckets", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:PutRetentionPolicy", "s3:GetAccountPublicAccessBlock" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectTagging" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*", "Effect": "Allow" }, { "Action": [ "s3:ListBucket", "s3:GetBucketLocation", "s3:GetBucketPublicAccessBlock", "s3:GetBucketRequestPayment", "s3:GetBucketPolicyStatus", "s3:GetBucketPolicy", "s3:GetBucketAcl" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1", "Effect": "Allow" } ] }

文件步驟

  • aws:assertAwsResourceProperty - 確認 S3 儲存貯體存在,並且可存取。

  • aws:executeScript - 傳回 S3 儲存貯體位置和您的正式使用者 ID。

  • aws:executeScript - 傳回帳戶的公有存取區塊設定和 S3 儲存貯體。

  • aws:assertAwsResourceProperty - 確認 S3 儲存貯體付款人設定為 BucketOwner 。如果在 S3 儲存貯體上啟用 Requester Pays ,則自動化會結束。

  • aws:executeScript - 傳回 S3 儲存貯體政策狀態,並判斷其是否被視為公開。如需公有 S3 儲存貯體的詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南 中的「公」意義

  • aws:executeAwsApi - 傳回 S3 儲存貯體政策。

  • aws:executeAwsApi - 傳回 S3 儲存貯體政策中找到的所有內容索引鍵。

  • aws:assertAwsResourceProperty - 確認GetObjectAPI動作的 S3 儲存貯體政策中是否有明確拒絕。

  • aws:executeAwsApi - 傳回 S3 儲存貯體的存取控制清單 (ACL)。

  • aws:executeScript - 如果您指定 CloudWatchLogGroupName 參數的值,則建立 CloudWatch 日誌日誌群組和日誌串流。

  • aws:executeScript - 根據您在 Runbook 輸入參數中指定的值, 會評估自動化期間收集的任何 S3 儲存貯體設定是否阻止大眾存取物件。此指令碼會執行下列函數:

    • 評估公有存取區塊設定

    • 根據您在 、 S3PrefixNameStartAfter 參數中指定的值,從 S3 MaxObjects 儲存貯體傳回物件。

    • 傳回 S3 儲存貯體政策,以模擬從 S3 儲存貯體傳回之物件的自訂IAM政策。

    • 如果HttpGet參數設定為 true ,則對傳回的物件執行部分HTTP請求。只會使用範圍HTTP標頭傳回物件的第一個位元組。

    • 檢查傳回物件的金鑰名稱,以確認其結尾是一或兩個句點。無法從 Amazon S3 主控台下載以期間結尾的物件金鑰名稱。

    • 檢查傳回物件的擁有者是否與 S3 儲存貯體的擁有者相符。

    • 檢查物件是否ACL授予匿名使用者READFULL_CONTROL許可。

    • 傳回與物件相關聯的標籤。

    • 使用模擬IAM政策來確認GetObjectAPI動作的 S3 儲存貯體政策中是否有此物件的明確拒絕。

    • 傳回物件的中繼資料,以確認支援儲存體類別。

    • 檢查物件的伺服器端加密設定,以確認物件是否使用 AWS Key Management Service (AWS KMS) 客戶受管金鑰加密。

輸出

AnalyzeObjects.bucket

AnalyzeObjects.object