【问题标题】:Bigquery : What is the difference between service account json file and application default credentials json file?Bigquery:服务帐户 json 文件和应用程序默认凭据 json 文件有什么区别?
【发布时间】:2018-12-02 17:47:44
【问题描述】:

我很想知道服务帐户 json 文件和应用程序默认凭据 json 文件 (GCP) 之间是否有任何区别?

【问题讨论】:

    标签: google-cloud-platform google-bigquery


    【解决方案1】:

    区别在于一个是凭证,另一个是定位凭证的策略。

    服务帐户凭据是授权 Google API 请求的推荐方法。这些凭据存储在文件(JSON 或 P12)中。但是,在某些服务(例如 Compute Engine)下运行时,会自动为实例创建凭据,并通过元数据服务器使其可用。

    应用程序默认凭据 (ADC) 将搜索凭据。

    1. 如果设置了环境变量GOOGLE_APPLICATION_CREDENTIALS,ADC 将使用该文件作为变量指向的凭据。
    2. 如果未设置该变量,则在 Compute Engine、App Engine、Kubernetes Engine 或 Cloud Functions 上运行时将使用默认服务帐号。

    如果前两个步骤未能找到有效凭据,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 将提供更多详细信息。

    【讨论】:

      猜你喜欢
      • 2015-09-02
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      • 2019-04-26
      • 2012-09-03
      • 2017-10-19
      • 2020-05-27
      • 2017-09-29
      相关资源
      最近更新 更多