我在 Amazon S3 中修改儲存貯體政策時,收到 "You don't have permissions to edit bucket policy" 錯誤訊息,要怎麼進行疑難排解?
我在修改 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" 錯誤訊息:
- 您的 AWS Identity and Access Management (IAM) 使用者或角色沒有執行 s3:GetBucketPolicy 和 s3:PutBucketPolicy API 操作的權限。
- 儲存貯體政策拒絕您的 IAM 身分對 s3:GetBucketPolicy 和 s3:PutBucketPolicy 的權限。
- 您已為儲存貯體啟用 Amazon S3 封鎖公開存取功能。
- AWS Organizations 服務控制政策 (SCP) 不允許存取 Amazon S3。
若要解決上述問題,請完成下列疑難排解步驟。
解決方法
檢查您的 s3:GetBucketPolicy 和 s3:PutBucketPolicy 權限
請完成下列步驟:
- 開啟 IAM 主控台。
- 在導覽窗格中,選取用於存取儲存貯體政策的身分,例如 Users (使用者) 或 Roles (角色)。
- 選取您用來存取儲存貯體政策的 IAM 身分名稱。
- 在 IAM 身分的 Permissions (權限) 索引標籤中,展開每個政策以檢視其 JSON 政策文件。
- 在 JSON 政策文件中,搜尋與存取 Amazon S3 相關的政策。接著,確認您具有該儲存貯體的 s3:GetBucketPolicy 和 s3:PutBucketPolicy 動作權限。
**注意:**若沒有包含 s3:GetBucketPolicy 和 s3:PutBucketPolicy 動作的政策,請將這些權限新增至政策中。如需修改 IAM 權限的指示,請參閱變更 IAM 使用者的權限。
下列範例 IAM 政策允許 IAM 身分在 DOC-EXAMPLE-BUCKET 上執行 s3:GetBucketPolicy 和 s3:PutBucketPolicy 動作:
**注意:**前述 IAM 政策中的 AccessS3Console 陳述式會授與 Amazon S3 主控台存取權。該陳述式並非專門用於儲存貯體政策變更。{ "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:::*" } ] } - 在 JSON 政策文件中,搜尋包含 "Effect": "Deny" 的陳述式。接著,確認這些陳述式不會拒絕您的 IAM 身分存取 s3:GetBucketPolicy 或 s3:PutBucketPolicy。
- 請務必在政策的 Resource (資源) 區段中提供儲存貯體的 Amazon Resource Name (ARN)。在前述範例中,ARN 為 aws:s3:::DOC-EXAMPLE-BUCKET。
**注意:**s3:GetBucketPolicy 和 s3:PutBucketPolicy 為儲存貯體層級動作。 - 請檢查您是否在 IAM 政策中套用了全域條件,例如 aws:SourceIP,以限制 s3:GetBucketPolicy 和 s3:PutBucketPolicy 動作。如果這些條件限制了存取,請將其移除或更新。
如果儲存貯體政策不存在,請新增儲存貯體政策
如果您找不到授與 s3:GetBucketPolicy 或 s3:PutBucketPolicy 權限的政策,請新增政策,將這些權限授與您的 IAM 身分。如果您找到拒絕存取 s3:GetBucketPolicy 或 s3:PutBucketPolicy 的政策,請移除這些政策。
使用具有儲存貯體存取權的另一個 IAM 身分來修改儲存貯體政策
請完成下列步驟:
- 開啟 Amazon S3 主控台。
- 在左側導覽窗格中,選擇 General purpose buckets (一般用途儲存貯體) 或 Directory buckets (目錄儲存貯體)。
- 從儲存貯體清單中,開啟您要變更儲存貯體政策的儲存貯體。
- 選擇 Permissions (權限) 索引標籤。
- 選擇 Bucket policy (儲存貯體政策)。
- 搜尋包含 "Effect": "Deny" 的陳述式。
- 編輯儲存貯體政策,更新 "Effect": "Deny" 陳述式,解除對 IAM 身分存取 s3:GetBucketPolicy 或 s3:PutBucketPolicy 的限制。
- 請檢查儲存貯體政策是否包含 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": "*" } ] }
相關內容
已提問 2 年前
已提問 3 年前
已提問 1 年前

