Amazon web services 如何根据网站用户在S3上添加非公共网站文件?

Amazon web services 如何根据网站用户在S3上添加非公共网站文件?,amazon-web-services,security,amazon-s3,Amazon Web Services,Security,Amazon S3,在我们的网站上,我们想增加上传个人文件的可能性。这些文件应该是非公开的,并且可以选择与网站上的其他人共享。我曾经为另一个项目构建了类似的功能,在该项目中,我将文件存储在服务器上的MongDB实例中。这使我们能够为每个文件构建细粒度的可访问性规则。然而,对于这个项目,我们希望将文件存储在AmazonS3上。现在我想知道如何使用S3构建类似的可访问性规则 我以前在S3上存储过文件,但这些只是公共文件。由于这些文件仅限于一个特定用户(或与之共享文件的用户),我不确定如何使用S3实现这一点。我在互联网上

在我们的网站上,我们想增加上传个人文件的可能性。这些文件应该是非公开的,并且可以选择与网站上的其他人共享。我曾经为另一个项目构建了类似的功能,在该项目中,我将文件存储在服务器上的MongDB实例中。这使我们能够为每个文件构建细粒度的可访问性规则。然而,对于这个项目,我们希望将文件存储在AmazonS3上。现在我想知道如何使用S3构建类似的可访问性规则

我以前在S3上存储过文件,但这些只是公共文件。由于这些文件仅限于一个特定用户(或与之共享文件的用户),我不确定如何使用S3实现这一点。我在互联网上搜索,找到了一些关于定义用户策略的信息。但是,这些策略基于S3用户,而不是我的网站用户。所以我真的找不到一个标准的方法来做这件事(或者我可能在寻找错误的词)

是否有一种方法可以要求S3上的文件(可能在url中)具有特定的机密?还是有其他标准的方法来实现这一点


欢迎所有提示

如果您对S3的内容存储满意,您可以查看AWS CloudFront CDN和API以提供访问控制。CloudFront将乐于使用S3 bucket作为私有源,并提供签名URL以授予临时访问权

您可以通过编程从指向s3中资源的代码生成CloudFrontURL,它将强制执行您提供的策略。url根据各种标准提供临时访问,如
IpAddress
DateLessThan
。这些可用于动态构造限制到特定IP(即当前用户IP)的url,并且仅在特定日期/时间之前有效

摘自AWS文件:

已签名的URL包含附加信息,例如过期日期和时间,使您能够更好地控制对内容的访问。此附加信息出现在基于固定保单或自定义保单的保单声明中。


请参阅AWS文档:

如果您对内容存储的S3满意,您可以查看AWS CloudFront CDN和API以提供访问控制。CloudFront将乐于使用S3 bucket作为私有源,并提供签名URL以授予临时访问权

您可以通过编程从指向s3中资源的代码生成CloudFrontURL,它将强制执行您提供的策略。url根据各种标准提供临时访问,如
IpAddress
DateLessThan
。这些可用于动态构造限制到特定IP(即当前用户IP)的url,并且仅在特定日期/时间之前有效

摘自AWS文件:

已签名的URL包含附加信息,例如过期日期和时间,使您能够更好地控制对内容的访问。此附加信息出现在基于固定保单或自定义保单的保单声明中。


请参阅AWS文档:

谢谢您的想法。这看起来是个很棒的服务。尽管如此,它仍然不是完全安全的,因为使用相同ip地址的用户在没有登录到我们的服务器时仍然可以访问该文件。你知道一种在url中为文件提供临时秘密的方法吗?这样,如果你不知道这个秘密,你就无法访问它?(我在这里处理医疗数据,所以我需要最高级别的安全性)我同意它有一些缺陷——但在现实世界中,安全性始终是一种折衷方案,通过cdn提供内容有很多好处。给定生成的url仅可用于由现有应用程序身份验证处理的预期客户端。然后假设包含链接的文档是通过https发送的,因此只有预期的客户端才会拥有它。然后假设链接只工作几秒钟或其他合适的时间。如果需要更多控制,可以使用aws api网关和lambda,或lambda edge。船装载更多的工作,但会给你更多的控制。我很想知道还有什么事要感谢你的想法。这看起来是个很棒的服务。尽管如此,它仍然不是完全安全的,因为使用相同ip地址的用户在没有登录到我们的服务器时仍然可以访问该文件。你知道一种在url中为文件提供临时秘密的方法吗?这样,如果你不知道这个秘密,你就无法访问它?(我在这里处理医疗数据,所以我需要最高级别的安全性)我同意它有一些缺陷——但在现实世界中,安全性始终是一种折衷方案,通过cdn提供内容有很多好处。给定生成的url仅可用于由现有应用程序身份验证处理的预期客户端。然后假设包含链接的文档是通过https发送的,因此只有预期的客户端才会拥有它。然后假设链接只工作几秒钟或其他合适的时间。如果需要更多控制,可以使用aws api网关和lambda,或lambda edge。船装载更多的工作,但会给你更多的控制。我很好奇还有什么