Python 在生成预设计的s3 url之前承担角色

Python 在生成预设计的s3 url之前承担角色,python,amazon-web-services,amazon-s3,boto3,amazon-macie,Python,Amazon Web Services,Amazon S3,Boto3,Amazon Macie,在django应用程序中,我们允许用户直接将文件上传到S3 我们用电脑来做这件事 所有这些都很好,但我们现在在中收到可疑访问警报,因为它看到EC2凭据正在外部使用 梅西的描述是 此警报是由正在使用的临时EC2实例凭据创建的 亚马逊IP空间之外。EC2实例配置文件凭据为 预计最常用于EC2实例,这些实例 已由EC2元数据服务提供。这项技术是可行的 用于开源开发框架,如Metasploit和 从AWS网络外部观察其使用情况可能表明 潜在泄漏。请考虑联系用户确认 他们是否有意在AWS之外使用EC2凭证

在django应用程序中,我们允许用户直接将文件上传到S3

我们用电脑来做这件事

所有这些都很好,但我们现在在中收到可疑访问警报,因为它看到EC2凭据正在外部使用

梅西的描述是

此警报是由正在使用的临时EC2实例凭据创建的 亚马逊IP空间之外。EC2实例配置文件凭据为 预计最常用于EC2实例,这些实例 已由EC2元数据服务提供。这项技术是可行的 用于开源开发框架,如Metasploit和 从AWS网络外部观察其使用情况可能表明 潜在泄漏。请考虑联系用户确认 他们是否有意在AWS之外使用EC2凭证。如果 因此,白名单有效用户或考虑重置IAM用户凭据。

这是有意义的,因为实例角色生成由外部用户使用的预签名帖子url

我是否真的有可能让外部用户获得与我的实例角色相同的访问权限

如果是这样的话,是否值得在我的特定bucket中创建一个单独的角色,该角色只能访问
s3:PutObject
,然后在生成预签名的帖子url之前假设该角色?这样,如果以某种方式被破坏,它将没有实例角色那么多的特权

基于,url应该只授予将特定对象发布到特定bucket的访问权限,但是这个Macie警报让我感到紧张


谢谢

除了将文件上传到您的bucket之外,您不必担心外部用户获得任何访问权限

htt ps://s3.amazonaws.com/bucket/foo.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256& X-Amz-Expires=3600&X-Amz-Credential=AkiaJZxxxxxxxus-east-1%2Fs3%2Faws4\u请求&X-Amz-SignedHeaders=host&X-Amz-Date=20171021T190750Z&X-Amz-Signature=8b84ae9b59e9f8a8d7066ecc39e797c8dc29848abcdef61717

AWS所做的只是获取与您的访问密钥相关联的秘密密钥(AKIAJRZXXXXXXXX),根据对象url、过期时间等计算签名,并检查它是否与url中的签名匹配。只有你和AWS知道密匙,没有其他人知道。如果签名匹配,用户可以上载文件,否则由于URL被篡改或过期,访问将被拒绝