当我可以从主账户创建实例时,为什么需要 IAM 用户?

Dan*_*one 3 amazon-ec2 amazon-web-services

我真的不明白为什么我需要 IAM 用户。文档说有两种方法可以访问 EC2。一种是为您的 AWS 账户创建访问密钥。另一种是使用IAM。亚马逊推荐 IAM。

所以我登录到主账户,在IAM页面上,我创建了一个IAM用户,然后创建了一个IAM组,然后使用AdministratorAccess策略将用户添加到IAM组中。我还在“安全凭证”选项卡下分配了一个自定义密码。

当我选择用户时,它会导航到一个摘要页面。在摘要页面上,有一个“User ARN:”定义,其中包括账户 ID 和用户名:

arn:aws:iam::account_id:user/username
Run Code Online (Sandbox Code Playgroud)

有了这些信息,我就可以退出主 AWS 账户并以 IAM 用户的身份登录,使用我为该用户创建的 IAM 用户名和密码。

https://account_id.signin.aws.amazon.com/console/
Run Code Online (Sandbox Code Playgroud)

现在文档说 Linux 实例没有密码。您必须在启动实例时指定密钥对的名称,并在使用 SSH 登录时提供私钥。因此,作为 IAM 用户,我在“网络和安全”下创建了一个密钥对。我将私钥文件保存在安全的地方。

最后,当我启动一个实例时,它会提示我输入密钥对,所以我选择了我创建的密钥对。实例运行后,我尝试从 ssh 连接:

$ ssh -i ~/.aws/username-key-pair-useast.pem username@dns-ip.compute-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

它不起作用。我必须指定名为 ubuntu 的用户:

$ ssh -i ~/.aws/username-key-pair-useast.pem ubuntu@dns-ip.compute-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

然后它起作用了。但是为什么不允许我使用 IAM 用户连接到服务器?我认为 IAM 用户的全部目的是为了我的实例的额外安全性。但是,如果我使用 ubuntu 超级用户登录并且 IAM 用户没有添加到实例的操作系统中,那么 IAM 提供了哪些额外的安全性?

此外,我对 IAM 用户所做的一切,我都可以用主 AWS 账户完成。例如,我可以登录主 AWS 账户并创建密钥对并启动一个实例。所以看起来IAM只是多余的。

我真的不明白为什么我需要 IAM 用户。

dmo*_*ati 5

IAM 用户用于登录 AWS 本身。

Ubuntu 用户(或类似用户)用于登录在 AWS 中创建的 EC2 实例。

IAM 用户提供了额外的安全性,因为它可以而且应该以降低的权限创建。相比之下,根账户是为所有新的 AWS 账户创建的,仅用于极少数的管理任务。IAM 帐户应用于所有日常任务。随着您向 AWS 账户添加更多用户,这一点变得更加重要。