如何使用 Python 创建/管理 GCP API 密钥

Posted

技术标签:

【中文标题】如何使用 Python 创建/管理 GCP API 密钥【英文标题】:How do I create/manage GCP API keys using Python 【发布时间】:2020-10-08 14:38:49 【问题描述】:

我正在尝试使用 Python 等客户端库访问 Google Cloud API 服务,但是我无法从文档 here 中找到任何内容。文档真的很难找到。请帮忙。

我需要使用客户端库为可以使用 API 密钥访问 API 网关的客户创建 API 密钥。

【问题讨论】:

【参考方案1】:

根据official documentation,如果您使用 API 密钥进行身份验证,则必须首先为您的服务启用 API 密钥支持,然后才能识别向您的 API 发送请求的服务,您使用服务帐户。

话虽如此,您可以使用 Cloud Console、gcloud 工具、serviceAccounts.keys.create() 方法create a service account key,文档中包含以下示例,以使用 Python 创建服务帐户密钥。

import os

from google.oauth2 import service_account
import googleapiclient.discovery

def create_key(service_account_email):
    """Creates a key for a service account."""

    credentials = service_account.Credentials.from_service_account_file(
        filename=os.environ['GOOGLE_APPLICATION_CREDENTIALS'],
        scopes=['https://www.googleapis.com/auth/cloud-platform'])

    service = googleapiclient.discovery.build(
        'iam', 'v1', credentials=credentials)

    key = service.projects().serviceAccounts().keys().create(
        name='projects/-/serviceAccounts/' + service_account_email, body=
        ).execute()

    print('Created key: ' + key['name'])

你可以在link找到另一个例子

【讨论】:

做得很好,谢谢!【参考方案2】:

目前没有公共 API 可用于以编程方式创建 API 密钥。一个月前我看到了一个测试版,但现在它不再可用了。

我最近观看了一个使用 Googler 提供的新 API 的视频,但没有公开记录。

因此,您可以使用此 API 调用(非文档,如有更改,恕不另行通知。使用风险自负)


curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -X POST https://apikeys.googleapis.com/v1/projects/PROJECT_ID/apiKeys

【讨论】:

【参考方案3】:

如果您想使用 Google 的 API,最好创建服务帐户并在 Python 代码中使用它。 https://cloud.google.com/docs/authentication/production?hl=en

如果您已经创建了服务并且希望使用 API Key 公开 API,那么您可以按照您提到的链接中的说明进行操作。

【讨论】:

我想使用客户端库创建 API 密钥 没有以编程方式创建 API 密钥的选项。您需要使用云控制台。

以上是关于如何使用 Python 创建/管理 GCP API 密钥的主要内容,如果未能解决你的问题,请参考以下文章

使用GCP API密钥限制对特定GCP App Engine服务的访问?

如何使用 API 或 Terraform 模板在 GCP 中创建 StackDriver 工作区

权限被拒绝 - GCP 云资源管理器 setIamPolicy

无权访问此资源/API (GCP)

如何从谷歌数据实验室外部使用 gcp 包?

GCP IAM REST API 服务帐号密钥问题