我很想知道服务帐户json文件和应用程序默认凭据json文件(GCP)之间是否有区别?
答案 0 :(得分:1)
区别在于,一个是凭证,另一种是定位凭证的策略。
服务帐户凭据是授权Google API请求的推荐方法。这些凭据存储在文件(JSON或P12)中。但是,当在某些服务(例如Compute Engine)下运行时,会自动为实例创建凭据,并通过元数据服务器提供该凭据。
应用程序默认凭据(ADC)将搜索credentails。
GOOGLE_APPLICATION_CREDENTIALS
,则ADC将使用该文件作为该变量指向的凭据。如果前两个步骤未能找到有效的凭据,则ADC将失败并发生错误。
使用环境变量指定服务帐户凭据:
export GOOGLE_APPLICATION_CREDENTIALS="/mysecretpath/service_account.json"
ADC将自动从GOOGLE_APPLICATION_CREDENTIALS
加载凭据
从json加载凭据(Python示例):
client = storage.Client.from_service_account_json(
'/mysecretpath/service_account.json')
在Compute Engine上加载服务帐户默认凭据:
from google.auth import compute_engine
from google.cloud import storage
credentials = compute_engine.Credentials()
client = storage.Client(credentials=credentials, project=project)
在App Engine上加载服务帐户默认凭据:
from google.auth import app_engine
from google.cloud import storage
credentials = app_engine.Credentials()
client = storage.Client(credentials=credentials, project=project)
Kubernetes,Cloud Functions等的
ADC使用类似的方法通过上述示例创建凭据。
该示例使用ADC策略来定位凭据:
from google.cloud import storage
client = storage.Client()
还有另一种获取凭据的常用方法。这些是End User Credentials
派生自OAuth 2.0 Flow
。这些凭据要求您设置用于授权用户凭据的客户端密钥凭据。这是一种从用户帐户(例如Google Accounts)获取凭据的方法。
此link将提供更多详细信息。