IAM 对 EC2 REST API 的访问



我是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 账户,则应注册一个账户,以便您可以以自己的身份以完全权限进入控制台并了解流程...这可能比我的描述更有意义。

相关内容

  • 没有找到相关文章

最新更新