【问题标题】:AWS Secret Manager UpdateAWS Secret Manager 更新
【发布时间】:2020-12-25 13:52:06
【问题描述】:

是否有任何可能的方法可以让我在 AWS Secret Manager 中更新键/值,而无需检索当前值然后更新它们?

我找到的当前解决方案首先从秘密管理器中检索值:

original_secret = client.get_secret_value(SecretId="my_first_secret")

然后对它们进行更新并运行 update-secret 命令:

updated_secret = original_secret.update({"UPDATE_KEY": "update_value"})
client.update_secret(SecretId="my_secret_name", SecretString=json.dumps(updated_secret))

但我不想检索秘密值。 首选语言是 python。

【问题讨论】:

  • “更新”是什么意思?它是否涉及了解当前内容(例如附加数据),还是只想替换现有条目(新值与现有值无关)?
  • 是的,没错
  • @AdityaNair 您找到解决方案了吗?我还需要找到一种方法来更新 Secret 中的键/值的单个记录,而无需获取整个负载。
  • 如果没有其他方法,我将不得不在赏金期结束前接受 Marcin 的回答,因为目前我正在使用该解决方案。 @azngunit81
  • 好吧...我将采用 Marcin 的解决方案,然后 @azngunit81

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


【解决方案1】:

你可以使用put_secret_value():

import boto3
client = boto3.client('secretsmanager')

# Create secret
client.create_secret(
    Name='foo',
    SecretString='bar'
)

# Update secret
client.put_secret_value(
    SecretId='foo',
    SecretString='bar2'
)

【讨论】:

  • 我想替换特定密钥 ID 下的密钥的密钥值。这只会用 bar2 替换整个密钥/值对吗?
  • 我不确定我是否理解您的问题。如果您说您的 SecretString 是一个 JSON 对象并且您只想替换该 JSON 的一个元素,那么我认为您需要替换整个 JSON。 Secrets Manager 不知道字符串的格式——它只是将其视为单个字符串。因此,您问题中的代码将是这样做的方法。
  • 是的,这就是我想要找到的……只是正在检索的凭据不是那么安全……没关系
  • SecretString 将覆盖密钥中的整个元素,到目前为止唯一的方法是先获取然后更新(或附加)来自 json 的元素。到目前为止还没有已知的解决方案
【解决方案2】:

很遗憾,您不能这样做,因为秘密值实际上是不可变的。相反,您所谓的“更新”只是creating 秘密的新版本的过程:

当您更新密钥中的加密密钥值时,您会创建密钥的新版本。新版本自动接收暂存标签 AWSCURRENT。

AWS 控制台会转储此过程,因为它使您看起来可以就地“更新”密钥的值。相反,它只是复制当前版本,更新其值,并创建密钥值的新版本。所有这些都是在后端完成的,所以你看不到这个。

但使用 AWS CLI,您可以使用list-secret-version-ids列出密钥值版本。如果你这样做,你会发现你永远不会直接更新任何秘密值,你只是继续创建它的新版本,并且仍然存在过去的值(只保留一个过去的值)。您始终可以在get-secret-value 中使用--version-id 检索旧版本。

所以你必须对 python 做同样的事情。获取密钥值的当前版本,在本地更新它,然后制作新版本的值。

【讨论】:

  • 好的,因为它是不可变的,AWS 本身在后台执行此操作,因此您需要自己下载它并且必须完整地完成整个键/值输入。
  • @azngunit81 是的。 AWS 控制台不显示您的密钥值的版本。但是您可以使用 AWS CLI 检查版本。在控制台中每次更新后,您将获得 AWSCURRENT 版本(您的新版本)和以前的版本。
  • @AdityaNair 没问题。很高兴它有帮助:-)
猜你喜欢
  • 2023-01-30
  • 2020-08-16
  • 2021-06-29
  • 2020-03-31
  • 2020-07-07
  • 2020-06-18
  • 2021-04-11
  • 2018-12-09
  • 1970-01-01
相关资源
最近更新 更多