加密本地计算机上的 AWS 密钥以获取 AWS 命令



在开发人员计算机上,使用aws --configures3cmd configure时,AWS 密钥和密钥存储在纯文本文件中。

出于安全原因,我希望至少以安全和加密的方式保存秘密,例如使用 MAC 钥匙串。

环境变量似乎不是解决方案,因为它们也需要安全地保存。

有没有办法以安全的方式存储密钥?

(作为旁注,无需提及所有计算机都有密码,并且密钥在 AWS 中具有所需的最低权限,并且还有其他安全方法。

您可以通过利用 AWS SSO & AWS Organizations,而不是长期凭证(AWS IAM 访问密钥(。短期凭据未加密,但暂时有效(可以配置(。

见 https://latanassov.dev/aws/2020-01-23/aws-sso-aws-cli.html

我在~/.aws/config文件中使用credential_process键来实现此目的。将其设置为要运行的命令,该命令将凭据打印到stdout。我在pass周围使用 bash 脚本,但您可以使用任何您想要的东西。

例如,我们将通过在~/.aws/config中设置来配置配置文件simonw

[profile simonw]
credential_process = get-my-creds-cmd
output = json

。然后我们需要该get-my-creds-cmd命令存在于$PATH上,或者您可以使用绝对路径引用它。我们将命令创建为 bash 脚本:

#!/bin/bash
accessKey=AKIA...  # TODO get this from somewhere secure
secretKey=...      # TODO get this from somewhere secure
cat << HEREDOC
{
"Version": 1,
"AccessKeyId": "$accessKey",
"SecretAccessKey": "$secretKey"
}
HEREDOC

确保 bash 脚本位于$PATH上并chmod +x它,以便可以执行它。

现在我们可以测试它的工作原理

aws sts get-caller-identity --profile simonw

如果您实现了 bash 脚本来读取 MAC 钥匙串,系统可能会提示您输入密码以解锁钥匙串。

我从这个博客中得到了这个想法。另外,这是官方的AWS文档。

相关内容

  • 没有找到相关文章

最新更新