【问题标题】:Design of one AWS service that monitors & controls resources in several different AWS accounts设计一种 AWS 服务来监控和控制多个不同 AWS 账户中的资源
【发布时间】:2021-08-01 10:27:41
【问题描述】:

假设我在账户 A 中设置了这个服务,我希望它监控和控制账户 B 和 C 中的资源。我计划在 B 和 C 中创建 IAM 角色,然后在 A 中使用 STS 来获取访问权限到资源,例如https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html。我假设允许该服务一次访问多个不同的帐户。如果我需要监控账户 E、F、G...中的资源,此解决方案更容易扩展......

另一种方法是在账户 B 和 C 中部署服务,这样就不需要跨账户访问,但更难扩展。

我不确定哪种方法更好,并且是 AWS 的初学者。任何帮助表示赞赏,谢谢。

【问题讨论】:

    标签: amazon-web-services amazon-iam aws-sts


    【解决方案1】:

    在每个帐户中创建相同的 IAM 角色的方法很好。

    这通常通过 3rd 方服务完成,例如病毒扫描服务,因为它允许他们访问可能属于其他公司的帐户,但权限仅限于通过 IAM 角色授予的权限。

    这种方法也比将您的服务放在每个帐户中更容易管理,因为它需要额外的权限来部署、监控和维护这些服务。通过您自己的 AWS 账户完成这一切,您可以访问维护和运营服务所需的一切。

    请注意,您的服务将调用 AssumeRole(),提供您希望代入的 IAM 角色的 ARN(亚马逊资源名称)。 ARN 包括帐号。然后,AWS STS 会返回一些临时凭证,您的服务可以使用这些凭证通过该 IAM 角色的权限访问资源。

    因此,说“我假设该服务被允许同时访问多个不同的帐户”并不十分准确。相反,AssumeRole 需要为每个“假定”账户单独调用,并且每个 AWS 账户返回的凭证将不同。因此,它们不是“一次全部”访问,而是“每组凭据一个”。

    【讨论】:

    • 我打算使用 Java SDK 中的STSAssumeRoleCredentialsProvider。文档说会话在接近到期时会不断更新。那么这些会话是并行运行并且彼此独立的吗?谢谢:)
    • 调用AssumeRole时,您将提供一个角色ARN。返回的凭证将具有该角色的权限,并且只能在一个 AWS 账户中使用。
    • 这是有道理的。因此,如果线程 A、B、C 调用 AssumeRole 每个具有不同的 ARN,那么这些线程可以分别访问不同的帐户,而不会相互影响。
    猜你喜欢
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2019-06-05
    • 1970-01-01
    • 2017-08-24
    • 2019-01-07
    相关资源
    最近更新 更多