AWS SSM参数存储:如何使用控制台编辑多行“SecureString”值?

时间:2018-04-07 03:53:35

标签: html amazon-web-services ssm aws-ssm

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

property1=value1
property2=value2
property3=value3

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

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

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

多行值与实际参数存储后端一起正常工作 - 我可以设置多行的值,SSM API没问题,也可以使用EC2 CLI正确读取它们。

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

我可以实现一些基础设施解决方法(每个秘密的一个参数,将密码存储在S3或其他秘密存储服务等等)但是它们都有缺点 - 我只是试图找出是否有办法围绕这个使用控制台?

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

修改

发布此问题后,AWS通知我有一个全新的“AWS Systems Manager”用户界面,但它仍然存在同样的问题 - 我在这个新用户界面上尝试了以下浏览器黑客攻击,但没有运气。

浏览器黑客尝试失败1:我尝试打开浏览器控制台,运行document.getElementById("Value").value = "value1\nvalue2",然后单击保存按钮,该按钮设置值I injectec,但新行被过滤掉了。

浏览器黑客尝试失败2:我尝试使用浏览器安装程序将元素更改为TextArea,然后键入两行输入并单击保存,但根本没有设置该值。 / p>

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

我找到了一种方法来做到这一点,但这太费劲而且太奇怪了 - 如果有人能找到更简单的方法,我会将其标记为答案。

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

最后,我认为这个问题的答案是“不要那样做”。并不是说我想让它正常工作时会想听听。

出于以下原因,每个秘密使用单独的SSM参数:

  • 授予细粒度权限的能力;如果您在一个SSM参数中存储了3个秘密-那么如果其他内容仅需要访问这些参数之一,则必须授予它对所有三个参数的访问权限
  • 分别跟踪密钥访问的能力-SSM访问日志只能告诉您目标机器/用户当时访问了SSM参数,而无法告诉您访问了哪个秘密
  • 使用单独的KMS密钥进行加密的能力

仅需注意以下事实:一次最多只能请求10个SSM参数。

答案 4 :(得分:0)

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

我尝试创建它以更轻松地更新多行值和二进制文件。希望对您的案例有所帮助。