【问题标题】:what can you do with IAM roles that you cannot do with IAM groups?您可以使用 IAM 角色执行哪些您无法使用 IAM 组执行的操作?
【发布时间】:2020-08-01 13:21:32
【问题描述】:

我已阅读有关 IAM 角色和 IAM 组的文档,但我遗漏了一些简单的东西:我不明白你可以用 IAM 角色做什么,而你不能用 IAM 组做什么。

换句话说,考虑这些替代方案:

  • 使用 IAM 组,我授予组执行某些操作的权限,然后当我希望用户能够执行这些操作时,我授予他们该组的成员资格
  • 使用 IAM 角色,我授予角色执行某些操作的权限,然后当我希望用户能够执行这些操作时,我授予他们担任该角色的权限

第二种方法可以实现,第一种方法不能实现的具体是什么?

【问题讨论】:

    标签: amazon-web-services amazon-iam


    【解决方案1】:
    • IAM 用户 获得一组用于身份验证的凭据。它可以被分配权限。它被人们或应用程序用来调用 AWS 服务。
    • IAM 组 是 IAM 用户的集合。分配给 IAM 组的权限将适用于该组的所有 IAM 用户。
    • IAM 角色 具有一组权限,但没有凭据。通过让 IAM 用户担任该角色来使用它,然后该角色提供一组可用于访问服务的临时凭证

    例如:

    • User1 是有权启动 Amazon E2 实例的 IAM 用户。他们可以使用他们的凭证向 AWS 进行身份验证并请求启动一个实例。但是,他们无权终止 EC2 实例。
    • Admin-Role 是一个 IAM 角色,有权终止 EC2 实例。
    • User1Admin-Role 上调用 AssumeRole()。如果他们有权执行此操作,他们将收到一组临时凭据。
    • User1 然后使用这些凭据调用TerminateInstances()。在此过程中,他们使用临时凭据而不是他们自己的凭据来发送请求。

    同样:

    • Lambda1 是一个 AWS Lambda 函数
    • Lambda-Role 是与 Lambda1 函数关联的 IAM 角色。该角色已被授予访问 Amazon S3 的权限。
    • 当使用Lambda1 函数时,Lambda 服务会自动假定Lambda-Role 并将这些凭据提供给 Lambda 函数,以便它可以调用 S3。

    请注意,在第二个示例中,Lambda 函数本身没有凭证。相反,AWS 服务代表其代入角色并提供凭证。这与将 IAM 角色分配给 Amazon EC2 实例的方式相同。

    另外,请注意,假设 IAM 角色实际上可以提供最初可用的更多权限。 User1 可以担任角色以获得终止实例的权限,而他们自己不允许这样做。因此,控制 可以调用AssumeRole 或使用PassRole(用于将IAM 角色分配给EC2 和Lambda 等服务)非常重要,否则他们可能会获得更多权限你希望他们拥有。

    【讨论】:

    • 我理解你写的一切(我想),但我仍然不明白它如何回答我的问题,关于你可以用你不能用组做的角色做什么。在您的第二个要点中,“Admin-Role 是有权终止 EC2 实例的 IAM 角色”,为什么我不能只创建一个有权终止 EC2 实例的 IAM 组,然后将 User1 添加到该 IAM 组?
    • 如果您自己使用 AWS 账户,请随意授予自己所有权限。如果一个帐户在具有多个用户的组织中使用,那么管理人们拥有的权限至关重要。在某些情况下,接受 IAM 角色(例如 Lambda 函数、EC2 实例)。此外,使用跨账户权限需要在不同账户中担任角色。对于其他情况,请随意使用您的 IAM 用户。
    • 好的,我想我也理解这一点,但我缺少一些关于为什么会这样的基本信息。例如,Lambda 函数和 EC2 实例仅接受 IAM 角色的声明。为什么它们不能像其他资源一样被设计为接受授予 IAM 用户组的权限?还有关于跨账户权限的同样问题——为什么账户 X 下的 IAM 用户必须承担角色才能使用账户 Y 中的资源?为什么账户 Y 中的资源没有权限授予账户 X 中的 IAM 组?
    • “为什么账户 Y 中的资源不能拥有授予账户 X 中的 IAM 组的权限?” 您会将这些权限放在哪里?虽然某些服务(S3、SQS、SNS)能够授予权限,但大多数服务只是使用 IAM 提供的权限。 IAM 角色乍一看确实有点奇怪,但它们确实提供了一些 IAM 用户无法启用的强大功能。
    • '你会把这些权限放在哪里?'我不明白这个问题。对于 Y 组中的资源,如果允许说某个角色有权访问该资源,然后授予用户担任该角色的权限,为什么我不能只说 IAM 组有权访问该资源,然后将用户添加到该 IAM 组? “你会把这些权限放在哪里?”大概是我放置角色权限的“地方”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    • 2020-12-05
    • 2021-02-03
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多