当前位置: 首页 > 知识库问答 >
问题:

Amazon S3查看私人文件

扈翰
2023-03-14

我正在使用Amazon S3将文件上传到不同的文件夹。所有文件夹和文件都是公开的,任何人都可以看到。我创建了一个私人文件夹,我想把私人图像放在那里,这样只有我可以看到它们。我已经创建了一个桶策略规则,将拒绝访问该文件夹。但是我怎么才能看到文件呢?有没有这样的特殊链接https://s3.amazonaws.com/bucket/private_folder/file.jpg?secret_key=123可以让我和知道密钥的人看到文件?

是否有任何方法上传私人文件,可以通过使用secret_key,网址或类似的东西看到?

共有2个答案

郏稳
2023-03-14

您可以通过使用临时Url方法创建临时Url来访问s3私有文件。

$url = Storage::temporaryUrl(
    'file.jpg', now()->addMinutes(5)
);

temporaryUrl方法的参数是:$路径$过期$选项=[]。前两个参数是必需的,$选项的默认值为空数组。

商璞
2023-03-14

默认情况下,Amazon S3中的所有对象都是私有的。然后,可以通过以下方式之一添加权限,使对象“公开”:

  • 对象访问控制列表(ACL):直接在对象上设置权限
  • 桶策略:与桶相关,可以定义与子目录、密钥名称(文件名)、时间、IP地址等相关的规则
  • IAM策略:与特定用户或组相关

只要这些方法之一授予访问权限,该人就能够访问对象。也可以分配覆盖允许权限的Deny权限。

当通过未经身份验证的URL(例如s3.amazonaws.com/bucket name/object key)访问对象时,上述规则确定访问权限。但是,如果您针对服务进行身份验证,例如使用用户凭据调用S3API或使用预签名URL,则即使是“私有”文件也可以访问。

要了解这是如何工作的,请单击Amazon S3管理控制台中的私人文件,然后从操作菜单中选择打开。该对象将被打开。这是通过为浏览器提供一个预签名的URL来完成的,该URL包括一个加密大小的URL和有效期。该URL将仅在定义的时间之前工作以获取私人文件。

因此,要回答您的问题,您仍然可以通过以下方式访问私人文件:

  • 控制台中的Open命令
  • Web浏览器中的预签名URL
  • 经过身份验证的API调用

只是要小心,不要定义甚至会覆盖您访问文件能力的拒绝规则。简单地允许您想要公开的目录更容易。

请参阅:查询字符串请求身份验证替代方案

 类似资料:
  • 可查看自己及朋友、或在线游戏中曾一起游玩的玩家等等的个人信息。可从朋友列表或(一起游玩的历史记录)轻触想查看个人信息的对象。 A ) 虚拟形象/状态/在线ID 状态的种类 在线 离线 待命状态 正在游玩PlayStation®3规格软件的游戏 正在游玩PS Vita规格软件的游戏 游戏的缩略图 正在游玩目前显示缩略图的游戏 未注册PlayStation®Network的状态下,若轻触(朋友)>[开

  • 问题内容: 我以编程方式创建了jks类型(即默认类型)的Java密钥库。 它最初是空的,所以我创建了DSA证书。 如何查看公钥和私钥? 即有一个命令可以打印我的证书的私钥? 我只能从我的理解中找到哪个可以整体打印证书: 我认为这是整个证书。如何通过keytool查看私钥(或公钥)? 问题答案: 您在密钥库中创建了一个私有(和关联的公共)密钥。要使其真正可用,可以让它由认证机构(CA)签名- 因为这

  • 查看文件里面的内容,你可以用 vi 打开这个文件,如果你只想输出文件里的内容,可以使用 cat 命令。如果文件比较大,你只想输出文件的最后一小部分,可以使用 tail 命令。 先在 ninghao-project/README.md 文件里追加点内容,可以这样做: echo "hello" >> ninghao-project/README.md cat cat,可以直接输出文件里的内容。 ca

  • 在github文档中找不到任何东西,在这里也找不到。但是我想知道是否可以有一个用于名为的私有存储库,该存储库可以访问,只有一个人可以访问存储库本身。 我记得曾经读过一些关于github页面总是公开的东西,但似乎再也找不到了。

  • 我只使用JavaScript,不使用任何服务器端代码,通过REST API实现了从客户机到AmazonS3的直接文件上载。一切正常但有一件事让我担心... 当我向AmazonS3 REST API发送请求时,我需要对请求进行签名,并将签名放入头中。要创建签名,我必须使用我的密钥。但是所有的事情都发生在客户端,所以,秘密密钥可以很容易地从页面源(即使我混淆/加密我的源)泄露出来。 我该怎么处理?这真