GCP为服务器到服务器的生产应用设置身份验证(GOOGLE_APPLICATION_CREDENTIALS)
https://cloud.google.com/docs/authentication/production
为服务器到服务器的生产应用设置身份验证
本指南介绍如何为服务器到服务器的生产应用设置身份验证和授权。身份验证过程用于确定客户端的身份。授权过程用于确定经过身份验证的客户端对特定资源具有哪些权限。也就是说,身份验证识别您是谁,而授权规定您可以做些什么。如需详细了解支持的身份验证方法以及如何选择,请参阅身份验证概览。
Google 使用凭据来标识您的应用,以进行配额计算和结算。此外,还使用凭据来授予对 GCP API、资源和功能的访问权限。
为应用提供凭据
GCP 客户端库使用名为“应用默认凭据”(ADC) 的策略来查找应用的凭据。当您的代码使用客户端库时,该策略将按以下顺序检查您的凭据:
-
首先,ADC 检查是否设置了环境变量
GOOGLE_APPLICATION_CREDENTIALS
。如果设置了该变量,则 ADC 使用该变量指向的服务帐号文件。下一部分将介绍如何设置环境变量。 -
如果未设置环境变量,则对于在 Compute Engine、Kubernetes Engine、App Engine 和 Cloud Functions 上运行的应用,ADC 使用这些服务提供的默认服务帐号。
-
如果 ADC 无法使用上述任何凭据,则会引发错误。
以下代码示例展示了该策略。该示例并未明确指定应用凭据。但是,只要设置了 GOOGLE_APPLICATION_CREDENTIALS
环境变量,或者只要应用在 Compute Engine、Kubernetes Engine、App Engine 或 Cloud Functions 上运行,ADC 便能够隐式查找凭据。
必须安装 Cloud Storage 客户端库才能运行以下示例。
手动获取和提供服务帐号凭据
如果您在本地开发代码、在本地部署应用或者将应用部署到其他公有云,则可以手动创建和获取服务帐号凭据。
创建服务帐号
以下步骤描述了如何创建服务帐号。但是,如下方限制访问权限部分所示,您应该限制对权限的访问,而不是设置所有者级别权限。
GCP CONSOLE
COMMAND LINE
-
In the GCP Console, go to the Create service account key page.
GO TO THE CREATE SERVICE ACCOUNT KEY PAGE - From the Service account list, select New service account.
- In the Service account name field, enter a name.
-
From the Role list, select Project > Owner.
Note: The Role field authorizes your service account to access resources. You can view and change this field later by using GCP Console. If you are developing a production app, specify more granular permissions than Project > Owner. For more information, see granting roles to service accounts.
- Click Create. A JSON file that contains your key downloads to your computer.
提供服务帐号凭据
创建服务帐号后,若要为您的应用提供凭据,有两种方式可供您选择。您可以明确设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量,也可以在代码中传递指向服务帐号密钥的路径。