如何在不删除服务账号的情况下撤销GCP已创建的签名URL
无需删除服务账号撤销GCS签名URL的可行方法
你通过gsutil signurl生成的是GCS无状态签名URL,完全不需要删除服务账号就能撤销访问权限,可用方案如下:
- 自然过期:你当前命令设置的有效期只有7分钟(参数
-d 7m),时间到了URL会自动失效,不需要做任何额外操作。 - 收回服务账号的读取权限:签名URL能正常访问的核心前提是,生成签名用的服务账号本身对目标对象有
storage.objects.get权限。你只要去存储桶或者对应对象的IAM配置里,把这个服务账号的对象读取权限移除,所有用这个服务账号签的对应资源URL会立刻失效,后续需要恢复重新加权限就行,服务账号本身不会被改动,其他权限也不受影响。 - 删除签名用的服务账号密钥:你命令里传的
<private-key>只是服务账号的某一个私钥,你不用删整个服务账号,只要在IAM后台找到这个服务账号的密钥列表,删掉你当时用来签名的那把密钥就行。删完之后,所有用这把私钥签出来的URL都会马上失效,服务账号本身、这个账号下的其他密钥、绑定的其他权限都能正常用。 - 覆盖目标对象:如果你只想撤这一个对象的签名URL权限,直接把同名对象重新覆盖上传一次就行。GCS里对象被覆盖后会生成新的世代号,原来签名URL绑定的旧资源标识就对不上了,访问会直接被拒绝。
顺便提一句,你贴的命令有格式错误:存储路径部分多了空格、斜杠写反了,正确写法应该是
gsutil signurl -d 7m <你的私钥文件路径> gs://<存储桶名>/<对象路径>,你写的gs: //<bucket>\<obj>跑的时候会报路径错误。
内容的提问来源于stack exchange,提问作者Random name
相关产品推荐
相关产品推荐

