本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
常见问题解答
一个预签名的请求可以多次使用吗? 这是安全风险吗?
是的,预签名请求中的签名可以多次使用。这是否构成安全风险是一个上下文问题。其他访问 AWS 服务的方法也允许重复。具有 AWS 凭据的用户或工作负载可以向发送多个请求 AWS 服务,其中任何一个请求都可能是重复的。
如果您的用例需要执行一次且仅执行一次,则应实施其他机制来强制执行一次性使用。一次性使用不是预签名请求的功能。作为一名安全工程师,您应该查看用例和实现,但在许多情况下,多次使用符合可接受的用途。
目标用户以外的其他人能否使用预签名请求?
预签名请求中的签名可以由任何拥有该签名的人发送。只有当它通过其他形式的验证(例如数据边界控制)时,它才会被接受。如果签名已过期、签名证书已过期,或者签名凭证无法访问所请求的资源,则请求将被拒绝。
其他使用进行身份验证的方法也是如此。 AWS 服务不当共享的凭据允许不当访问。核心最佳做法是仅与目标受众共享凭证和签名。如果您无法相信目标受众会保护私人数据的安全而不与他人共享,那么这将破坏任何形式的身份验证。
授权用户能否使用预签名的请求来泄露数据?
保护数据需要采取强有力的行动。在维护数据边界的同时允许出于预期目的进行访问需要一种全面的方法。 最低权限访问、数据边界控制以及仅使用临时访问凭证是适用于保护数据的一般最佳做法。适当使用这些控件还会限制用户通过他们生成的预签名请求执行操作的能力。
这是因为预签名请求提供的访问权限是授予用于签署请求的凭据的访问权限的子集。在这种情况下,适用于访问数据的最佳做法通常适用于预签名的请求,但是预签名的请求不会创建对数据的新访问权限。
最大到期时间仅限于签名证书的到期。 如果签名凭证被撤销,则基于凭证的签名将不再有效。
如果与签名证书关联的 IAM 委托人的权限不包括执行与预签名请求相关的操作,则调用预签名请求会导致 “访问被拒绝” 响应。 响应取决于调用时权限的当前状态,这与生成预签名请求签名的时间无关。
委托人的属性是根据与签名凭证关联的委托人进行评估的。
根据与签名凭证关联的角色会话来评估角色会话的@@ 属性。
与普通请求一样,网络的属性是根据请求的接收方式来评估的。
在这种情况下,对与预签名请求相关的风险的审查仅限于使用与用户凭证不同的凭据签署的区域,并且提供的访问权限不是用户主体的一部分。此检查应应用于服务设计、工作负载或代表用户生成签名的解决方案,而不是预签名的请求功能本身。
如果我怀疑预签名 URL 是以未经授权的方式共享的,我能否拒绝该网址的访问?
是。这需要使 URL 签名时使用的凭据失效。有多种方法可以做到这一点:
移除证书所属的 IAM 委托人的权限。如果该 IAM 委托人不再有权访问该 URL 所签名的资源和操作,则该 URL 将无法执行该操作。这会影响该 IAM 委托人的所有匹配使用。
如果用于签名 URL 的证书是临时 AWS STS 证书,则可以撤消在特定时间之前为 IAM 委托人颁发的临时证书的会话权限。根据用例,可能还有其他有效会话在正常到期时间之前失效,但新会话不会受到影响。撤消会话权限还会使使用与这些会话关联的凭据签名的任何 URL 失效,但是与新会话关联的新 URL 不会受到影响。
如果用于签名 URL 的凭证是永久凭证,请停用访问密钥。这会影响与这些凭证相关的所有用法。