我有一个基于 AWS 的作业处理架构,需要 EC2 实例查询 S3 和 SQS。为了让正在运行的实例能够访问 API,凭据以 base64 编码的 shell 脚本的形式作为用户数据 (-f) 发送。例如:
$ cat ec2.sh
...
export AWS_ACCOUNT_NUMBER='1111-1111-1111'
export AWS_ACCESS_KEY_ID='0x0x0x0x0x0x0x0x0x0'
...
$ zip -P 'secret-password' ec2.sh
$ openssl enc -base64 -in ec2.zip
许多实例已启动...
$ ec2run ami-a83fabc0 -n 20 -f ec2.zip
每个实例使用硬编码到初始化脚本中的“秘密密码”对 ec2.zip 进行解码和解密。虽然它确实有效,但我的方法有两个问题。
- 'zip -P' 不是很安全
- 密码在实例中是硬编码的(它始终是“秘密密码”)
该方法与此处描述的方法非常相似
有没有更优雅或被接受的方法?使用 gpg 加密凭证并将私钥存储在实例上以解密它是我现在正在考虑的一种方法,但我不知道有任何警告。我可以直接使用 AWS 密钥对吗?我是否遗漏了 API 中一些非常明显的部分?