我是AWS
新手。我的客户端使用 AWS
来托管他的 EC2
实例。现在,我们正试图让我获得API访问权限。显然,我需要我的身份验证详细信息来执行此操作。
他在他的账户下为我设置了一个 IAM 身份,以便我可以登录到 AWS
Web 控制台并配置 EC2 实例。但是,我一生都无法弄清楚我的 API 访问密钥显示在哪里。我没有权限查看"我的帐户",我想它们会显示在那里。
所以,我要问的是,他如何通过他的帐户授予我API访问权限?如何使用我的 IAM 身份访问 AWS API?
Michael - sqlbot 的答案是正确的(+1),但并不完全完整,因为 AWS 访问控制策略中最近但非常有用的变量添加:
今天,我们将扩展 AWS 访问策略语言,以包括 支持变量。策略变量使创建更容易 并管理包括个性化访问的一般政策 控制。
这样可以实施"IAM 凭证自我管理"组策略,该策略通常会分配给最基本的 IAM 组,如常见的"用户"。
- 请注意,以下解决方案仍需要由 AWS 账户拥有者(或有权管理 IAM 本身的 IAM 用户)实施,但只需执行一次,以便其他用户能够自行管理凭证。
官方解决方案
介绍性博客文章中包含一个相应的示例(同时已在 允许用户在 IAM 文档中管理自己的安全凭证 - 更新:此示例再次消失,可能是由于仅使用 API 通过自定义解决方案适用,因此令人困惑):
变量替换还简化了允许用户管理其 自己的凭据。如果你有很多用户,你可能会觉得它不切实际 创建允许用户创建和轮换的单个策略 他们自己的凭据。使用变量替换,这变为 作为组策略实现的微不足道。以下政策允许 任何 IAM 用户执行任何与密钥和证书相关的操作 在他们自己的凭据上。[强调我的]
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action":["iam:*AccessKey*","iam:*SigningCertificate*"],
"Resource":["arn:aws:iam::123456789012:user/${aws:username}"]
}
]
}
资源范围arn:aws:iam::123456789012:user/${aws:username}
可确保每个用户实际上仅被授予对其自己的凭据的访问权限。
请注意,此解决方案仍然存在可用性缺陷,具体取决于用户访问 AWS 资源的方式,即通过 API、CLI 或 AWS 管理控制台(例如,后者需要额外的权限)。
此外,各种*
字符是通配符,因此iam:*AccessKey*
处理包含AccessKey
的所有 IAM 操作(有关详细信息,请参阅 IAM 策略元素参考)。
扩展变体
免责声明:IAM策略的正确配置尤其影响IAM访问显然是微妙的,因此请自行判断以下解决方案的安全影响!
下面是一个更明确且略微扩展的变体,其中包括 AWS 多重身份验证 (MFA) 设备自我管理和一些可用性增强功能,以简化使用 AWS 管理控制台:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"iam:CreateAccessKey",
"iam:DeactivateMFADevice",
"iam:DeleteAccessKey",
"iam:DeleteSigningCertificate",
"iam:EnableMFADevice",
"iam:GetLoginProfile",
"iam:GetUser",
"iam:ListAccessKeys",
"iam:ListGroupsForUser",
"iam:ListMFADevices",
"iam:ListSigningCertificates",
"iam:ListUsers",
"iam:ResyncMFADevice",
"iam:UpdateAccessKey",
"iam:UpdateLoginProfile",
"iam:UpdateSigningCertificate",
"iam:UploadSigningCertificate"
],
"Effect": "Allow",
"Resource": [
"arn:aws:iam::123456789012:user/${aws:username}"
]
},
{
"Action": [
"iam:CreateVirtualMFADevice",
"iam:DeleteVirtualMFADevice",
"iam:ListVirtualMFADevices"
],
"Effect": "Allow",
"Resource": "arn:aws:iam::123456789012:mfa/${aws:username}"
}
]
}
"You" 不能,但是:
在 IAM 的用户下,选择您的用户后,他需要单击安全凭证>管理访问密钥,然后选择"创建访问密钥"以创建与您的 IAM 用户关联的 API 密钥及其关联的密钥。 在下一个屏幕上,有一条消息:
其中"管理"表示"您的访问密钥已成功创建。
这是最后一次下载这些用户安全凭据。
您可以随时管理和重新创建这些凭据。
停用或删除","重新创建"表示"重新开始"。 IAM 管理员随后可以看到密钥,但不能查看关联的密钥。
只有从该屏幕,并且只有从该屏幕,IAM管理员才能查看与密钥关联的密钥和密钥,或将它们下载到CSV文件。 随后,具有适当权限的人可以在 IAM 中查看用户的密钥,但在这一次机会之后,您将永远无法再次查看密钥(如果可以的话,这将是非常荒谬的)。
因此,您的客户需要进入 IAM,在他为您创建的用户下,创建一个 API 密钥/密钥对,保存密钥和密钥,并通过适当的安全通道将该信息转发给您......如果他创建了密钥,但没有保存关联的密钥,则应删除密钥并创建一个与您的用户名关联的新密钥。
如果您没有自己的 AWS 账户,则应注册一个账户,以便您可以以自己的身份以完全权限进入控制台并了解流程...这可能比我的描述更有意义。