【问题标题】:How to check AWS secretsmanager rotation is completed successfully如何检查 AWS secretsmanager 轮换是否成功完成
【发布时间】:2020-06-24 02:09:51
【问题描述】:

在 AWS secretsmanager 中创建了一个密钥,使用 lambda 函数启用了自动轮换。 当我第一次从 cli 触发旋转时,它没有完成。这是在 aws 控制台中手动更新机密时的初始机密状态。

# aws secretsmanager list-secret-version-ids --secret-id ******
{
    "Versions": [
        {
            "VersionId": "9e82b9e2-d074-478e-83a5-baf4e578cb49",
            "VersionStages": [
                "AWSCURRENT"
            ],
            "LastAccessedDate": 1592870400.0,
            "CreatedDate": 1592889913.431
        },
        {
            "VersionId": "e32ddaf8-7f21-40e2-adf8-f976b8f3f104",
            "VersionStages": [
                "AWSPREVIOUS"
            ],
            "LastAccessedDate": 1592870400.0,
            "CreatedDate": 1592887518.46
        }
    ],
    "ARN": "arn:aws:secretsmanager:us-east-1:***********:secret:***********",
    "Name": "*******"
}

现在我从 aws cli 触发了旋转

aws secretsmanager rotate-secret --secret-id ******

# aws secretsmanager list-secret-version-ids --secret-id ********
{
    "Versions": [
        {
            "VersionId": "704102f3-b36d-4529-b257-0457354d3c93",
            "VersionStages": [
                "AWSPENDING"
            ],
            "CreatedDate": 1592890351.334
        },
        {
            "VersionId": "e32ddaf8-7f21-40e2-adf8-f976b8f3f104",
            "VersionStages": [
                "AWSPREVIOUS"
            ],
            "LastAccessedDate": 1592870400.0,
            "CreatedDate": 1592887518.46
        },
        {
            "VersionId": "9e82b9e2-d074-478e-83a5-baf4e578cb49",
            "VersionStages": [
                "AWSCURRENT"
            ],
            "LastAccessedDate": 1592870400.0,
            "CreatedDate": 1592889913.431
        }
    ],
    "ARN": "arn:aws:secretsmanager:us-east-1:**********:secret:********",
    "Name": "********"
}

Cloudwatch 日志在此 createSecret:成功为 ARN arn:aws:secretsmanager:xxxxxxx 设置密码。。看起来只调用了 createsecret 函数。 当我再次旋转秘密时,在 cli 中获取此输出

An error occurred (InvalidRequestException) when calling the RotateSecret operation: A previous rotation isn't complete. That rotation will be reattempted.

无法理解发生了什么。有人可以帮忙吗?

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-secrets-manager


    【解决方案1】:

    当轮换成功时,Secrets Manager 将通过 CloudTrail 发布事件 - 'RotationSucceeded'。

    有关如何在该 CloudTrail 事件中设置 Cloudwatch 警报的更多信息,请参阅此内容 - https://docs.aws.amazon.com/secretsmanager/latest/userguide/monitoring.html

    【讨论】:

      【解决方案2】:

      不幸的是,没有开箱即用的方法,因为 Secrets Manger 没有内置 SNS 通知,也没有 CloudWatch Events 来完成轮换。

      因此,您必须自己构建解决方案,这可以使用 SDK 或 CLI 完成。

      对于 CLI,您可以使用 describe-secret 并在循环中提取秘密详细信息。在循环中,您必须查看版本的 AWSPENDINGAWSCURRENT 标签。

      来自docs

      如果 AWSPENDING 暂存标签存在但未附加到与 AWSCURRENT 相同的版本,则以后任何 RotateSecret 调用都假定先前的轮换请求仍在进行中 并返回错误。

      所以基本上,看看你的输出:

              {
                  "VersionId": "704102f3-b36d-4529-b257-0457354d3c93",
                  "VersionStages": [
                      "AWSPENDING"
                  ],
                  "CreatedDate": 1592890351.334
              }
      

      您有一个带有AWSPENDING 标签的版本,它与AWSCURRENT未附加到同一版本。这表明轮换正在进行中

      当版本处于以下两种状态之一时,轮换完成:

      AWSPENDING 和 AWSCURRENT 暂存标签附加到相同版本的密钥,或者 AWSPENDING 暂存标签未附加到任何版本的密钥。 p>

      【讨论】:

      • 我有在 fnishSecret 步骤中将 AWSCURRENT 标签移动到 AWSPENDING 的版本 ID 的代码。按照这个模板github.com/aws-samples/aws-secrets-manager-rotation-lambdas/…,我想知道为什么根本没有调用finisheSecret 步骤。这个问题stackoverflow.com/questions/60007180/… 似乎也是同样的问题。知道为什么只在旋转时调用createSecret 步骤吗?
      • @user9163519 我不熟悉那个模板。对不起。
      • @Marcin 你能详细说明一下解决方案吗?我必须删除 AWSPENDING 吗?轮换会自行完成还是我必须做点什么?
      • @RohitMittal 我建议针对您的用例提出新问题,并提供与您的要求、错误等相关的详细信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 2012-11-08
      • 2013-10-11
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      相关资源
      最近更新 更多