為什麼我無法使用 AWS KMS 金鑰的加密方式將大型檔案上傳到 Amazon S3?

1 分的閱讀內容
0

我想要將大型檔案上傳到我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。在我的上傳請求中,我會包括 AWS Key Management Service (AWS KMS) 金鑰的加密資訊。但是,我收到「存取遭拒」的錯誤。

簡短說明

確認您具有權限可對用於加密物件的 AWS KMS 金鑰執行 kms:Decrypt 動作。

對於大型檔案,AWS Command Line Interface (AWS CLI) 的高階 s3 命令、AWS SDK,以及許多第三方程式都會自動執行多組件上傳。若要使用 AWS KMS 金鑰來加密多組件上傳,您必須擁有 kms:GenerateDataKeykms:Decrypt 權限。kms:GenerateDataKey 權限允許您啟動上傳。透過 kms:Decrypt 權限,您可以使用用於相同物件的先前組件的金鑰來加密新上傳的組件。

**注意事項:**上載所有組件之後,您必須組裝上傳的組件以完成多組件上傳作業。因為上傳的組件是使用 AWS KMS 金鑰進行伺服器端加密,因此您必須先解密物件組件,才能組裝組件。因此,您必須對使用 AWS KMS 金鑰 (SSE-KMS) 的伺服器端加密多組件上傳請求具有 kms:Decrypt權限。

解決方法

您的 AWS Identity and Access Management (IAM) 角色和金鑰可能存在於相同的 AWS 帳戶或不同帳戶中。如果您的 IAM 角色和金鑰位於相同的帳戶中,則您可以從 IAM 政策或 AWS KMS 金鑰政策指定 kms:Decrypt 權限。如果您的 IAM 角色和金鑰位於不同的帳戶中,則您必須同時在金鑰和 IAM 政策中指定 kms:Decrypt 權限。

金鑰政策

檢閱 AWS 管理主控台政策視圖中的 AWS KMS 金鑰政策

在金鑰政策中,搜尋將您的 IAM 使用者或角色的 ARN 列為 AWS 主體的陳述式。ARN 的格式如下:arn:aws:iam::111122223333:user/john

然後,檢查 IAM 使用者或角色陳述式允許的動作清單。若為多組件上傳,允許的動作清單必須包含 SSE-KMS 的 kms:Decrypt

例如,金鑰政策中的下列陳述式可讓使用者 John 執行 kms:Decryptkms:GenerateDataKey 動作:

{  
            "Sid": "Allow use of the key",  
            "Effect": "Allow",  
            "Principal": {  
                "AWS": "arn:aws:iam::111122223333:user/john"  
            },  
            "Action": [  
                "kms:Decrypt",  
                "kms:GenerateDataKey"  
            ],  
            "Resource": "*"  
        },

IAM 權限

若要檢閱您的 IAM 權限,請開啟 IAM 主控台,然後選擇您的 IAM 使用者或角色。

檢閱套用至 IAM 使用者或角色的權限政策清單。請確定有適用的政策可讓您對用來加密物件的金鑰執行 kms:Decrypt 動作:

{  
  "Version": "2012-10-17",  
  "Statement": {  
    "Effect": "Allow",  
    "Action": [  
      "kms:Decrypt",  
      "kms:GenerateDataKey"  
    ],  
    "Resource": [  
      "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"  
    ]  
  }  
}

此範例陳述式授予 IAM 使用者存取權,以對金鑰 arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd 執行 kms:Decryptkms:GenerateDataKey

如需如何更新 IAM 權限的指示,請參閱變更 IAM 使用者的權限

相關資訊

AWS 政策產生器

AWS 官方
AWS 官方已更新 8 個月前