跳至內容

如何使用 S3 封鎖公開存取功能來管理對 S3 資源的公開存取?

2 分的閱讀內容
0

我想管理對 Amazon Simple Storage Service (Amazon S3) 資源的存取權。為此,我想使用 S3 封鎖公開存取。

解決方法

您可以設定 Amazon S3 封鎖公開存取,以實現不同層級的存取權

新增必要權限

若要更改 S3 封鎖公開存取設定,請確保您的 AWS Identity and Access Management (IAM) 使用者或角色具有以下權限:

  • s3:PutAccountPublicAccessBlock
  • s3:PutBucketPublicAccessBlock

若要查看您目前的 S3 封鎖公開存取設定,請確保您的 IAM 使用者或角色具有以下權限:

  • s3:GetAccountPublicAccessBlock
  • s3:GetBucketPublicAccessBlock

如需詳細資訊,請參閱權限

啟用或停用 S3 封鎖公開存取

**注意:**自 2023 年 4 月起,Amazon S3 會自動為您建立的所有儲存貯體啟用 S3 封鎖公開存取。

您可以在帳戶層級儲存貯體層級或同時在兩個層級上,設定 S3 封鎖公開存取設定。

啟用 S3 封鎖公開存取

啟用 S3 封鎖公開存取後,Amazon S3 會執行以下動作:

  • 拒絕匿名和未經驗證的請求,沒有例外。使用 Web 瀏覽器或 curl 存取的 Amazon S3 URI 和網址會收到 "HTTP 403 Access Denied" 錯誤。
  • 忽略您套用於 Amazon S3 物件的新公用 ACL,並撤銷使用者對 S3 儲存貯體和物件的存取權。

停用 S3 封鎖公開存取

如果您停用 S3 封鎖公開存取,Amazon S3 會允許使用公開儲存貯體政策或公開 ACL 存取物件。您可能會因 Amazon S3 請求 (例如 LISTGET) 而產生費用。如果有人對公開儲存貯體或物件發出匿名請求,AWS 會向您收取費用。AWS Config 規則和 IAM Access Analyzer for S3 會產生有關儲存貯體公開狀態的警告。

停用 S3 封鎖公開存取後,您的 Amazon S3 主控台會在外部存取摘要面板上顯示存取設定

對 "Access Denied" 與 S3 儲存貯體錯誤進行疑難排解

當您嘗試在 S3 儲存貯體上啟用或停用 S3 封鎖公開存取時,您可能會收到 "Access Denied" 錯誤。

若要對此問題進行疑難排解,請執行下列動作:

  • 確認 AWS Organizations 服務控制政策 (SCP) 未禁止在帳戶或儲存貯體層級修改 S3 封鎖公開存取。檢查 s3:PutBucketPublicAccessBlocks3:PutAccountPublicAccessBlock 動作的 Deny 陳述式。
  • 如果您的儲存貯體在 Access (存取) 欄顯示 Error (錯誤),請將以下權限新增至您的 IAM 政策,以列出儲存貯體和公開存取設定:
    s3:GetAccountPublicAccessBlock
    s3:GetBucketPublicAccessBlock
    s3:GetBucketPolicyStatus
    s3:GetBucketLocation
    s3:GetBucketAcl
    s3:ListAccessPoints
    s3:ListAllMyBuckets

識別修改 S3 封鎖公開存取的 IAM 使用者或角色

查看您的 AWS CloudTrail 事件歷史記錄,找出以下 EventNames: 的事件:

  • 對於帳戶層級,請檢查 PutAccountPublicAccessBlock
  • 對於儲存貯體層級,請檢查 PutBucketPublicAccessBlock

若要找出呼叫者的 Amazon Resource Name (ARN),請檢查日誌中的 UserIdentity 欄位。日誌範例:

 "userIdentity": {  
 "type": "AssumedRole",  
 "principalId": "[AccountID]:[RoleName]",  
 "arn": "arn:aws:sts::[AccountID]:assumed-role/[RoleName]/[RoleSession]",

接著,檢查 bucketName 以找出已修改的 S3 儲存貯體。日誌範例:

"requestParameters": {  
 "publicAccessBlock": "",  
 "bucketName": "[BucketName]"
AWS 官方已更新 9 個月前