繁体   English   中英

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

[英]How do I list deleted secrets in AWS Secrets Manager?

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

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

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 会在某处有类似的东西......?)

将以下文件保存到~/.aws/models/secretsmanager/2017-10-17/service-2.sdk-extra.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 增加服务 model,并告诉 boto3 “IncludeDeleted”是 ListSecrets API 的参数。

如果您想了解更多细节,我刚刚发布了一篇博文,解释了我还尝试了哪些其他方法以及我是如何得到这个解决方案的——感谢 OP,他的开发工具实验是一个有用的线索。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM