當我將檔案上傳到具有 AWS KMS 預設加密的 Amazon S3 儲存貯體時,為什麼會收到「存取遭拒」錯誤訊息?

2 分的閱讀內容
0

我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體具有 AWS Key Management Service (AWS KMS) 預設加密。我嘗試將檔案上傳到存儲桶,但 Amazon S3 傳回存取遭拒錯誤訊息。我該如何解決這個問題?

解決方法

首先,請確認:

然後,根據您收到的錯誤訊息更新 IAM 使用者或角色的 AWS KMS 權限。

重要:

  • 如果 AWS KMS key 和 IAM 角色屬於不同的 AWS 帳戶,則必須更新 IAM 政策和 KMS 金鑰政策。請務必將 KMS 權限新增至 IAM 政策和 KMS 金鑰政策。
  • 若要使用 IAM 政策來控制 KMS 金鑰的存取權,KMS 金鑰的金鑰政策必須授予帳戶使用 IAM 政策的權限。

「呼叫 PutObject 作業時發生錯誤 (AccessDenied): 存取遭拒」

此錯誤訊息表示您的 IAM 使用者或角色需要 kms:GenerateDataKey 動作的權限。

請按照以下步驟為 kms:GenerateDataKey 新增權限:

1.    開啟 IAM 主控台

2.    選擇您用來將檔案上傳到 Amazon S3 儲存貯體的 IAM 使用者或角色。

3.    在權限索引標籤中,展開各個政策以檢視其 JSON 政策文件。

4.    在 JSON 政策文件中,尋找與 AWS KMS 存取相關的政策。檢閱包含**"Effect": "Allow"** 的陳述式,檢查使用者或角色是否具有權對儲存貯體的 AWS KMS key 執行 kms:GenerateDataKey 動作。

5.    如果缺少此權限,請將權限新增至適當的政策。如需指示,請參閱為使用者新增權限 (主控台)修改角色權限政策 (主控台)

6.    在 JSON 政策文件中,尋找包含**"Effect": "Deny"** 的陳述式。確認這些陳述式不會拒絕對儲存貯體執行 s3:PutObject 動作。陳述式不得拒絕 IAM 使用者或角色對用於加密儲存貯體的金鑰存取 kms:GenerateDataKey 動作。此外,在使用 VPC 端點政策、服務控制政策、權限界限或工作階段政策時,不得限制所需的 KMS 和 S3 權限。

「呼叫 CreateMultipartUpload 作業時發生錯誤 (AccessDenied): 存取遭拒」

此錯誤訊息表示您的 IAM 使用者或角色需要 kms:GenerateDataKeykms:Decrypt 動作的權限。

請按照以下步驟為 kms:GenerateDataKeykms:Decrypt 新增權限:

1.    開啟 IAM 主控台

2.    選擇您用來將檔案上傳到 Amazon S3 儲存貯體的 IAM 使用者或角色。

3.    在權限索引標籤中,展開各個政策以檢視其 JSON 政策文件。

4.    在 JSON 政策文件中,尋找與 AWS KMS 存取相關的政策。檢閱包含**"Effect": "Allow"** 的陳述式,檢查角色是否具有對儲存貯體 AWS KMS key 的 kms:GenerateDataKeykms:Decrypt 權限。

5.    如果缺少這些權限,請將權限新增至適當的政策。如需指示,請參閱為使用者新增權限 (主控台)修改角色權限政策 (主控台)

6.    在 JSON 政策文件中,尋找包含**"Effect": "Deny"** 的陳述式。然後,確認這些陳述式不會拒絕對儲存貯體執行 s3:PutObject 動作。陳述式不得拒絕 IAM 使用者或角色對用於加密儲存貯體的金鑰存取 kms:GenerateDataKeykms:Decrypt 動作。此外,在使用 VPC 端點政策、服務控制政策、權限界限或工作階段政策時,不得限制所需的 KMS 和 S3 權限。


相關資訊

設定 Amazon S3 儲存貯體的預設伺服器端加密行為

AWS 官方
AWS 官方已更新 2 年前