监视加密密钥的生命周期
IBM® Key Protect for IBM Cloud® 遵循 针对密钥状态的 NIST SP 800-57所建立的安全准则。
密钥状态和转换
密钥通常通过若干状态进行转换,这些状态是密钥存在的时间长度以及当前是否用于对数据进行加密的函数。
Key Protect 提供了一个图形用户界面和一个 REST API,用于跟踪密钥在其生命周期中经历的若干状态移动。 下图显示密钥如何经历从其生成到其销毁之间的各个状态。
虽然此图显示了处于“预激活”状态的密钥,但在 NIST 标准中定义的状态从技术角度来看,“预激活”定义了在密钥存在之前的状态。 不存在的密钥显然不能具有状态。 不过,这里显示的是概念上的完整性。 此图中未显示密钥的“已清除”状态,在此状态中,密钥材料已在密钥进入 已销毁 状态后的特定时间段内永久粉碎,并且同样处于不存在状态。
状态 | 整数映射 | 描述 |
---|---|---|
活动 | 1 | 钥匙在激活日期立即进入_激活状态_。 此转换标志着密钥加密期的开始。 没有激活日期的密钥会立即变为活动状态,并且在到期或销毁之前会保持活动状态。 |
已暂挂 | 2 | 当密钥 针对加密和解密操作禁用 时,该密钥将进入 已暂挂 状态。 在这种状态下,密钥无法对数据进行加密保护,只能转入_激活_或_销毁_状态。 |
已停用 | 3 | 如果分配了密钥,则密钥将在到期后一小时内进入 “停用” 状态。 在此状态下,可以对密钥执行的唯一操作是解包,重新打包,轮换和删除。 |
已销毁 | 5 | 密钥在被删除后将进入 已销毁 状态。 处于此状态的密钥可以恢复 30 天,但可以在 90 天后清除。 如果需要,还可以在进入 已销毁 状态 4 小时后将其清除。 进入 已销毁 状态后,与密钥关联的元数据 (例如其名称和上次转换时的记录) 将保留在 Key Protect 数据库中,直到清除该密钥为止。 有关更多信息,请查看 关于删除和清除密钥。 |
设置过期日期时要谨慎,因为过期日期创建的密钥会在过期后一小时内自动过渡到_停用_状态。 在这种状态下,只允许对按键进行解包、重包、旋转和删除操作。 停用的密钥不能用于加密(封装)新数据,即使在停用时进行了旋转。 轮换不会重置或延长有效期,也不允许更改日期。 建议在原客户根密钥 (CRK) 过期之前,使用新客户根密钥 (CRK) 重新加密使用过期或失效密钥加密的任何数据,以防止服务中断。 删除和恢复已停用的密钥不会使其回到_激活状态_。 如果省略 expiration_date 属性,则密钥不会过期。
您可以使用 IBM Cloud Logs. 日志会使用 JSON 属性 responseData.expirationDate
和 responseData.daysToKeyExpire
对有过期日期的密钥和以下 action
值显示过期日期和剩余天数:kms.secrets.wrap
, kms.secrets.unwrap
,
kms.secrets.rewrap
, kms.secrets.read
, kms.secrets.readmetadata
, kms.secrets.create
, kms.secrets-with-policy-overrides.create
和 kms.secrets.expire
。 此外,成功调用 GET /api/v2/keys
的 REST 会返回每个有过期日期的密钥的 expirationDate
属性。
密钥状态和服务操作
密钥状态会影响对密钥执行的操作是成功还是失败。 例如,如果某个密钥处于 活动 状态,那么您无法复原该密钥,因为先前未删除该密钥。
下表描述了密钥状态如何影响服务操作。 列标题表示键状态,行标题表示可以对键执行的操作。 复选标记图标 ( ) 指示根据密钥状态对密钥执行的操作预期会成功。
操作 | 活动 | 已暂挂 (已禁用密钥) | 已取消激活 (已到期的密钥) | 已销毁 (已删除的密钥) |
---|---|---|---|---|
获取密钥 | ||||
列出密钥 | ||||
轮换密钥 | ||||
包装密钥 | ||||
解包密钥 | ||||
重新打包密钥 | ||||
禁用密钥 | ||||
启用密钥 | ||||
删除密钥 | ||||
复原密钥 |
Cryptoperiods,originator-usage 句点和接收方-usage 句点
如果您熟悉 NIST 标准术语和密钥管理系统,那么您可能知道 "cryptoperiod","originator-usage period" 和 "recpient-usage period" 的概念。
"cryptoperiod" 描述密钥的完整生命周期。 如果在创建密钥一年后将其清除,那么密钥的 cryptoperiod 为一年。 然后,密钥的 cryptoperiod 在创建时开始。
同样,"originator-usage period" 和 "recepient-usage period" 也在创建密钥时开始。 前者描述了密钥可用于通过包装数据来保护数据的时间。 "recpient-usage period" 则描述了密钥可以“解包”以解密受保护数据的时间。 请注意,取消激活的密钥不能再用于打包数据,但仍可用于解包数据。 因此,如果将密钥移至 已取消激活 状态 (例如,通过确定到期日期),那么它的发起方使用期已结束。 但是,其重新表使用周期将继续,直到删除密钥为止。
如果未对密钥设置到期日期 (并且未手动暂挂,取消激活或销毁),那么密钥的发起方使用期,接收方使用期和 cryptoperiod 相同。
监视生命周期更改
将密钥添加到服务后,请使用 Key Protect 仪表板或 Key Protect REST API 来查看上次转换密钥的时间。
出于审计目的,您还可以通过将 Key Protect 与 IBM Cloud Logs. 这两项服务调配运行后,当您对 Key Protect 中的密钥执行操作时,会生成事件并自动收集到 IBM Cloud Logs 日志中。