【发布时间】:2018-12-02 17:47:44
【问题描述】:
我很想知道服务帐户 json 文件和应用程序默认凭据 json 文件 (GCP) 之间是否有任何区别?
【问题讨论】:
标签: google-cloud-platform google-bigquery
我很想知道服务帐户 json 文件和应用程序默认凭据 json 文件 (GCP) 之间是否有任何区别?
【问题讨论】:
标签: google-cloud-platform google-bigquery
区别在于一个是凭证,另一个是定位凭证的策略。
服务帐户凭据是授权 Google API 请求的推荐方法。这些凭据存储在文件(JSON 或 P12)中。但是,在某些服务(例如 Compute Engine)下运行时,会自动为实例创建凭据,并通过元数据服务器使其可用。
应用程序默认凭据 (ADC) 将搜索凭据。
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()
还有另一种获取凭据的常用方法。这些是从OAuth 2.0 Flow 派生的End User Credentials。这些凭证要求您设置用于授权用户凭证的客户端秘密凭证。这是从Google Accounts 等用户帐户获取凭据的方法。
此link 将提供更多详细信息。
【讨论】: