我将我的秘密存储为字符串,但是当aws存储该秘密时,它将删除空格和换行符。最重要的是,它将值包装在json中。
当我运行aws secretsmanager get-secret-value --secret-id my-private-key > private.pem
时,它会返回类似的内容。
{
"Name": "ai-data-devops-ansible-deploy-key",
"VersionId": "fedafe24-d3eb-4964-9a8f-7f4ecb375a35",
"SecretString": "-----BEGIN RSA PRIVATE KEY-----\nasdkmnasefkljzsdkffjsldkgfjlzkmsdflkNOTAREALKEYasddkjnsfdlzxdfvlkmdggo=\n-----END RSA PRIVATE KEY-----\n",
"VersionStages": [
"AWSCURRENT"
],
"CreatedDate": 1568147513.11,
"ARN": "arn:aws:secretsmanager:us-east-1:13726472r4:secret:my-private-key-XQuwafs"
}
所以我需要:
-----BEGIN RSA PRIVATE KEY-----
asdkmnasefkljzsdkffjsldkgfjlzkmsdflkNOTAREALKEYasddkjnsfdlzxdfvlkmdggo=
-----END RSA PRIVATE KEY-----
答案 0 :(得分:2)
您需要通过几步将输出(|)传递给管道
jq ".SecretString"
cut -b 2- |tr -d '"' |sed -En "s/\\\n/\n/pg"
这将返回您想要的内容。
还请注意,您将希望将private.pem设为只读。 (chmod 400 private.pem
)
在夏季,完整命令如下所示:
aws secretsmanager get-secret-value --secret-id my-private-key | jq ".SecretString" |cut -b 2- |tr -d '"' |sed -En "s/\\\n/\n/pg" > private.pem
答案 1 :(得分:1)
另一种选择是对存储的PEM进行base64编码:
编码密钥:
$ cat private_key
-----BEGIN RSA PRIVATE KEY-----
asdkmnasefkljzsdkffjsldkgfjlzkmsdflkNOTAREALKEYasddkjnsfdlzxdfvlkmdggo=
-----END RSA PRIVATE KEY-----
$ base64 private_key > encoded_private_key
$ cat encoded_private_key
LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQphc2RrbW5hc2Vma2xqenNka2ZmanNsZGtnZmpsemttc2RmbGtOT1RBUkVBTEtFWWFzZGRram5zZmRsenhkZnZsa21kZ2dvPQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
找回钥匙:
$ base64 -D encoded_private_key
-----BEGIN RSA PRIVATE KEY-----
asdkmnasefkljzsdkffjsldkgfjlzkmsdflkNOTAREALKEYasddkjnsfdlzxdfvlkmdggo=
-----END RSA PRIVATE KEY-----
编辑: 假设机密是通过base64编码的,那么它将起作用:
编码并推送:
aws secretsmanager create-secret --name my-private-key --secret-string `base64 private.pem`
拉和解码:
aws secretsmanager get-secret-value --secret-id my-private-key --query 'SecretString' --output text |base64 -D > private.pem
即使您不想对base64进行编码,执行--query --output文本操作也可能使解析起来更简单。
答案 2 :(得分:0)
我想出了一个解决方案,该方案利用秘密文件中的秘密内容作为纯文本存储。
使用cli获取秘密输出为纯文本。现在,文本中的\ n和\ s将被转换为它们应该是的换行符和空格
aws secretsmanager get-secret-value --secret-id privatekey --query
'SecretString' --output text > private.pem
pem文件现在将正确格式化
-----BEGIN RSA PRIVATE KEY-----
MIIG3DCCBM
-----END RSA PRIVATE KEY-----
答案 3 :(得分:0)
如果你愿意,你可以试试我的应用https://github.com/ledongthuc/awssecretsmanagerui
我创建此 UI 是为了通过 UI 将受保护的文件上传到 AWS Secrets manager,以简化一切并避免字符错误。希望对您的案例有用。
答案 4 :(得分:0)
我为 AWS 秘密管理器创建了一个 UI。所以你可以用它来上传和下载保持完整格式的文件 https://github.com/ledongthuc/awssecretsmanagerui