AWS SSM Parameter Store:如何使用控制台编辑多行 "SecureString" 值?

AWS SSM Parameter Store: How can I edit multi-line "SecureString" values using the console?

目前,我使用单个 SSM parameter 来存储一组由换行符分隔的属性,如下所示:

property1=value1
property2=value2
property3=value3

(我知道 4K 大小限制,没关系。)

对于存储非敏感信息(如环境配置)的普通 String 类型参数,这很有效,但我也想对使用 SecureString 参数类型的机密执行类似操作。

问题是我无法在控制台中编辑参数值,因为它使用的 type="password" 的 HTML 输入字段不处理换行符。

多行值适用于实际参数存储后端 - 我可以使用 SSM API 设置多行值没问题,它们也可以通过 EC2 CLI 正确读取。

但我无法使用控制台编辑它们。这是一个问题,因为使用 SecureString 参数的全部意义在于我打算 edit/view 这些秘密的唯一位置是通过控制台(以便控制权限和审核访问)。

我可以实施一些基础设施变通办法(每个秘密一个参数,将秘密存储在 S3 或其他秘密存储服务上,等等)但它们都有缺点 - 我只是想找出是否有使用控制台解决此问题的方法?

有什么方法可以解决这个问题并使用控制台编辑多行 SecureString 参数吗?
我可以使用任何类型的浏览器解决方法或 hack 来告诉浏览器使用 textarea 而不是 "password" 类型字段? 我正在使用 Chrome,但我很乐意通过使用其他浏览器或其他东西来解决这个问题(编辑秘密非常罕见,并且在控制台中查看多行值工作正常)。

编辑

发布这个问题后,AWS 通知我有一个全新的 "AWS Systems Manager" UI,但它仍然有同样的问题 - 我在这个新 [=52= 上尝试了以下浏览器 hack ], 但运气不好。

失败的浏览器破解尝试 1:我尝试打开浏览器控制台,运行 document.getElementById("Value").value = "value1\nvalue2" 然后单击保存按钮,它设置了我注入的值,但换行符被过滤掉了。

失败的浏览器 hack 尝试 2:我尝试使用浏览器 instpector 将元素更改为 TextArea,然后输入两行输入并单击保存,但这根本没有设置值.

我找到了一种方法,但是太费力而且太奇怪了-如果有人能找到更简单的方法,我会把它标记为答案。

hacky 的解决方法是安装 "Tamper Chrome" 扩展 + 应用程序,然后在浏览器发送时捕获 XHR 请求并将新行编辑到 JSON.

布莱赫。另外 "Tamper Chrome" 非常糟糕,我不想 运行 它在我的机器上。

使用最近推出的新 secrets manager 可能会更好。它的界面非常接近参数存储,但它更好地支持在一个地方使用多个参数。

我想知道控制台的变化是否是由于服务的预期发布,因为他们有一个围绕秘密的定价模型,而参数存储是免费的

最后,我决定这个问题的答案是“不要那样做”。并不是说当我试图让它发挥作用时我会想听到它。

您应该为每个密钥使用单独的 SSM 参数,原因如下:

  • 能够在细粒度级别授予权限;例如您有一个用于调用您的服务的 API 密码,以及用于与数据库对话的服务的数据库密码 - 如果您将它们存储在同一个秘密中,您不能只授予对 API 密码的访问权限。
  • 能够单独跟踪密钥访问 - SSM 访问日志只能告诉您目标 machine/user 当时访问了 SSM 参数,它无法告诉您访问了哪个秘密
  • 能够使用单独的 KMS 密钥进行加密

请注意您一次最多只能请求 10 个 SSM 参数。

https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-file,我了解到您可以将文件作为参数传递给 --value 参数。所以如果你的文件名为secrets.properties,你可以这样做:

aws ssm put-parameter --type SecureString --name secrets --value file://secrets.properties

如果你愿意,你可以试试我的应用程序https://github.com/ledongthuc/awssecretsmanagerui

我试着让它更容易更新多行值和二进制更容易。希望对你的案例有所帮助。