Google app engine 我应该为secure flexible app engine设置哪些服务帐户权限->;云功能通信
我在确定需要将某些角色分配给哪个服务帐户时遇到问题 我有一个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错误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
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头中,以请求云功能。注意:基于身份的授权不要求向服务帐户分配任何角色。服务帐户的标识用于授权,而不是分配给服务帐户的角色。