自动旋转私钥

您可以使用 IBM Cloud® Secrets Manager 为秘密安排自动轮换。

当您在服务实例中轮换密钥时,会生成该密钥值的新版本。 通过定期调度私钥的自动轮换,可以降低发生损害的可能性,并确保您的凭证永不到期。

自动旋转功能仅适用于由 Secrets Manager 生成的机密。 如果最初导入了私钥,那么必须提供新的私钥数据以轮换该私钥数据。 有关更多信息,请参阅 手动旋转私钥

准备工作

开始之前,请确保您具有所需的访问级别。 要轮换私钥,您需要 写入者 服务角色或更高级别的

受支持的密钥类型

专用证书公用证书用户凭证IAM 凭证 支持自动轮换。 根据密文类型的不同,自动轮换会在你设定的日期和时间立即进行,或者在创建新版本的密文之前可能需要完成几个额外的步骤。

描述Secrets Manager如何按秘密类型评估手动轮换
类型 旋转描述
专用证书 现有 certificate 值将替换为新的证书内容。 更新的证书的生存时间 (TTL) 是根据首次创建证书时选择的 证书模板 设置的。 请注意,当私有证书的生存时间(TTL)或有效期超过其颁发证书机构的有效期时,证书将无法再自动轮换。
公用证书 公用证书将移至 Active,Rotation pending 状态,以指示正在处理更新证书的请求。Secrets Manager 使用 DNS 验证来验证您是否拥有作为证书一部分列出的域。 此过程可能需要几分种才能完成。 如果验证成功完成,那么将发出新证书并将其状态更改回 活动。 如果验证未成功完成,那么证书状态将更改为 活动,旋转失败
用户凭证 现有 password 值将替换为随机生成的 32 个字符的密码,其中包含大写字母,小写字母,数字和符号。 username 值不变。
IAM 凭证 服务标识的 API 密钥值将替换为新的 API 密钥。 先前的 API 密钥在定义的 TTL 中的剩余时间内保持可用。
服务凭证 服务凭据密文将被新的密文取代。 在定义的 TTL 剩余时间内,前一个秘密仍然有效。
自定义凭证 自定义凭据密文将被新的凭据密文取代。 在定义的 TTL 剩余时间内,前一个秘密仍然有效。

请注意,对于为数据库创建的服务凭证,如果除了凭证之外,您还在更改所创建凭证的数据库许可权,那么一旦轮换了服务凭证,将不会同步这些凭证。 当轮换数据库服务凭证时,这被视为身份轮换。

在 UI 中调度自动旋转

您可以使用 Secrets Manager UI 来调度私钥的自动轮换。

设置用户凭证的自动轮换策略

如果您希望将密码安排为定期自动轮换,那么可以在创建用户凭证时对其启用自动轮换。 您还可以通过编辑现有私钥的详细信息来启用自动轮换。

如果需要对秘密的旋转频率进行更多控制,可以使用 daymonth 作为时间单位,使用 Secrets Manager API 设置自定义间隔。 有关更多信息,请参阅 API 参考

  1. 如果要 添加私钥,请启用轮换选项。
  2. 如果您正在编辑现有私钥,请通过更新其详细信息来启用自动轮换。
    1. 私钥 表中,查看现有私钥的列表。
    2. 在要编辑的私钥所在的行中,单击 操作 菜单 "操作" 图标 > 编辑详细信息
    3. 使用 自动旋转 选项来启用或禁用私钥的自动旋转。

当您更新私钥的旋转设置时,会触发立即旋转。

为公用证书设置自动轮换策略

如果您希望安排自动更新公共 SSL / TLS 证书,可以在订购时启用证书自动轮换功能。 您还可以通过编辑现有证书的详细信息来启用自动轮换。 在证书的下一个轮换周期,Secrets Manager 开始尝试在到期日前 31 天重新订购证书。 服务会继续尝试每天更新证书,直到证书成功为止。

  1. 如果要 订购公用证书,请启用轮换选项。

    1. 要自动旋转证书,请将旋转开关切换到 开启。 您的证书将在其到期日期前 31 天自动重新排序。
    2. 要在每次轮换时为证书申请新的私钥,请将重新密钥切换开关切换到
  2. 如果您正在编辑现有公用证书,请通过更新其详细信息来调度自动轮换。

    1. 密钥 表中,查看现有公用证书的列表。
    2. 在要编辑的证书所在的行中,单击 操作 菜单 "操作" 图标 > 编辑详细信息
    3. 使用 自动旋转 选项来添加或除去私钥的旋转策略。

设置专用证书的自动轮换策略

如果希望安排私人 SSL 或 TLS 证书自动更新,可以在创建证书时启用证书自动轮换功能,也可以通过编辑现有证书的详细信息来启用。 证书必须

  1. 如果要 创建专用证书,请启用轮换选项。

    1. 要自动旋转证书,请将旋转开关切换到 开启

    2. 选择用于指定调度轮换之间的天数的时间间隔和单位。

      根据与专用证书相关联的证书模板,可能会应用对证书的轮换时间间隔的一些限制。 例如,旋转时间间隔不能超过模板中定义的生存时间 (TTL)。 有关更多信息,请参阅 证书模板

  2. 如果您正在编辑现有专用证书,请通过更新其详细信息来调度自动轮换。

    1. 私钥 表中,查看现有专用证书的列表。
    2. 在要编辑的证书所在的行中,单击 操作 菜单 "操作" 图标 > 编辑详细信息
    3. 使用 自动旋转 选项来添加或除去私钥的旋转策略。

设置 IAM 凭证的自动轮换策略

如果您希望将 API 密钥安排为定期自动轮换,那么可以在创建 IAM 凭证时对其启用自动轮换。 您还可以通过编辑现有私钥的详细信息来启用自动轮换。 选择 30 天,60 天或 90 天轮换时间间隔。

如果需要对秘密的旋转频率进行更多控制,可以使用 daymonth 作为时间单位,使用 Secrets Manager API 设置自定义间隔。 有关更多信息,请参阅 API 参考

  1. 如果要 添加私钥,请通过选择 30,60 或 90 天的旋转时间间隔来启用旋转选项。
  2. 如果您正在编辑现有私钥,请通过更新其详细信息来启用自动轮换。
    1. 私钥 表中,查看现有私钥的列表。
    2. 在要编辑的私钥所在的行中,单击 操作 菜单 "操作" 图标 > 编辑详细信息
    3. 使用 自动旋转 选项来启用或禁用私钥的自动旋转。

轮换仅适用于复用密钥设置为 true 的 IAM 凭证。 定义的旋转时间间隔不能高于定义的生存时间 (TTL)。 您可以使用 minute 时间单位来设置私钥的 TTL,但这些私钥无法进行旋转。

为服务凭证设置自动轮换策略

如果您希望定期自动轮换服务证书秘密,可以在创建服务证书时启用自动轮换。 您还可以通过编辑现有私钥的详细信息来启用自动轮换。 选择 30 天,60 天或 90 天轮换时间间隔。

如果需要对秘密的旋转频率进行更多控制,可以使用 daymonth 作为时间单位,使用 Secrets Manager API 设置自定义间隔。 有关更多信息,请参阅 API 参考

  1. 如果要 添加私钥,请通过选择 30,60 或 90 天的旋转时间间隔来启用旋转选项。
  2. 如果您正在编辑现有私钥,请通过更新其详细信息来启用自动轮换。
    1. 私钥 表中,查看现有私钥的列表。
    2. 在要编辑的私钥所在的行中,单击 操作 菜单 "操作" 图标 > 编辑详细信息
    3. 使用 自动旋转 选项来启用或禁用私钥的自动旋转。

为自定义凭据设置自动轮换策略

如果希望定期自动轮换 custom_credentials 秘密,可以在创建 custom_credentials 秘密时启用自动轮换。 您还可以通过编辑现有私钥的详细信息来启用自动轮换。 选择 30 天,60 天或 90 天轮换时间间隔。

如果需要对秘密的旋转频率进行更多控制,可以使用 daymonth 作为时间单位,使用 Secrets Manager API 设置自定义间隔。 有关更多信息,请参阅 API 参考

  1. 如果要 添加私钥,请通过选择 30,60 或 90 天的旋转时间间隔来启用旋转选项。
  2. 如果您正在编辑现有私钥,请通过更新其详细信息来启用自动轮换。
    1. 私钥 表中,查看现有私钥的列表。
    2. 在要编辑的私钥所在的行中,单击 操作 菜单 "操作" 图标 > 编辑详细信息
    3. 使用 自动旋转 选项来启用或禁用私钥的自动旋转。

从 CLI 调度自动轮换

您可以使用 Secrets Manager CLI 插件来调度私钥的自动轮换。

设置用户凭证的自动轮换策略

使用 ibmcloud secrets-manager secret-metadata-update 调度用户凭证的自动轮换。

ibmcloud secrets-manager secret-metadata-update \
    --id=SECRET_ID \
    --rotation='{"auto_rotate": true,"interval": 30,"unit": "day"}'

要除去策略,请将资源块保留为空。

为公用证书设置自动轮换策略

使用 ibmcloud secrets-manager secret-metadata-update 来调度公用证书的自动轮换。

ibmcloud secrets-manager secret-metadata-update \
    --id=SECRET_ID \
    --rotation='{"auto_rotate": true, "rotate_keys": true}'

设置专用证书的自动轮换策略

使用 ibmcloud secrets-manager secret-metadata-update 来调度专用证书的自动轮换。

ibmcloud secrets-manager secret-metadata-update \
    --id=SECRET_ID \
    --rotation='{"auto_rotate": true,"interval": 30,"unit": "day"}'

设置 IAM 凭证的自动轮换策略

使用 ibmcloud secrets-manager secret-metadata-update 来调度 IAM 凭证的自动轮换。

ibmcloud secrets-manager secret-metadata-update \
    --id=SECRET_ID \
    --rotation='{"auto_rotate": true,"interval": 30,"unit": "day"}'

要除去策略,请将资源块保留为空。

为服务凭证设置自动轮换策略

使用 ibmcloud secrets-manager secret-metadata-update 调度服务凭证的自动轮换。

ibmcloud secrets-manager secret-metadata-update \
    --id=SECRET_ID \
    --rotation='{"auto_rotate": true,"interval": 30,"unit": "day"}'

要除去策略,请将资源块保留为空。

为自定义凭据设置自动轮换策略

通过使用 ibmcloud secrets-manager secret-metadata-update.

ibmcloud secrets-manager secret-metadata-update \
    --id=SECRET_ID \
    --rotation='{"auto_rotate": true,"interval": 30,"unit": "day"}'

要除去策略,请将资源块保留为空。

使用 API 调度自动轮换

您可以使用 Secrets Manager API 来调度私钥的自动轮换。

设置用户凭证的自动轮换策略

以下示例请求为用户凭证 (username_password) 私钥创建自动轮换策略。 调用 API 时,请将标识变量和 IAM 令牌替换为特定于 Secrets Manager 实例的值。

curl -X PATCH
   -H "Authorization: Bearer {iam_token}" \
   -H "Accept: application/json" \
   -H 'Content-Type: application/merge-patch+json' \
   -d '{
            "rotation": {
               "auto_rotate": true,
               "interval": 1,
               "unit": "month"
            }
         }' \
      "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/metadata"

响应成功时,将返回该密钥的 ID 值以及其他元数据。 有关必需和可选请求参数的更多信息,请参阅 API 参考

要除去策略,请将资源块保留为空。

为公用证书设置自动轮换策略

如果您希望将证书安排为自动更新,那么可以在订购证书时或通过编辑现有证书的详细信息来启用证书的自动轮换。 在证书的下一个轮换周期中,Secrets Manager 会在证书到期日期前 31 天对证书进行重新排序。

订购自动更新的公用证书

以下示例请求对启用了自动轮换的证书进行排序。 调用 API 时,请将 auto_rotate 属性设置为 true。 (可选) 您可以将 rotate_keys 设置为 true,以在每次轮换时为证书请求新的专用密钥。

curl -X POST
   -H "Authorization: Bearer {iam_token}" \
   -H "Accept: application/json" \
   -H "Content-Type: application/json" \
   -d '{
         "custom_metadata": {
            "metadata_custom_key": "metadata_custom_value"
         },
         "rotation": {
            "auto_rotate": true,
            "rotate_keys": true
         },
         "version_custom_metadata": {
            "custom_version_key": "custom_version_value"
         }
      }' \
   "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"

响应成功时,将返回证书的 ID 值以及其他元数据。 有关必需和可选请求参数的更多信息,请查看 API 参考

设置 IAM 凭证的自动轮换策略

以下示例请求为 IAM 凭证 (iam_credentials) 私钥创建自动轮换策略。 调用 API 时,请将标识变量和 IAM 令牌替换为特定于 Secrets Manager 实例的值。

curl -X PATCH
   -H "Authorization: Bearer {iam_token}" \
   -H "Accept: application/json" \
   -H 'Content-Type: application/merge-patch+json' \
   -d '{
          "rotation": {
            "auto_rotate": true,
            "interval": 30,
            "unit": "day"
          }
         }' \
      "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/metadata"

要除去策略,请将资源块保留为空。

响应成功时,将返回该密钥的 ID 值以及其他元数据。 有关必需和可选请求参数的更多信息,请参阅 API 参考

定义的旋转时间间隔不能高于定义的生存时间。 轮换仅适用于“复用”密钥设置为 true 的 IAM 凭证。 您可以使用 minute 时间单位来设置私钥的 TTL,但这些私钥无法进行旋转。

为服务凭证设置自动轮换策略

以下示例请求为服务凭证 (service_credentials) 私钥创建自动轮换策略。 调用 API 时,请将标识变量和 IAM 令牌替换为特定于 Secrets Manager 实例的值。

curl -X PATCH
   -H "Authorization: Bearer {iam_token}" \
   -H "Accept: application/json" \
   -H 'Content-Type: application/merge-patch+json' \
   -d '{
          "rotation": {
            "auto_rotate": true,
            "interval": 30,
            "unit": "day"
          }
         }' \
      "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/metadata"

要除去策略,请将资源块保留为空。

响应成功时,将返回该密钥的 ID 值以及其他元数据。 有关必需和可选请求参数的更多信息,请参阅 API 参考

定义的旋转时间间隔不能高于定义的生存时间。

为自定义凭据设置自动轮换策略

下面的请求示例为 custom_credentials 保密协议创建了自动轮换策略。 调用 API 时,请将标识变量和 IAM 令牌替换为特定于 Secrets Manager 实例的值。

curl -X PATCH
   -H "Authorization: Bearer {iam_token}" \
   -H "Accept: application/json" \
   -H 'Content-Type: application/merge-patch+json' \
   -d '{
          "rotation": {
            "auto_rotate": true,
            "interval": 30,
            "unit": "day"
          }
         }' \
      "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/metadata"

要除去策略,请将资源块保留为空。

响应成功时,将返回该密钥的 ID 值以及其他元数据。 有关必需和可选请求参数的更多信息,请参阅 API 参考

定义的旋转时间间隔不能高于定义的生存时间。

更新自动旋转间隔

当密钥的自动轮换间隔更新时,Secrets Manager 会验证当前密钥版本在下次计划轮换之前是否仍然有效。

此验证适用于基于 TTL 的过期机制的密钥类型:

如果当前版本在下次计划轮换之前过期,则会拒绝自动轮换间隔的更新,以防止密钥在尚未完成轮换前就过期的情况发生。 如果验证失败,Secrets Manager 将返回错误 Error02009,这表明当前密钥版本将在下次计划轮换之前过期。

例如,如果当前版本将在 3 天后过期,而您将自动轮换间隔设置为 60 天,则该更新将被拒绝,因为该版本会在下次轮换之前过期。

在这种情况下,当前版本将在下一次轮换发生之前过期,因此不允许进行更新。

解决自动轮换间隔更新的冲突

要解决此问题,请确保当前密钥版本在下次计划轮换日期之后仍然有效。 根据您的密钥类型和配置,您可以:

  • 轮换密钥,以生成一个到期日期更晚的新版本。
  • 更新密钥的 TTL(如有必要),并轮换密钥,以确保当前有效的版本在下次计划轮换日期之后仍然有效。

当当前版本的到期日期超过下一个计划轮换日期后,即可成功更新自动轮换间隔。