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

     2023-03-24     76

关键词:

【中文标题】如何使用 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 密钥的选项。您需要使用云控制台。

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

】如何使用API或Terraform模板在GCP中创建StackDriver工作区【英文标题】:HowtocreateStackDriverWorkspaceinGCPusingAPIorTerraformTemplate【发布时间】:2019-04-0213:53:36【问题描述】:我想通过使用脚本、Terraform模板或API以编程方式创建Stackdriver工... 查看详情

GCP IAM:在通过python API创建服务帐户时/之后向服务帐户授予角色

...honAPI【发布时间】:2021-12-1916:52:21【问题描述】:目标:使用python,我想在GoogleCloudPlatform上的项目中创建一个服务帐户并授予该服务帐户一个角色。问题:文档解释了here 查看详情

我可以使用 Terraform 创建 GCP API 密钥吗?

】我可以使用Terraform创建GCPAPI密钥吗?【英文标题】:CanIcreateGCPAPIkeysusingTerraform?【发布时间】:2020-07-0418:56:23【问题描述】:我想使用Terraform创建GoogleCloudAPIkeys。这可能吗?【问题讨论】:它需要是API密钥还是服务帐户?AFAIK... 查看详情

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

...我从GCP收到403PERMISSION_DENIED响应,该部署创建服务帐户并使用云资源管理器API为其设置IAM策略。这是setIamPolicy模板:\'resour 查看详情

使用 python 对 GCP 计算 API 端点进行身份验证

】使用python对GCP计算API端点进行身份验证【英文标题】:usingpythontoauthenticatetoGCPcomputeAPIendpoint【发布时间】:2019-11-1012:11:15【问题描述】:我的目标是在不依赖gcloud二进制文件的情况下重现/复制gcloudcomputeaddressescreate的功能。我... 查看详情

将python库用于GCP时如何切换项目目标?

】将python库用于GCP时如何切换项目目标?【英文标题】:HowtoswitchprojecttargetwhenusingpythonlibsforGCP?【发布时间】:2020-10-1704:30:11【问题描述】:我目前正在尝试开发一个脚本,该脚本将从GCP上的安全指挥中心获取所有调查结果。我... 查看详情

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

...】:我一直在努力解决GCP中的这个特殊问题。我正在尝试使用GCP之外的RestAPI调用生成服务帐户密钥。下面是服务帐号和角色的屏幕截图。据我所知,服务帐户“服务帐户管理员密钥”是创建、列出等子权限的父级。因此,当调... 查看详情

如何使用服务帐户在 gcp 中设置正确的 iam 策略

】如何使用服务帐户在gcp中设置正确的iam策略【英文标题】:Howcanisetrightiampolicyingcpwithanserviceaccount【发布时间】:2017-06-2913:42:37【问题描述】:我在dnsAPI(可能是其他api条目)上的GCPiam策略跨项目有问题。对于gcp管理,我使用gc... 查看详情

如何确保 GCP 服务帐号没有管理员权限?

】如何确保GCP服务帐号没有管理员权限?【英文标题】:HowcanIensurethatGCPserviceaccountsdonothaveAdminprivileges?【发布时间】:2020-11-1318:46:25【问题描述】:我想确保GoogleCloudPlatform服务帐号没有管理员权限。此外,我想阻止用户创建具... 查看详情

我如何在 Python 中使用 GCP 枚举?

】我如何在Python中使用GCP枚举?【英文标题】:HowinPythondoiuseaGCPenum?【发布时间】:2020-11-1812:55:08【问题描述】:如何在我的python代码中使用GCPenumText​Annotation.​Types.​Detected​Break.​Types.​Break​Type?我假设我以某种方式导入... 查看详情

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

】如何从谷歌数据实验室外部使用gcp包?【英文标题】:HowdoIusegcppackagefromoutsideofgoogledatalabs?【发布时间】:2016-05-2003:17:07【问题描述】:我用jupyter创建了一个谷歌计算实例,我想使用datalabs拥有的所有好东西。有没有办法获得... 查看详情

如何使用 Artemis JMS 管理 API 创建持久队列

】如何使用ArtemisJMS管理API创建持久队列【英文标题】:HowtocreatedurablequeueusingArtemisJMSManagementAPI【发布时间】:2017-11-3013:14:31【问题描述】:说来话长,但我需要使用ArtemisJMS管理API创建一个持久队列。目前代码默认创建一个临时... 查看详情

在 GCP 云函数中使用 iot_v1

】在GCP云函数中使用iot_v1【英文标题】:Useiot_v1inaGCPCloudFunction【发布时间】:2020-12-2809:37:54【问题描述】:我正在尝试用Python编写一个GCP云函数,该函数调用API来创建物联网设备。最初的挑战似乎是在CloudFunctions中加载适当的模... 查看详情

如何使用 Terraform 公开 gcp 云功能

】如何使用Terraform公开gcp云功能【英文标题】:HowtomakegcpcloudfunctionpublicusingTerraform【发布时间】:2020-10-1220:48:57【问题描述】:我首先要说我对GCP和Terraform都很陌生,所以我希望有一个我刚刚忽略的简单答案。我正在尝试创建一... 查看详情

如何快速查询 GCP 表

】如何快速查询GCP表【英文标题】:HowtoqueryGCPtablesfast【发布时间】:2021-01-2923:15:56【问题描述】:我需要构建一个从谷歌云平台公共表返回数据的小api。目前我正在尝试使用python获取数据,但查询表需要永远,因为它有数百万... 查看详情

使用 terraform 创建多个 GCP 存储桶

...aform脚本在GCP中创建资源。脚本工作正常。但我的问题是-如何使用单个脚本创建多个存储桶。我有两个用于创建存储桶的文件-main.tf有terraformcode来创建存储桶。variables.tf包含存储桶 查看详情

如何使用 Python 创建 API 页面

】如何使用Python创建API页面【英文标题】:HowtocreateAPIpageusingPython【发布时间】:2019-01-1504:30:57【问题描述】:我是Vuejs和Python的新手。我在这里有问题。我必须使用Vue.js和python作为后端创建一个简单的页面。我使用海蒂sql。我... 查看详情

使用 GCP_KMS 和 BYOK 解决方案管理密钥轮换

】使用GCP_KMS和BYOK解决方案管理密钥轮换【英文标题】:ManagingkeyrotationswithGCP_KMSwithBYOKsolution【发布时间】:2021-10-2708:08:22【问题描述】:我们在本地生成了RSA密钥对,并计划将它们同步到GCP-KMS。有一个年度密钥轮换策略,将在... 查看详情