Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 谷歌云只能通过谷歌应用程序引擎执行http请求_Google App Engine_Google Cloud Platform_Google Cloud Functions - Fatal编程技术网

Google app engine 谷歌云只能通过谷歌应用程序引擎执行http请求

Google app engine 谷歌云只能通过谷歌应用程序引擎执行http请求,google-app-engine,google-cloud-platform,google-cloud-functions,Google App Engine,Google Cloud Platform,Google Cloud Functions,我在GoogleAppEngine上部署了一个nodejs应用程序,它触发http云函数,并使用简单的http调用(使用axios)从GoogleCloudSQL获取数据 将使用该站点的每个人都将能够看到http请求并复制它 保护我的google云功能的最好方法是什么?只能从google app engine调用?最好的方法是部署一个私有功能 使用cli部署功能时,请使用--no allow unauthenticated参数。此功能处于测试阶段 在控制台上,您无法在部署功能时对其进行修改。但

我在GoogleAppEngine上部署了一个nodejs应用程序,它触发http云函数,并使用简单的http调用(使用axios)从GoogleCloudSQL获取数据

将使用该站点的每个人都将能够看到http请求并复制它


保护我的google云功能的最好方法是什么?只能从google app engine调用?

最好的方法是部署一个私有功能

  • 使用cli部署功能时,请使用
    --no allow unauthenticated
    参数。此功能处于测试阶段
  • 在控制台上,您无法在部署功能时对其进行修改。但是,您可以在“功能”列表页面中删除对所有用户的访问权限
    • 单击功能行(不是功能名称,而是行)
    • 在右上角显示信息面板
    • 从云函数调用程序中删除
      alluser

现在只授权AppEngine访问您的函数

  • 在控制台中,在相同的位置(函数调用程序)添加AppEngine默认服务帐户:@appspot.gserviceaccount.com
  • 在cli中,使用以下命令
gcloud beta函数添加iam策略绑定\
--member='serviceAccount:@appspot.gserviceaccount.com'\
--role='roles/cloudfunctions.invoker'

现在只有角色为
cloudfunctions.invoker的用户/服务帐户可以调用您的函数。

我觉得@Denis T提到的帖子确实提到了您场景的选项。既然您评论它对您的方案不起作用,您是否考虑仅对App Engine默认服务帐户限制对云功能的访问?Denis引用的答案中提到了如何做到这一点。

您是否无法直接从GAE查询云SQL?你必须通过云计算功能吗?@DenisT。这篇文章中的解决方案需要云运行和端点。此外,这些功能仍处于测试阶段,谷歌应用程序引擎拥有相同的云功能服务帐户,因此我认为这不是解决我问题的办法。@DougStevenson是的,可以从GAE查询云SQL,但构建单一应用程序不是最佳做法,所以我更喜欢将前端与后端分开。此外,我希望在其他应用程序中使用我的云功能。Beta在GCP上非常稳定和高效。根本没有SLA,但它工作得很好更改“删除所有成员”为“删除诱惑者”已经尝试了此解决方案,但它不适用于我。我认为这是GCP的问题,因为云功能e GAE拥有相同的服务帐户。您是否已经证明此解决方案实际上可以将云功能的访问限制为仅应用程序引擎?我从未尝试使用AppEngine的相同服务帐户部署云功能。但是,这个解决方案是有效的。如果您的函数是私有的,则只有具有调用者角色的帐户才能调用它。默认情况下,GCP在CF和GAE之间使用相同的服务帐户。我再试了一次,但它不起作用。这个解决方案不起作用。在部署在google app engine上的应用程序中发出http请求将不会获得任何授权标头,以便与google云函数上的IAM策略一起使用。是的,但在GCF上使用IAM将不起作用,因为我正在从GAE上的react应用程序调用云函数。http请求将没有任何与IAM配置文件匹配的授权标头。刚刚找到的描述使用服务帐户授权http请求的标题。它还引用了github中的一个示例。可能值得一查。
gcloud beta functions add-iam-policy-binding <Your Function Name> \
  --member='serviceAccount:<your project id>@appspot.gserviceaccount.com' \
  --role='roles/cloudfunctions.invoker'