从实例存储 EC2 创建 AMI 时,为什么需要使用 -e 排除?不应该使用 --nofilter 来保留凭据吗?



按照文档中的步骤http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-instance-store.html:

准备使用ec2-bundle-vol将包上传到Amazon S3命令。一定要指定-e选项以排除该目录您的凭据存储在哪里。

对于我的实例,我的凭据存储:

  • 在环境变量中。在bashrc中也是这样每个终端都可以访问它们
  • 在我的webservers主目录var/www的ini文件中,根据PHP AWS SDK

如果目的是创建一个可以存储在S3中并用于启动新实例的AMI,难道我不希望这些凭据出现在AMI上吗?否则,在使用这个新的自定义AMI启动每个EC2之前,我必须每次都向其添加凭据。

类似地,默认情况下

默认情况下,bundle进程排除可能包含敏感信息。这些文件包括*。西南,*。swo, *。swp * .pem,*.Priv, id_rsaid_dsa *。gpg, *。jks, */。Ssh/authorized_keys和*/.bash_history。要包含所有这些文件,请使用——no-filter选项。要包含其中的一些文件,请使用——include选项。

还是那句话,难道我不想包括所有这些东西吗?

我是AWS账户上唯一的一个,虽然我已经设置了一个我使用的IAM用户。将这个AMI上传到S3,没有排除选项,并使用—no-filter应该没问题,不是吗?不会有其他人可以访问它吧?所以我很困惑为什么文档是这样建议的

通常,从AMI启动实例的人会在启动时提供他们自己的密钥对和他们首选的IAM角色,因此AMI通常包含no凭据。

此外,将凭据放入AMI通常是一种糟糕的安全实践,并且在很大程度上与凭据的临时性质不兼容。

[更新答案…]

理想情况下,不要在AMI中存储任何凭据。从AMI启动实例后:
  • 你的SSH公钥在启动时被推送到实例。
  • AWS凭证(访问密钥、秘密密钥、会话令牌)来自实例本身上的元数据服务(假设您使用
  • 其他特定于应用程序的凭据,例如DB凭据可以在启动时检索,例如从安全的S3桶中检索。

回到你的PHP INI问题:如果你正在谈论向AWS PHP SDK提供凭据,那么你不应该明确地这样做。使用适当的IAM角色启动实例,PHP SDK将自动从元数据服务中检索和自动旋转临时凭据。

相关内容

最新更新