通过 GCP 云功能安全访问存储?

Securely accessing storage via GCP cloud function?

我需要在 GCP 中编写一个云函数,它响应 HTTP 请求并具有对 GCP 云存储的服务帐户访问权限。我的函数将接收一个字符串和阈值参数。它将从云存储中检索一个 csv 文件,计算提供的文本字符串与 csv 文件中的实体和 return 满足阈值要求的实体之间的相似度。

从Google的云功能教程中,我还没有看到任何赋予它云存储访问权限、用于访问其中的服务帐户等的东西

任何人都可以 link 资源或以其他方式解释如何从 A 到 B 吗?

让奇迹发生!

事实上,没有什么是神奇的。对于大多数 Google 云产品,您都有一个可以授予所需权限的服务帐户。在 Cloud Functions 上,默认服务帐户是具有此模式的 AppEngine 默认服务帐户 <projectID>@appspot.gserviceaccount.com.

当您部署 Cloud FUnctions 时,您可以通过此参数 --service-account= 使用自定义服务帐户。更安全,因为你的 Cloud Functions 可以有自己的服务账号,权限有限(App Engine 默认服务账号默认是 Project Editor,太宽了!!)

因此,此服务会自动加载您的云功能,Google 云身份验证库可以通过 Metadata server 访问它。凭据取自运行时上下文,它是环境的默认凭据

关于您的代码,请尽可能简单

    from google.cloud import storage

    client = storage.Client() # Use default credentials
    bucket = client.get_bucket('myBucket')
    blobs = bucket.list_blobs()
    for blob in blobs:
        print(blob.size)

在你的工作站上,如果你想执行相同的代码,你可以通过 运行 这个命令使用你自己的凭据 gcloud auth application-default login 如果你更喜欢使用服务帐户密钥文件(我强烈不推荐,但不是主题),可以设置环境变量GOOGLE_APPLICATION_CREDENTIALS,文件路径为value