【问题标题】:AWS S3 download via BITS通过 BITS 下载 AWS S3
【发布时间】:2021-02-27 07:58:05
【问题描述】:

我知道我可以使用 Powershell 通过 VPN 从我的服务器启动和管理 BITS(后台智能传输服务)下载,我希望这样做以便在普通用户登录并准备就绪时在本地暂存大型安装资源用于以后的软件安装和更新。但是,我还想支持下载存储库的云服务,因为我预见(一些)公司不再拥有集中式服务器和 VPN 连接,只有云存储库和分布式劳动力。为此,我已经使用来自 AWS Powershell 工具的Copy-S3Object 进行了测试,并且有效。但据我所知,它不能节流。所以我想知道,有没有办法配置我的 AWS 存储桶,以便我可以使用 BITS 进行下载,但仍然受 AWS 凭证的限制? 如果有,该技术是否适用于多种云服务,例如 Azure 和 Google Cloud?如果可能的话,我希望成为云平台不可知论者。

我找到了this thread,这似乎表明创建预签名 URL 是可行的。但我对那个过程的理解是,嗯,不存在。我目前正在为每个用户创建凭据。我是否基本上将这些用户分配给 AWS 组并赋予该组一些权限,然后 Powershell 可用于使用特定用户的凭证签署 URL,而该 URL 是 BITS 使用的?因此,已从组中删除的用户将无法再创建签名 URL,因此将无法再访问可用资源?

或者,如果有办法限制Copy-S3Object,那也可以。但据我所知,这不是一个选择。

【问题讨论】:

  • 你指的是后台智能传输服务(BITS)吗?
  • @john-rotenstein 是的

标签: amazon-web-services powershell amazon-s3 microsoft-bits


【解决方案1】:

不确定限制 copy-s3 对象的方法,但您绝对可以 BITS 预签名的 s3 URL。

例如,如果您的 AWS 组中包含用户 a/b/c,并且该组附加了一个策略,允许对您的存储桶进行相关访问 - 这些用户 a/b/c 将能够创建该存储桶中对象的预签名 URL。例如,以下为名为 'BITS-test.txt' 的对象创建一个预签名的 url:

aws s3 presign s3://youbucketnamehere/BITS-test.txt 

这将生成一个预签名的 URL,可以传递给 Invoke-WebRequest 命令。

此 URL 不仅限于这些用户,拥有此 URL 的任何人都可以下载该对象 - 但只有用户 a/b/c(或任何其他有权访问该存储桶的人) ) 将能够创建这些 URL。如果您不希望用户 a/b/c 能够再创建这些 URL,那么您可以像您提到的那样将它们从 AWS 组中删除。

您还可以在 presign 命令中添加到期参数,例如 --expires-in 60,它使链接仅在该时间段内有效(在本例中为 1 小时 - 到期参数以分钟为单位设置)。

【讨论】:

  • 啊,@blinu,这很有趣。我一直在寻找允许创建预签名 URL 所需的权限。访问 URL 的目标是有意义的,并解释了为什么我没有找到寻找允许预签名 URL 创建权限的信息。我怀疑我需要将 URL 限制为一两个小时,甚至需要测试下载性能并适当地设置超时。我想这周我会尝试在 AWS S3 上使用它,然后看看我是否可以将类似的方法应用于 Azure 和 Google Cloud。谢谢!
  • @Gordon Np !您绝对可以使用 Az PowerShell 和 New-AzStorageBlobSASToken 命令在 Azure 中执行类似的操作。我没有使用 GCP 的经验,但我相信那里也会有类似的。祝你好运!
猜你喜欢
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
相关资源
最近更新 更多