将敏感数据传递给只有 root 才能访问的 EC2 实例(在启动时或其他情况下)的最佳方法是什么?
- 我不能使用 UserData,因为任何人都可以读取它。
- 由于同样的原因,我无法使用私有 S3 存储桶(元数据及凭证可以被机器上的任何人访问)。
- 我强烈不想烘焙自己的 AMI,因为这很麻烦。
答案1
我不能使用 UserData,因为任何人都可以读取它。
为什么允许不受信任的用户在你的系统上拥有 shell 账户?
由于同样的原因,我无法使用私有 S3 存储桶(元数据及凭证可以被机器上的任何人访问)。
如果您使用的是 IAM 服务器角色,情况就是如此。但是,您可以仍然使用 S3 存储桶,只需将凭据存储在只有 root 才有权访问的文件中。
答案2
有多种方法可以做到这一点:
虚拟机启动后,您可以通过 ssh 进入虚拟机,使用 sudo 权限成为 root 用户(假设您有其凭据)并复制敏感数据。
如果 root 用户有 ssh 密钥,并且您有权访问公钥,请使用公钥加密敏感数据并将其放置在用户数据中。只有 root 用户才能解密。
前一项的任何变体,其中根用户具有“秘密”,可用于加密数据。