AWS 不会使用访问密钥 + 访问密钥密码,而是让您使用每 12 小时过期一次的令牌。为此,您必须先使用访问密钥 + 访问密钥密码来获取此令牌。之后,您就可以与他们的 API 进行交互。如果有人获得了访问密钥 + 密码的访问权限,您显然就完蛋了。如果有人获得了令牌的访问权限,他们有 12 小时的时间来造成损害。
不过,我不确定这是否比在访问亚马逊 API 时将密钥+密码放在 SSL 标头中更安全。我仍然需要将此密钥+密码放在用于 CD 的 CI 系统中(当然,锁定为仅将图像推送到 ECR,因此其范围仅限于此)。
我不明白获取令牌的目的,并且很想听听关于如何这样做更安全的解释,因为对于 CI 来说,弄清楚这一切肯定会更加麻烦。
答案1
它比对每个连接进行身份验证更快,并且您连接的基础设施不必执行身份验证,只需确认令牌有效即可。此外,如果对每个连接都进行身份验证,则需要快速进行。我们不希望这样。花费更长时间的身份验证方案对攻击者更有威慑力。
答案2
永久访问密钥 ID 和密钥与 IAM 用户相关联,并授予持有者该用户享有的权限。所有权限。
在某些情况下,授予临时凭证以在一段时间内授予(IAM 用户)相同的访问权限。正如您所指出的,这会减少凭证的可用时间(这是一件好事),但不会降低访问级别。但是,这并不是唯一的用例。
当使用临时凭证承担 IAM 角色时,则只能使用该凭证授予的角色中的权限。此类角色的权限通常比 IAM 用户的一般访问权限更有限。例如,只能访问 RDS 数据库。这确实降低了访问级别,并且与有限的时间段相结合,在凭证泄露时提供了更好的保护。
答案3
我不确定这是否比在访问亚马逊 API 时仅将密钥+密码放在 SSL 标头中更安全。
一个示例场景:您无意中记录了请求。这不是理论上的. 记录的密钥和密码将在数月/数年后仍然有效,除非被撤销;记录的令牌很快就会变得毫无用处。
我仍然需要将此密钥+密码放入 CD 的 CI 系统中(当然锁定为仅将图像推送到 ECR,因此它的范围仅限于此)。
如果您使用可以使用 IAM 配置文件的 AWS CodeBuild,则不会如此。