AWS KMS 密钥的密钥状态
AWS KMS key 始终具有密钥状态。KMS 密钥及其环境上的操作可能会改变密钥状态。密钥状态的改变可能是暂时的,也可能持续到其他操作更改其密钥状态为止。这些操作可以异步完成,也可以通过 API 调用完成。
本节中的表格显示了密钥状态如何影响对 AWS KMS API 操作的调用。由于其密钥状态,对 KMS 密钥执行的操作预计会成功 (✓),失败 (X),或者仅在某些条件下成功 (?)。对于已导入密钥材料的 KMS 密钥,结果通常不同。
此表仅包括使用现有 KMS 密钥的 API 操作。其他操作,例如 CreateKey 和 ListKeys,则会省略。
密钥状态和 KMS 密钥类型
KMS 密钥的类型决定了它可以具有的密钥状态。
-
所有 KMS 密钥都可以处于
Enabled、Disabled和PendingDeletion状态。 -
大多数 KMS 密钥都在
Enabled状态下创建。带导入的密钥材料的密钥在PendingImport状态下创建。 -
PendingImport状态仅适用于具有导入的密钥材料的 KMS 密钥。当导入的密钥中有任何密钥材料被删除或过期时,其状态将从Enabled变为PendingImport。 -
Unavailable状态仅适用于自定义密钥存储中的 KMS 密钥。当自定义密钥存储有意与其 AWS CloudHSM 集群断开连接时,AWS CloudHSM 密钥存储中的 KMS 密钥为Unavailable。当自定义密钥存储有意与其外部密钥存储代理断开连接时,外部密钥存储中的 KMS 密钥为Unavailable。您可查看和管理不可用的 KMS 密钥,但无法在加密操作中使用它们。自定义密钥中的 KMS 密钥的密钥状态不受其备用密钥的更改的影响。AWS CloudHSM 密钥存储中的 KMS 密钥不受 AWS CloudHSM 集群中其关联密钥材料的更改的影响。外部密钥存储中的 KMS 密钥不受外部密钥管理器中其外部密钥的更改的影响。如果禁用或删除备用密钥,KMS 密钥状态不会改变,但使用 KMS 密钥的加密操作会失败。
-
Creating、Updating和PendingReplicaDeletion密钥状态仅适用于多区域密钥。-
多区域副本密钥在创建时处于临时
Creating密钥状态。当 ReplicateKey 操作完成时,此过程可能仍在进行中。复制过程完成后,副本密钥处于Enabled或PendingImport状态。 -
多区域密钥在主区域正在更新时处于临时的
Updating密钥状态。当 UpdatePrimaryRegion 操作完成时,此过程可能仍在进行中。更新过程完成后,主密钥和副本密钥将恢复Enabled密钥状态。 -
当您计划删除具有副本密钥的多区域主键时,主键处于
PendingReplicaDeletion状态,直到其所有的副本密钥都被删除。然后,它的密钥状态更改为PendingDeletion。有关更多信息,请参阅 Deleting multi-Region keys。
-
密钥状态表
下表显示 KMS 密钥的密钥状态如何影响 AWS KMS 操作。
编号脚注的说明 ([n]) 处于本主题的末尾。
注意
您可能需要水平或垂直滚动才能查看此表中的所有数据。
| API | 已启用 | 已禁用 |
待删除 待删除副本 |
待导入 | 不可用 | 创建 | Updating |
|---|---|---|---|---|---|---|---|
| CancelKeyDeletion | [4] |
[4] |
[4] |
[4]、[13] |
[4] |
[4] |
|
| CreateAlias | [3] |
||||||
| CreateGrant | [1] |
[2] 或 [3] |
[5] |
[14] |
|||
| Decrypt | [1] |
[2] 或 [3] |
[5] |
[11] |
[14] |
||
| DeleteAlias | |||||||
| DeleteImportedKeyMaterial |
[9] |
[9] |
[9] |
|
不适用 |
[14] |
[15] |
| DeriveSharedSecret | [1] |
[2] 或 [3] |
[5] |
不适用 |
[14] |
||
| DescribeKey | |||||||
| DisableKey | [3] |
[5] |
[12] |
[14] |
[15] |
||
| DisableKeyRotation |
[7] |
[1] 或 [7] |
[3] 或 [7] |
[6] |
[7] |
[14] |
[7] |
| EnableKey | [3] |
[5] |
[12] |
[14] |
[15] |
||
| EnableKeyRotation |
[7] |
[1] 或 [7] |
[3] 或 [7] |
[6] |
[7] |
[14] |
[7] |
| Encrypt | [1] |
[2] 或 [3] |
[5] |
[11] |
[14] |
||
| GenerateDataKey | [1] |
[2] 或 [3] |
[5] |
[11] |
[14] |
||
| GenerateDataKeyPair | [1] |
[2] 或 [3] |
[5] |
[7] |
[14] |
||
| GenerateDataKeyPairWithoutPlaintext | [1] |
[2] 或 [3] |
[5] |
[7] |
[14] |
||
| GenerateDataKeyWithoutPlaintext | [1] |
[2] 或 [3] |
[5] |
[11] |
[14] |
||
| GenerateMac | [1] |
[2] 或 [3] |
[5] |
不适用 |
[14] |
||
| GetKeyPolicy | |||||||
| GetKeyRotationStatus | [7] |
[7] |
[7] |
[6] |
[7] |
[7] |
[7] |
| GetParametersForImport |
[9] |
[9] |
[8] 或 [9] |
[9] |
[14] |
[15] |
|
| GetPublicKey |
[2] 或 [3] |
不适用 |
[14] |
||||
| ImportKeyMaterial |
[9] |
[9] |
[9] |
[9] |
[14] |
||
| ListAliases | |||||||
| ListGrants | |||||||
| ListKeyPolicies | |||||||
| ListKeyRotations | [7] |
[7] |
[7] |
[6] |
[7] |
[7] |
[7] |
| ListResourceTags | |||||||
| PutKeyPolicy | |||||||
| ReEncrypt | [1] |
[2] 或 [3] |
[5] |
[11] |
[14] |
||
| ReplicateKey |
[1] |
[2] 或 [3] |
[5] |
不适用 |
[14] |
[15] |
|
| RetireGrant | |||||||
| RevokeGrant | |||||||
| RotateKeyOnDemand |
[7] |
[1] 或 [7] |
[3] 或 [7] |
[5] |
[7] |
[14] |
[7] |
| ScheduleKeyDeletion | [3] |
[15] |
|||||
| Sign |
[1] |
[2] 或 [3] |
[5] |
不适用 |
[14] |
||
| TagResource | [3] |
||||||
| UntagResource | [3] |
||||||
| UpdateAlias | [10] |
||||||
| UpdateKeyDescription | [3] |
||||||
| UpdatePrimaryRegion |
[1] |
[2] 或 [3] |
[5] |
不适用 |
[14] |
||
| 验证 |
[1] |
[2] 或 [3] |
[5] |
不适用 |
[14] |
||
| VerifyMac | [1] |
[2] 或 [3] |
[5] |
不适用 |
[14] |
表详细信息
-
[1]
DisabledException:<key ARN>is disabled. -
[2]
DisabledException:<key ARN>is pending deletion (or pending replica deletion). -
[3]
KMSInvalidStateException:<key ARN>is pending deletion (or pending replica deletion). -
[4]
KMSInvalidStateException:<key ARN>is not pending deletion (or pending replica deletion). -
[5]
KMSInvalidStateException:<key ARN>is pending import because no key material has ever been imported or one of the imported key materials is deleted or expired. -
[6]
UnsupportedOperationException:<key ARN>origin is EXTERNAL which is not valid for this operation. -
[7] 如果 KMS 密钥位于自定义密钥存储中:
UnsupportedOperationException。 -
[8] 如果 KMS 密钥已导入密钥材料:
KMSInvalidStateException -
[9] 如果 KMS 密钥无法导入密钥材料:
UnsupportedOperationException。 -
[10] 如果源 KMS 密钥正等待删除,则该命令将成功。如果目标 KMS 密钥正等待删除,则该命令将失败,并显示以下错误消息:
KMSInvalidStateException :<key ARN>is pending deletion. -
[11]
KMSInvalidStateException:您无法在不可用的 KMS 密钥上执行此操作。<key ARN>is unavailable. -
[12] 操作成功,但 KMS 密钥的密钥状态未更改,直到它变得可用。
-
[13] 虽然自定义密钥存储中的 KMS 密钥处于等待删除状态,但其密钥状态保持
PendingDeletion不变,即使 KMS 密钥变得不可用也是如此。这允许您在等待期内随时取消删除 KMS 密钥。 -
[14]
KMSInvalidStateException:AWS KMS 在复制多区域密钥 (<key ARN>is creating.ReplicateKey) 时引发此异常。 -
[15]
KMSInvalidStateException:AWS KMS 在更新多区域密钥的主区域 (<key ARN>is updating.UpdatePrimaryRegion) 时引发此异常。