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 我应该为secure flexible app engine设置哪些服务帐户权限->;云功能通信_Google App Engine_Google Cloud Platform - Fatal编程技术网

Google app engine 我应该为secure flexible app engine设置哪些服务帐户权限->;云功能通信

Google app engine 我应该为secure flexible app engine设置哪些服务帐户权限->;云功能通信,google-app-engine,google-cloud-platform,Google App Engine,Google Cloud Platform,我在确定需要将某些角色分配给哪个服务帐户时遇到问题 我有一个NodeJS应用程序运行在我灵活的应用程序引擎环境中。 我有一个hello world python3.7 HTTP云函数 我想从我的应用程序引擎向我的云功能发出GET请求 当allUser成员被赋予hello world云函数上的云函数调用者角色时,一切正常 但现在我想保护我的云功能端点,这样只有我的灵活应用程序引擎才能访问它 我删除了allUser成员,正如预期的那样,当应用程序引擎尝试调用时,我得到了403 现在,我将@appsp

我在确定需要将某些角色分配给哪个服务帐户时遇到问题

我有一个NodeJS应用程序运行在我灵活的应用程序引擎环境中。 我有一个hello world python3.7 HTTP云函数

我想从我的应用程序引擎向我的云功能发出GET请求

当allUser成员被赋予hello world云函数上的云函数调用者角色时,一切正常

但现在我想保护我的云功能端点,这样只有我的灵活应用程序引擎才能访问它

我删除了allUser成员,正如预期的那样,当应用程序引擎尝试调用时,我得到了403

现在,我将@appspot.gserviceaccount.com和@gae-api-prod.google.com.iam.gserviceaccount.com成员添加到hello world云函数中,并为他们提供云函数调用器角色

我希望flexible应用程序引擎现在能够调用hello world云函数,因为我给了它云函数调用器角色

但我一直得到一个403错误


app engine灵活地使用哪个服务帐户来调用云函数API?

要将云函数与服务帐户连接,需要进行一些设置:

  • 启用所需的API
  • 启用服务帐户
  • 充当用户服务帐户
默认的服务帐户创建了一个云功能,有时并不具有所有的特权

您可以在此处找到更多信息:


要将云功能与服务帐户连接起来,需要进行以下设置:

  • 启用所需的API
  • 启用服务帐户
  • 充当用户服务帐户
默认的服务帐户创建了一个云功能,有时并不具有所有的特权

您可以在此处找到更多信息:


约翰·汉利是对的

当使用GCP库执行操作(例如google cloud firestore)时,执行函数将使用底层服务帐户权限执行这些操作

当对云函数URL执行手动HTTP请求时,您必须从元数据服务器获取令牌以正确验证您的请求

def generate_token()->str:
“”“生成谷歌签名的OAuth ID令牌”“”
令牌请求url:str=f'http://metadata/computeMetadata/v1/instance/service- 
accounts/default/identity?受众={TARGET_URL}'
令牌请求头:dict={'Metadata-Flavor':'Google'}
token\u response=requests.get(token\u request\u url,headers=token\u request\u headers)
返回令牌\响应.内容.解码(“utf-8”)
def do_请求():
令牌:str=generate_token()
标题:dict={
“内容类型”:“应用程序/json”,
“接受”:“应用程序/json”,
“授权”:f'Bearer{token}”
}
post(url=TARGET\uURL,json=data,headers=headers)

约翰·汉利是正确的

当使用GCP库执行操作(例如google cloud firestore)时,执行函数将使用底层服务帐户权限执行这些操作

当对云函数URL执行手动HTTP请求时,您必须从元数据服务器获取令牌以正确验证您的请求

def generate_token()->str:
“”“生成谷歌签名的OAuth ID令牌”“”
令牌请求url:str=f'http://metadata/computeMetadata/v1/instance/service- 
accounts/default/identity?受众={TARGET_URL}'
令牌请求头:dict={'Metadata-Flavor':'Google'}
token\u response=requests.get(token\u request\u url,headers=token\u request\u headers)
返回令牌\响应.内容.解码(“utf-8”)
def do_请求():
令牌:str=generate_token()
标题:dict={
“内容类型”:“应用程序/json”,
“接受”:“应用程序/json”,
“授权”:f'Bearer{token}”
}
post(url=TARGET\uURL,json=data,headers=headers)

您走在正确的轨道上。接下来,从元数据服务器请求一个身份令牌,并将该令牌包含在“Authorization:Bearer ID_Token”HTTP头中,以请求云功能。注意:基于身份的授权不要求向服务帐户分配任何角色。服务帐户的标识用于授权,而不是分配给服务帐户的角色。您的操作是正确的。接下来,从元数据服务器请求一个身份令牌,并将该令牌包含在“Authorization:Bearer ID_Token”HTTP头中,以请求云功能。注意:基于身份的授权不要求向服务帐户分配任何角色。服务帐户的标识用于授权,而不是分配给服务帐户的角色。