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

Sho*_*orn 4 html amazon-web-services ssm aws-ssm

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

property1=value1
property2=value2
property3=value3
Run Code Online (Sandbox Code Playgroud)

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

这适用于String存储环境配置等非敏感信息的普通类型参数,但我也想对使用SecureString参数类型的秘密做类似的事情。

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

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

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

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

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

编辑

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

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

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

Jus*_*ley 8

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
Run Code Online (Sandbox Code Playgroud)


Sho*_*orn 0

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

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

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

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