为什么 AWS 的跨账户访问更安全?

Why is cross-account access for AWS safer?

AWS 有一项称为跨账户访问的功能,您可以在其中创建一个 IAM 角色,在该角色中设置您提供策略的可信实体。然后该实体可以将对该角色的访问权委托给它自己的实体。 AWS 通常建议为代表其客户访问 AWS 帐户的第 3 方服务使用此方法。

这避免了必须在第三方来源保存客户的访问密钥凭据,但第三方来源可能会受到损害并使用跨帐户角色。也可以为用例创建特定的 IAM 用户,为其分配适当的策略,并为其分发访问密钥。

似乎两种方式的风险都是一样的。我知道跨账户将使用 STS 并生成临时凭证,但如果第 3 方受到威胁,这并不能真正使任何事情变得更安全。信任实体必须禁用该角色或禁用 [​​=16=] 密钥。

区别的一个基本类比是将访问徽章交给某人(任何人都可以使用)与将访问徽章交给某人需要该人的指纹才能成功使用。

使用 IAM 用户控制第 3 方访问涉及移交 key/secretKey - 这是简单的 "access badge"

使用 AssumeRole 控制第 3 方访问使用相同的信息和安全令牌。要代入角色,您的 AWS 账户必须受到该角色的信任。信任关系是在创建角色时在角色的信任策略中定义的。这是 "access badge with fingerprint validation".

(此外,为了增加安全性,AssumeRole 的 key/secretkey 可以是在特定时间段后过期的临时凭据。)

AWS AssumeRole API Documentation 很有用,是开始学习更多知识的良好基础。