目前,我使用单个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>
答案 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参数:
仅需注意以下事实:一次最多只能请求10个SSM参数。
答案 4 :(得分:0)
如果你愿意,你可以试试我的应用https://github.com/ledongthuc/awssecretsmanagerui
我尝试创建它以更轻松地更新多行值和二进制文件。希望对您的案例有所帮助。