從 Amazon S3 下載 KMS 加密物件時,是否需要指定 AWS KMS 金鑰?

1 分的閱讀內容
0

我想從 Amazon Simple Storage Service (Amazon S3) 下載儲存的物件,該服務使用伺服器端加密搭配 AWS Key Management Service (SSE-KMS) 管理的金鑰。

解決方法

從 S3 儲存貯體下載 SSE-KMS 加密的物件時,不需要指定 AWS Key Management Service (KMS) 金鑰識別碼。然而,您需要取得解密 AWS KMS 金鑰的許可。

當使用者傳送 GET 請求時,Amazon S3 必須檢查其是否已獲得適當的授權。Amazon S3 會檢查傳送請求的 AWS Identity and Access Management (IAM) 使用者或角色是否有權解密物件金鑰。如果 IAM 使用者或角色和金鑰屬於同一個 AWS 帳戶,則必須對金鑰政策授予解密許可。

**注意:**當 IAM 使用者或角色和 KMS 金鑰屬於同一個帳戶時,您可以使用 IAM 政策來控制金鑰的存取權限。不過,您必須修改金鑰政策以便明確開啟 IAM 政策並允許存取金鑰。如需詳細資訊,請參閱搭配使用 IAM 政策與 AWS KMS

如果 IAM 使用者或角色和金鑰屬於不同的帳戶,則您必須對 IAM 使用者政策和金鑰政策授予解密許可。

以下是 IAM 政策範例,在允許使用者解密 AWS KMS 金鑰的同時,允許其從 S3 儲存貯體下載:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:kms:example-region-1:123456789012:key/example-key-id",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ]
    }
  ]
}

以下是允許使用者解密金鑰的金鑰政策陳述範例:

{
  "Sid": "Allow decryption of the key",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::123456789012:user/Bob"
    ]
  },
  "Action": [
    "kms:Decrypt"
  ],
  "Resource": "*"
}

**注意:**若是 IAM 使用者或角色與儲存貯體屬於不同帳戶,則儲存貯體政策也必須授予使用者存取物件的權限。例如,如果使用者需要從儲存貯體下載,則使用者必須擁有儲存貯體政策的「s3:GetObject」動作許可。

獲得解密金鑰的權限後,您可以使用 AWS Command Line Interface (AWS CLI) 下載使用該金鑰加密的 S3 物件。請執行類似下列內容的命令:

aws s3api get-object --bucket DOC-EXAMPLE-BUCKET --key dir/example-object-name example-object-name

**注意:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI

相關資訊

GetObject

get-object

透過儲存在 AWS Key Management Service (KMS) 中的 CMK 使用伺服器端加密 (SSE-KMS) 來保護資料

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