如何使用IAM用户帐户下载EC2 X.509证书?

时间:2012-01-24 22:37:15

标签: amazon-ec2 amazon-web-services x509 amazon-iam

通过AWS身份和访问管理,我有一个用户帐户到我的CTO的AWS账户(有一些钱)。

我想使用这个IAM用户帐户来设置我自己的实例以ssh到它并运行一些BeautifulSoup python脚本。

然而,在this tutorial之后,当到达我需要进入Security Credentials页面的部分时,我无法访问此页面而且我被告知我没有授权查看它。

我使用IAM管理器检查了我的权限,并且我拥有管理权限,最高可能的许可(所以在我看来)。

如何获得此X.509证书?

1 个答案:

答案 0 :(得分:12)

前言

首先,您可能想重新考虑是否确实需要这些X.509证书 - 原则上该教程是正确的:

  

有三种类型:访问密钥,X.509证书和密钥对。   第一种和第二种类型允许您连接到Amazon API。   哪种类型的凭据取决于您使用的API和工具。   一些API和工具支持这两种选择,而其他API仅支持   之一。

但是,现在大多数现代API和工具只通过访问密钥而不是X.509证书与AWS进行交互。

不幸的是,这不是本教程所基于的EC2 API工具的情况,实际上需要使用X.509证书,因为(大部分)仍然是基于较旧的EC2 SOAP API。

更新:EC2 API工具同时也支持AWS访问密钥和deprecated using X.509 certificates

  

虽然我们不鼓励它,但在有限的时间内你仍然可以使用   EC2_PRIVATE_KEY和EC2_CERT而不是AWS_ACCESS_KEY和   AWS_SECRET_KEY。有关详细信息,请参阅Common Options中的弃用选项   适用于Amazon Elastic Compute Cloud CLI中的API Tools   参考。如果指定两组凭据,则命令行   工具使用访问密钥ID和秘密访问密钥。

替代

你可能想先看看另一种方法:如果你对Python感到满意,我强烈推荐优秀boto Amazon Web提供的当前和未来基础设施服务的集成界面服务)与访问密钥配合使用,提供与 EC2 API工具(以及大多数其他AWS API)几乎相同的功能集,并且由于针对较新的AWS而执行得更快仅限REST API。

解决方案

AWS Identity and Access Management (IAM)不支持访问实际的AWS账户,它当前只涵盖AWS Management Console和大多数AWS API。您需要使用AWS账户的登录名和密码(即账户所有者的登录名和密码)登录才能访问Security Credentials页面。

不建议这样做(请参阅IAM Concepts中的安全凭证部分):

  

[...]当您创建AWS账户时,AWS会给出   默认情况下,AWS会将其自己的秘密访问密钥和访问密钥ID帐户。   AWS账户可以与AWS进行API调用。 我们希望如此   您不会定期使用这些凭据,但会使用它们   只是为了初步设置管理员组   组织即可。我们建议所有进一步的API之间进行交互   您的AWS账户和您的AWS资源位于用户级别(for   例如,使用用户的安全凭证)。 [强调我的]

然而,您仍然可以通过使用自己的证书来实现目标,如 X.509证书部分中所述:

  

虽然您可以使用IAM创建访问密钥,但您无法使用IAM   创建签名证书。但是,您可以使用免费的第三方   诸如OpenSSL之类的工具来创建证书。 [...]你有了   签名证书,你必须上传到IAM; [...]

Uploading a Signing Certificate中说明了如何实际执行后者。