我向我的 AWS 账户(通过 IAM)添加了一个用户“Snapshotter”,并授予其以下权限ebs:CreateSnapshot
。
在我的一个实例上,我想要一个定期创建快照的脚本,但不在该实例上存储任何允许更宽松地访问帐户或其他 EC2 命令的凭据或证书。
我如何实现这个目标?
在 IAM 中,我可以获取 Snapshotter 用户的“秘密访问密钥”和“访问密钥 ID”,但看起来私钥和 X509 证书仅适用于整个帐户,因此需要完全访问权限。
$ ec2-create-snapshot -h
SYNOPSIS
ec2addsnap ([ec2-create-snapshot])
ec2addsnap [GENERAL OPTIONS] -d DESCRIPTION VOLUME
...
GENERAL OPTIONS
-K, --private-key KEY
Specify KEY as the private key to use. Defaults to the value of the
EC2_PRIVATE_KEY environment variable (if set). Overrides the default.
-C, --cert CERT
Specify CERT as the X509 certificate to use. Defaults to the value
of the EC2_CERT environment variable (if set). Overrides the default.
答案1
一种选择是使用 REST 接口而不是 SOAP 接口来调用 ec2-create-snapshot API。这样您就可以使用“访问密钥 ID”和“秘密访问密钥”而不是 x509 证书/pk。
我编写了一个名为 ec2-consistent-snapshot 的命令行程序,它使用 ec2-create-snapshot REST API。
如果您不使用任何触发创建快照的“一致”方面的命令行选项,那么它基本上与 ec2-create-snapshot 命令行相同(除了运行速度快十倍)。
这是我写的一篇文章,其中包含有关使用 IAM 和 ec2-consistent-snapshot 来执行您要执行的操作的分步说明:
使用 AWS Identity and Access Management (IAM) 提高 EC2 的安全性
http://alestic.com/2010/09/aws-iam
我已经设置了一个 Ubuntu PPA,以便轻松安装 ec2-consistent-snapshot 及其依赖项。其他发行版将需要更多工作,但它只是一个用 Perl 编写的脚本,因此具有高度的可移植性。
我还正在将 ec2-consistent-snapshot 的主源从 bazaar 移动到 github,以方便人们审查和分叉。