1

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

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

或者,如果有一种节流方法Copy-S3Object也可以。但据我所知,这不是一个选择。

4

1 回答 1

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,该 URL 可以传递到 Invoke-WebRequest 命令中。

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

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

于 2021-02-28T19:03:32.250 回答