如何检查AWS Secretsmanager轮换是否成功完成

时间:2020-06-23 05:47:01

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

在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.

无法理解正在发生的事情。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

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

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

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

来自docs

如果相反,AWSPENDING暂存标签出现在但未附加,与A​​WSCURRENT相同,则以后对RotateSecret的调用均假定先前的轮播请求仍在进行中并返回错误。

所以基本上,看一下您的输出:

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

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

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

AWSPENDING和AWSCURRENT暂存标签粘贴到相同版本的密码,或者AWSPENDING暂存标签未粘贴到该秘密的任何版本

答案 1 :(得分:0)

成功旋转后,秘密管理器将通过CloudTrail-'RotationSucceeded'发布事件。

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