【问题标题】:Securely accessing storage via GCP cloud function?通过 GCP 云功能安全访问存储?
【发布时间】:2021-03-18 17:02:38
【问题描述】:

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

从 Google 的云功能教程中,我还没有看到任何可以为其提供云存储访问权限、用于访问其中的服务帐户等的内容。

谁能链接资源或以其他方式解释如何从 A 到 B?

【问题讨论】:

标签: python google-cloud-platform google-cloud-functions google-cloud-storage service-accounts


【解决方案1】:

让奇迹发生!

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

部署云功能时,您可以通过使用此参数 --service-account= 来使用自定义服务帐户。这样更安全,因为您的 Cloud Functions 可以拥有自己的服务帐户,但权限有限(App Engine 默认服务帐户默认为项目编辑器,太宽了!!)

因此,此服务会随您的云功能自动加载,Google Cloud 身份验证库可以通过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,以文件路径为值

【讨论】:

  • 谢谢你,好心的陌生人!我很好奇你对这个相关问题的看法:stackoverflow.com/questions/66697571/…
  • 当然,我回答了。我想我找到了您的问题,这与安全/服务帐户无关
猜你喜欢
  • 2021-04-04
  • 2020-10-10
  • 1970-01-01
  • 2021-08-21
  • 2019-03-22
  • 2019-12-27
  • 2021-06-15
  • 2020-09-05
  • 2021-07-05
相关资源
最近更新 更多