如何在 AWS Secrets Manager 中列出已删除的密钥?

问题描述 投票:0回答:2

查看list-secrets

手册页,没有显示删除或不删除的特殊选项。它不列出已删除的机密。但是,输出定义包含“DeletedDate”时间戳。

ListSecrets API 不显示任何已删除机密的选项。但响应再次包含删除日期。

list_secrets()

boto3 文档是相同的。

但是,在AWS控制台中我可以看到已删除的秘密。快速浏览一下开发工具,我可以看到我对 Secrets Manager 端点的请求负载如下所示:

{ "method": "POST", "path": "/", "headers": { "Content-Type": "application/x-amz-json-1.1", "X-Amz-Target": "secretsmanager.ListSecrets", "X-Amz-Date": "Fri, 27 Nov 2020 13:19:06 GMT" }, "operation": "ListSecrets", "content": { "MaxResults": 100, "IncludeDeleted": true, "SortOrder": "asc" }, "region": "eu-west-2" }
有什么方法可以将 

"IncludeDeleted": true

 传递到 CLI 吗?

这是一个错误吗?我该去哪里举报? (我知道 github 上有一个 cloudformation 错误跟踪器,我想 Secretsmanager 会有类似的东西..?)

amazon-web-services boto3 aws-cli aws-secrets-manager
2个回答
7
投票
将以下文件保存到

~/.aws/models/secretsmanager/2017-10-17/service-2.sdk-extras.json

:

{ "version": 1.0, "merge": { "shapes": { "ListSecretsRequest": { "members": { "IncludeDeleted": { "shape": "BooleanType", "documentation": "<p>If set, includes secrets that are disabled.</p>" } } } } } }
然后您可以使用 CLI 列出机密,如下所示:

aws secretsmanager list-secrets --include-deleted
或与 boto3:

import boto3 def list_secrets(session, **kwargs): client = session.client("secretsmanager") for page in client.get_paginator("list_secrets").paginate(, **kwargs): yield from page["SecretList"] if __name__ == "__main__": session = boto3.Session() for secret in list_secrets(session, IncludeDeleted=True): if "DeletedDate" in secret: print(secret)
这是使用 

botocore 加载器机制 来增强 Secrets Manager 的服务模型,并告诉 boto3 “IncludeDeleted”是 ListSecrets API 的参数。

如果您想了解更多详细信息,我刚刚发布了

一篇博客文章解释了我还尝试过什么以及如何得到这个解决方案——感谢OP,他的开发工具实验是一个有用的线索。


0
投票
截至 2024 年 4 月:

需要:AWS CLI 和 jq

aws secretsmanager list-secrets --include-planned-deletion --profile YOUR_PROFILE --output json | jq -r '.SecretList[] | select(.DeletedDate!=null) | .Name'
    
© www.soinside.com 2019 - 2024. All rights reserved.