2

我是新手AWS。我的客户AWS用来托管他的EC2实例。现在,我们正试图让我访问 API。显然,我需要我的身份验证详细信息来执行此操作。

他在他的账户下为我设置了一个 IAM 身份,这样我就可以登录到AWSWeb 控制台并配置 EC2 实例。但是,我终其一生都无法弄清楚我的 API 访问密钥显示在哪里。我无权查看“我的帐户”,这是我想它们会显示的地方。

那么,我要问的是,他如何通过他的帐户授予我 API 访问权限?如何使用我的 IAM 身份访问 AWS API?

4

2 回答 2

4

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*处理包含的所有 IAM 操作AccessKey(有关详细信息,请参阅IAM 策略元素参考)。

扩展变化

免责声明:尤其影响IAM访问的IAM策略的正确配置显然是很微妙的,所以请您自行判断以下解决方案的安全影响!

这是一个更明确且略微扩展的变体,其中包括AWS Multi-Factor Authentication (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}"
    }
  ]
}
于 2013-11-10T15:52:21.920 回答
2

“你”不能,但是:

在 IAM 中,在用户下,选择您的用户后,他需要单击安全凭证 > 管理访问密钥,然后选择“创建访问密钥”以创建与您的 IAM 用户关联的 API 密钥及其关联的秘密。在下一个屏幕上,有一条消息:

您的访问密钥已成功创建。

这是这些用户安全凭证最后一次可供下载。

您可以随时管理和重新创建这些凭据。

其中“管理”的意思是“停用或删除”,“重新创建”的意思是“重新开始”。IAM 管理员随后可以看到密钥,但看不到相关的秘密。

IAM 管理员可以在该屏幕上,并且仅在该屏幕上,并且仅在此时,才能查看密钥和与密钥关联的密钥或将它们下载到 CSV 文件中。随后,具有适当权限的人可以在 IAM 中查看用户的密钥,但在这一次机会之后您将永远无法再次查看该密钥(如果可以的话,那将是非常荒谬的)。

因此,您的客户需要在他为您创建的用户下进入 IAM,并创建一个 API 密钥/秘密对,保存密钥和秘密,并通过适当安全的渠道将该信息转发给您……如果他创建了它但没有保存相关的秘密,他应该删除密钥并创建一个与您的用户名相关联的新密钥。

如果您没有自己的 AWS 账户,您应该注册一个,这样您就可以像自己一样以完全权限进入控制台并了解流程……这可能比我的描述更有意义。

于 2013-11-09T20:38:46.720 回答