【问题标题】:How do I list deleted secrets in AWS Secrets Manager?如何在 AWS Secrets Manager 中列出已删除的密钥?
【发布时间】:2021-03-10 06:57:12
【问题描述】:

查看man page for list-secrets,没有特殊选项可以显示是否已删除。它不会列出已删除的机密。但是,输出定义包含“DeletedDate”时间戳。

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

boto3 docs for list_secrets() 是一样的。

但是,在 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


    【解决方案1】:

    将以下文件保存到~/.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 loader mechanism 来扩充 Secrets Manager 的服务模型,并告诉 boto3“IncludeDeleted”是 ListSecrets API 的参数。

    如果您想了解更多详细信息,我刚刚发布了 a blog post,解释了我还尝试了什么以及我是如何找到这个解决方案的——感谢 OP,他的开发工具实验是一个有用的线索。

    【讨论】:

      猜你喜欢
      • 2020-09-29
      • 2019-02-15
      • 2020-08-14
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      • 2020-01-09
      • 1970-01-01
      相关资源
      最近更新 更多