跳至內容

我在 Amazon S3 中修改儲存貯體政策時,收到 "You don't have permissions to edit bucket policy" 錯誤訊息,要怎麼進行疑難排解?

2 分的閱讀內容
0

我在修改 Amazon Simple Storage Service (Amazon S3) 儲存貯體的儲存貯體政策時,收到 "You don't have permissions to edit bucket policy" 錯誤訊息,我必須進行疑難排解。

簡短描述

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。

由於下列原因,您的使用者會收到 "You don't have permissions to edit bucket policy" 錯誤訊息:

若要解決上述問題,請完成下列疑難排解步驟。

解決方法

檢查您的 s3:GetBucketPolicy 和 s3:PutBucketPolicy 權限

請完成下列步驟:

  1. 開啟 IAM 主控台。
  2. 在導覽窗格中,選取用於存取儲存貯體政策的身分,例如 Users (使用者) 或 Roles (角色)。
  3. 選取您用來存取儲存貯體政策的 IAM 身分名稱。
  4. 在 IAM 身分的 Permissions (權限) 索引標籤中,展開每個政策以檢視其 JSON 政策文件。
  5. 在 JSON 政策文件中,搜尋與存取 Amazon S3 相關的政策。接著,確認您具有該儲存貯體的 s3:GetBucketPolicy 和 s3:PutBucketPolicy 動作權限。
    **注意:**若沒有包含 s3:GetBucketPolicy 和 s3:PutBucketPolicy 動作的政策,請將這些權限新增至政策中。如需修改 IAM 權限的指示,請參閱變更 IAM 使用者的權限。
    下列範例 IAM 政策允許 IAM 身分在 DOC-EXAMPLE-BUCKET 上執行 s3:GetBucketPolicy 和 s3:PutBucketPolicy 動作:
    {  "Version": "2012-10-17",  
      "Statement": [  
        {  
          "Sid": "ModifyBucketPolicy",  
          "Action": [  
            "s3:GetBucketPolicy",  
            "s3:PutBucketPolicy"  
          ],  
          "Effect": "Allow",  
          "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"  
        },  
        {  
          "Sid": "AccessS3Console",  
          "Action": [  
            "s3:GetBucketLocation",  
            "s3:ListAllMyBuckets"  
          ],  
          "Effect": "Allow",  
          "Resource": "arn:aws:s3:::*"  
        }  
      ]  
    }
    **注意:**前述 IAM 政策中的 AccessS3Console 陳述式會授與 Amazon S3 主控台存取權。該陳述式並非專門用於儲存貯體政策變更。
  6. 在 JSON 政策文件中,搜尋包含 "Effect": "Deny" 的陳述式。接著,確認這些陳述式不會拒絕您的 IAM 身分存取 s3:GetBucketPolicy 或 s3:PutBucketPolicy。
  7. 請務必在政策的 Resource (資源) 區段中提供儲存貯體的 Amazon Resource Name (ARN)。在前述範例中,ARN 為 aws:s3:::DOC-EXAMPLE-BUCKET。
    **注意:**s3:GetBucketPolicy 和 s3:PutBucketPolicy 為儲存貯體層級動作。
  8. 請檢查您是否在 IAM 政策中套用了全域條件,例如 aws:SourceIP,以限制 s3:GetBucketPolicy 和 s3:PutBucketPolicy 動作。如果這些條件限制了存取,請將其移除或更新。

如果儲存貯體政策不存在,請新增儲存貯體政策

如果您找不到授與 s3:GetBucketPolicy 或 s3:PutBucketPolicy 權限的政策,請新增政策,將這些權限授與您的 IAM 身分。如果您找到拒絕存取 s3:GetBucketPolicy 或 s3:PutBucketPolicy 的政策,請移除這些政策。

使用具有儲存貯體存取權的另一個 IAM 身分來修改儲存貯體政策

請完成下列步驟:

  1. 開啟 Amazon S3 主控台。
  2. 在左側導覽窗格中,選擇 General purpose buckets (一般用途儲存貯體) 或 Directory buckets (目錄儲存貯體)。
  3. 從儲存貯體清單中,開啟您要變更儲存貯體政策的儲存貯體。
  4. 選擇 Permissions (權限) 索引標籤。
  5. 選擇 Bucket policy (儲存貯體政策)。
  6. 搜尋包含 "Effect": "Deny" 的陳述式。
  7. 編輯儲存貯體政策,更新 "Effect": "Deny" 陳述式,解除對 IAM 身分存取 s3:GetBucketPolicy 或 s3:PutBucketPolicy 的限制。
  8. 請檢查儲存貯體政策是否包含 aws:PrincipalArn 等條件,限制了您的 IAM 實體存取 s3:GetBucketPolicy 和 s3:PutBucketPolicy 動作。如果這些條件限制了存取,請將其移除或更新。

刪除並重新建立拒絕所有人存取的儲存貯體政策

如果沒有人可以存取 s3:GetBucketPolicy、s3:PutBucketPolicy 或所有 Amazon S3 動作 (s3:*),請使用 delete-bucket-policy AWS CLI 命令刪除政策:

delete-bucket-policy   
-bucket example_bucket

**注意:**請將 example_bucket 替換成您的儲存貯體名稱。

如果您不慎讓自己無法存取儲存貯體,導致無法刪除儲存貯體政策,請重新取得儲存貯體的存取權。刪除儲存貯體政策後,即可建立新的政策。

關閉 Amazon S3 封鎖公開存取功能

如果您的儲存貯體政策授與公開存取權,請為該儲存貯體關閉 Amazon S3 封鎖公開存取功能。如需更多資訊,請參閱封鎖對 Amazon S3 儲存體的公開存取權以及「公開」的意義。

**注意:**為了防止不慎開放公開存取私有儲存貯體,請在停用 AWS 帳戶層級的 Amazon S3 封鎖公開存取功能之前,先為您的儲存貯體啟用此功能。

針對 AWS Organizations,請刪除不允許存取 Amazon S3 的 SCP

如果您使用 AWS Organizations,請檢閱您的服務 (SCP)。尋找明確拒絕 s3:PutBucketPolicy 動作或其他 Amazon S3 政策動作的陳述式。當組織不需要這些政策時,請刪除為 s3:* 動作套用 Deny 效果的 SCP。

以下範例政策會拒絕存取所有 Amazon S3 動作:

{  "Version": "2012-10-17",  
  "Statement": [  
    {  
      "Effect": "Deny",  
      "Action": "s3:*",  
      "Resource": "*"  
    }  
  ]  
}