假设我使用以下命令使用服务帐户的私钥创建了GCP对象的签名URL。
$ gsutil signurl -d 10m <private-key> gs://<bucket>/<obj> 由于一些原因,我不想给这个信号,我想撤销访问。
我试过了,把持续时间限制在0。但是问题是,每次我们运行gsutil signurl命令时,都会生成新的URL。因此,就我的情况而言,前者仍然是可以利用的。
$ gsutil signurl -d 0s <private-key> gs://<bucket>/<obj>我能想到的解决办法是,
将“存储对象查看器”的角色删除到服务帐户(OR)
如果有更好的方法使用gsutil撤销签名的url,如果我的解决方案适合这种情况,请帮助我。
发布于 2022-05-13 10:28:23
您需要删除服务帐户密钥,它可能会有几分钟的延迟,并且还会使其他签名的URL失效。
签名URL的验证是通过公钥和时间戳进行的。如果时间戳尚未过期,则只剩下删除需要删除服务帐户私钥的公钥。
如果签名的URL是由Google托管服务帐户键生成的,则必须删除服务帐户。
发布于 2022-08-02 14:09:19
根据GCStorage文档,您必须等待过期时间或更新服务帐户。(https://cloud.google.com/storage/docs/access-control/signed-urls#should-you-use)
但这些不符合我的要求。因此,我的解决方法就是重命名对象。重新命名后,旧签名的url将立即停止工作。
(注意rename操作的性能。GCS声明它需要copy,然后是delete,这在处理大文件时很慢。但实际上,看起来GCS只是编辑文件元数据,在同一个桶中重命名文件。我尝试在同一个桶中重命名/移动大文件(1GB),它是即时的。
另一个问题是丢失原始文件名。我可以考虑一些解决方案,比如将原始文件名存储在云存储文件的元数据中,或者您可以有一个单独的数据库(例如mysql)来将原始文件名映射到相应的存储文件名。)
https://stackoverflow.com/questions/72196582
复制相似问题