

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 删除具有导入密钥材料的 KMS 密钥
<a name="importing-keys-conceptual"></a>

导入的密钥材料允许您在生成的加密密钥下保护您的 Amazon 资源。以下概述说明了如何将密钥材料导入 Amazon KMS。要了解该过程中每个步骤的更多详细信息，请参阅相应主题。

1. [创建不具有密钥材料的 KMS 密钥](importing-keys-create-cmk.md) - 源必须是 `EXTERNAL`。密钥来源为`EXTERNAL`表示密钥是为导入的密钥材料设计的，因此无法 Amazon KMS 为 KMS 密钥生成密钥材料。在后面的步骤中，您会将自己的密钥材料导入此 KMS 密钥中。

   您导入的密钥材料必须与关联 Amazon KMS 密钥的密钥规范兼容。有关兼容性的更多信息，请参阅[导入密钥材料的要求](#importing-keys-material-requirements)。

1. [下载包装公有密钥和导入令牌](importing-keys-get-public-key-and-token.md) – 在完成步骤 1 后，请下载公有密钥和导入令牌。当您的密钥材料导入时，这些物品可以保护您的密钥材料 Amazon KMS。

   在此步骤中，您将选择 RSA 包装密钥的类型（“密钥规范”）以及用于加密向 Amazon KMS传输的传输中数据的包装算法。每次导入或重新导入相同的密钥材料时，您可以选择不同的包装密钥规范和包装密钥算法。

1. [加密密钥材料](importing-keys-encrypt-key-material.md) – 使用在步骤 2 中下载的包装公有密钥加密您在自己的系统上创建的密钥材料。

1. [导入密钥材料](importing-keys-import-key-material.md) – 上传您在步骤 3 中创建的已加密的密钥材料以及您在步骤 2 中下载的导入令牌。

   在此阶段，您可以[设置可选的过期时间](importing-keys-import-key-material.md#importing-keys-expiration)。导入的密钥材料过期后，将其 Amazon KMS 删除，KMS 密钥将无法使用。要继续使用该 KMS 密钥，您必须重新导入相同****的密钥材料。

   导入操作成功完成后，KMS 密钥的密钥状态将从 `PendingImport` 变为 `Enabled`。现在，您可以在加密操作中使用 KMS 密钥。

Amazon KMS 在[创建 KMS 密钥、下载封装公钥](ct-createkey.md)[和导入令牌以及导入密钥](ct-getparametersforimport.md)[材料时，会在 Amazon CloudTrail 日志中](ct-importkeymaterial.md)记录一个条目。 Amazon KMS 还会在您删除导入的密钥材料或 Amazon KMS [删除过期的密钥材料](ct-deleteexpiredkeymaterial.md)时记录一个条目。

## 导入密钥材料的权限
<a name="importing-keys-permissions"></a>

要使用导入的密钥材料创建和管理 KMS 密钥，用户需要在此过程中执行操作的权限。在您创建 KMS 密钥时，您可以在密钥策略中提供 `kms:GetParametersForImport`、`kms:ImportKeyMaterial` 和 `kms:DeleteImportedKeyMaterial` 权限。在 Amazon KMS 控制台中，当您使用**外部**密钥材料来源创建密钥时，会自动为密钥管理员添加这些权限。

若要使用导入的密钥材料创建 KMS 密钥，委托人需要以下权限。
+ [kms: CreateKey](customer-managed-policies.md#iam-policy-example-create-key)（IAM 策略）
  + 要将此权限限制为使用已导入密钥材料的 [KMS 密钥，请使用值为 kms: KeyOrigin](conditions-kms.md#conditions-kms-key-origin) 策略条件`EXTERNAL`。

    ```
    {
      "Sid": "CreateKMSKeysWithoutKeyMaterial",
      "Effect": "Allow",
      "Resource": "*",
      "Action": "kms:CreateKey",
      "Condition": {
        "StringEquals": {
          "kms:KeyOrigin": "EXTERNAL"
        }
      }
    }
    ```
+ [kms: GetParametersForImport](https://docs.amazonaws.cn/kms/latest/APIReference/API_GetParametersForImport.html)（密钥策略或 IAM 策略）
  + 要将此权限限制为使用特定包装算法和封装密钥规范的请求，请使用 k [ms: WrappingAlgorithm](conditions-kms.md#conditions-kms-wrapping-algorithm) 和 k [ms: WrappingKeySpec](conditions-kms.md#conditions-kms-wrapping-key-spec) 策略条件。
+ [kms: ImportKeyMaterial](https://docs.amazonaws.cn/kms/latest/APIReference/API_ImportKeyMaterial.html)（密钥策略或 IAM 策略）
  + 要允许或禁止过期的密钥材料并控制过期日期，请使用 [kms: ExpirationModel](conditions-kms.md#conditions-kms-expiration-model) 和 [kms: ValidTo](conditions-kms.md#conditions-kms-valid-to) 策略条件。

要重新导入导入的密钥材料，委托人需要 k [ms: GetParametersForImport](https://docs.amazonaws.cn/kms/latest/APIReference/API_GetParametersForImport.html) 和 [kms: ImportKeyMaterial](https://docs.amazonaws.cn/kms/latest/APIReference/API_ImportKeyMaterial.html) 权限。

要删除导入的密钥材料，委托人需要 [kms: DeleteImportedKeyMaterial](https://docs.amazonaws.cn/kms/latest/APIReference/API_DeleteImportedKeyMaterial.html) 权限。

例如，要授予示例使用导入的密钥材料管理 KMS 密钥所有方面的 `KMSAdminRole` 权限，请在 KMS 密钥的密钥策略中加入如下所示的密钥策略声明。

```
{
  "Sid": "Manage KMS keys with imported key material",
  "Effect": "Allow",
  "Resource": "*",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/KMSAdminRole"
  },
  "Action": [
    "kms:GetParametersForImport",
    "kms:ImportKeyMaterial",
    "kms:DeleteImportedKeyMaterial"
  ]  
}
```

## 导入密钥材料的要求
<a name="importing-keys-material-requirements"></a>

您导入的密钥材料必须与相关 KMS 密钥的[密钥规范](create-keys.md#key-spec)兼容。对于非对称密钥对，仅导入密钥对的私钥。 Amazon KMS 从私钥派生公钥。

Amazon KMS 支持使用导入的密钥材料的 KMS 密钥的以下密钥规范。
+ **对称加密密钥**
  + **密钥规范：**
    + SYMMETRIC\$1DEFAULT。
  + **要求：**
    + 256 位（32 字节）的二进制数据。
    + 在中国区域，必须是 128 位（16 字节）的二进制数据。
+ **HMAC 密钥**
  + **密钥规范：**
    + HMAC\$1224
    + HMAC\$1256
    + HMAC\$1384
    + HMAC\$1512
  + **要求：**
    + HMAC 密钥材料必须符合 [RFC 2104](https://datatracker.ietf.org/doc/html/rfc2104)。
    + 密钥长度必须至少为密钥规范指定的长度。最大密钥长度为 1024 位。
    + 如果密钥材料的长度超过 1024 位，则可以对密钥材料进行哈希处理，然后导入哈希输出。哈希算法必须与您要创建的 HMAC KMS 密钥的密钥规范相匹配。
  + **示例**：
    + 要将 2048 位的密钥材料导入 HMAC\$1256 密钥，请先计算 2048 位密钥材料的 SHA-256 哈希值，然后将生成的 256 位哈希输出导入 KMS 密钥。
  + **有效的密钥长度：**
    + HMAC\$1224：224–1024 位
    + HMAC\$1256：256–1024 位
    + HMAC\$1384：384–1024 位
    + HMAC\$1512：512–1024 位
+ **RSA 非对称私有密钥**
  + **密钥规范：**
    + RSA\$12048
    + RSA\$13072
    + RSA\$14096
  + **要求：**
    + 您导入的 RSA 非对称私有密钥必须是符合 [RFC 3447](https://datatracker.ietf.org/doc/html/rfc3447/) 的密钥对的一部分。
    + **模数**：2048 位、3072 位或 4096 位
    + **素数数量**：2（不支持多素数 RSA 密钥）
    + 非对称密钥材料必须为 BER 编码或 DER 编码，采用符合 [RFC 5208](https://datatracker.ietf.org/doc/html/rfc5208) 的公有密钥密码术标准（PKCS）\$18 格式。
+ **椭圆曲线非对称私有密钥**
  + **密钥规范：**
    + ECC\$1NIST\$1P256 (secp256r1)
    + ECC\$1NIST\$1P384 (secp384r1)
    + ECC\$1NIST\$1P521 (secp521r1)
    + ECC\$1SECG\$1P256K1 (secp256k1)
    + ECC\$1N EDWARDS25519 IST\$1 (ed25519)
  + **要求：**
    + 您导入的 ECC 非对称私有密钥必须是符合 [RFC 5915](https://datatracker.ietf.org/doc/html/rfc5915/) 的密钥对的一部分。
    + **曲线：**NIST P-256、NIST P-384、NIST P-521、secp256k1、NIST Ed25519。
    + **参数**：仅限命名曲线（拒绝带有显式参数的 ECC 密钥）。
    + **公共点坐标**：可以是压缩坐标、未压缩坐标或投影坐标。
    + 非对称密钥材料必须为 BER 编码或 DER 编码，采用符合 [RFC 5208](https://datatracker.ietf.org/doc/html/rfc5208) 的公有密钥密码术标准（PKCS）\$18 格式。
+ **ML-DSA 密钥**
  + **密钥规范：**
    + ML\$1DSA\$144
    + ML\$1DSA\$165
    + ML\$1DSA\$187
**重要**  
不支持导入 ML-DSA 密钥。
+ **SM2 非对称私钥**（仅限中国区域）
  + **要求：**
    + 您导入的 SM2 非对称私钥必须是符合 0003 的密钥对的一部分。 GM/T 
    + **曲线：** SM2。
    + **参数：**仅限命名曲线（拒绝带有显式参数的SM2 关键帧）。
    + **公共点坐标**：可以是压缩坐标、未压缩坐标或投影坐标。
    + 非对称密钥材料必须为 BER 编码或 DER 编码，采用符合 [RFC 5208](https://datatracker.ietf.org/doc/html/rfc5208) 的公有密钥密码术标准（PKCS）\$18 格式。