如何修改Python代码实现仅用最小权限读取Google Cloud Storage资源
解决方案
你可以直接在本地构造Bucket实例,跳过get_bucket()的元数据查询请求,就不需要storage.buckets.get权限了,修改后的代码如下:
from google.cloud import storage client = storage.Client() # 注意这里用bucket()而非get_bucket(),仅本地构造对象,不会发起API请求 bucket = client.bucket(BUCKETNAME) # 后续操作和原来一致 blob = bucket.get_blob(BLOBNAME) raw_bytes = blob.download_as_bytes()
原理说明
- 原来的
get_bucket()方法会主动向GCS服务端请求查询桶的元数据,因此要求调用者持有storage.buckets.get权限 client.bucket()方法仅在本地初始化Bucket类的实例,不会发起任何网络请求,后续get_blob()、download_as_bytes()等操作只会调用对象相关的接口,全程仅需要storage.objects.get权限,符合最小权限要求。
内容的提问来源于stack exchange,提问作者Boris Lau
相关产品推荐
相关产品推荐

