在Python中配置GCP工作负载身份池外部凭据


在python中配置gcp工作负载身份池外部凭据

本文详细阐述了如何在Python中利用`google.auth.external_account`包,为Google Cloud工作负载身份池(Workload Identity Pool)配置外部凭据。针对`gcloud iam workload-identity-pools create-cred-config`命令在Python中无直接SDK调用的情况,我们提供了通过编程方式构建AWS身份提供者支持的GCP凭据对象的方法,并演示了如何在Google Cloud客户端库中使用这些凭据,以实现从外部环境(如AWS)安全访问GCP资源。

引言

Google Cloud Workload Identity Pools(工作负载身份池)允许您将外部身份(如来自AWS、Azure、GitHub Actions等)联邦到Google Cloud,从而使这些外部工作负载能够以GCP服务账号的身份访问GCP资源,而无需使用传统的服务账号密钥文件。gcloud命令行工具提供了gcloud iam workload-identity-pools create-cred-config命令,可以生成一个JSON格式的客户端凭据配置文件,供应用程序使用。

然而,在Python等编程语言中,直接等效的SDK方法来“生成”这个配置文件并不存在。当尝试使用google.cloud.iam_v1等客户端库时,可能会遇到部署或运行时错误,因为这些库主要用于管理IAM资源,而非客户端认证配置。本文旨在指导您如何在Python中,通过google.auth.external_account包以编程方式构建并使用这些外部身份凭据。

理解gcloud create-cred-config命令的作用

gcloud iam workload-identity-pools create-cred-config命令的核心作用是创建一个JSON文件,该文件描述了如何从外部身份提供者(例如AWS)获取凭据,然后将其交换为GCP的短期访问令牌,并最终可能模拟一个GCP服务账号。这个JSON文件实际上是google-auth库可以理解的一种外部账号凭据配置格式。

例如,对于AWS身份提供者,gcloud命令可能生成如下配置:

Manus Manus

全球首款通用型AI Agent,可以将你的想法转化为行动。

Manus 250 查看详情 Manus
{
  "type": "external_account",
  "audience": "//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/IDENTITY_POOL/providers/IDENTITY_POOL_PROVIDER",
  "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/PROJECT_NUMBER/serviceAccounts/SA_EMAIL:generateAccessToken",
  "credential_source": {
    "environment_id": "aws",
    "region_url": "http://169.254.169.254/latest/meta-data/placement/*ailability-zone",
    "url": "http://169.254.169.254/latest/meta-data/iam/security-credentials",
    "headers": {
      "x-goog-cloud-target-resource": "//iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/IDENTITY_POOL/providers/IDENTITY_POOL_PROVIDER"
    }
  }
}

在Python中,我们的目标不是生成这个文件,而是直接在内存中构建一个等效的凭据对象,然后将其传递给Google Cloud客户端库。

Pythonic方法:使用google.auth.external_account构建凭据

google.auth.external_account包是google-auth库的一部分,专门用于处理外部身份联邦。它提供了不同外部身份提供者的特定实现,例如针对AWS的google.auth.external_account.aws.Credentials。这个类能够自动处理从AWS环境(如EC2实例元数据、环境变量或IAM角色)获取临时凭据,并将其用于GCP的令牌交换过程。

1. 安装必要的库

首先,确保您的Python环境中安装了google-auth和google-auth-external-account-aws(如果您的外部身份提供者是AWS)以及您计划使用的Google Cloud客户端库,例如google-cloud-storage:

pip install google-auth google-auth-external-account-aws google-cloud-storage

2. 构造凭据对象

以下是一个使用google.auth.external_account.aws.Credentials来创建GCP凭据的Python示例。它模拟了gcloud命令中所需的核心参数。

import os
from google.auth.external_account import aws
from google.cloud import storage

# --- 配置信息 (请替换为您的实际值或更安全的获取方式) ---
# 这些值通常通过环境变量、密钥管理服务或配置文件安全地提供
GCP_PROJECT_NUMBER = os.environ.get("GCP_PROJECT_NUMBER", "YOUR_GCP_PROJECT_NUMBER")
GCP_IDENTITY_POOL_ID = os.environ.get("GCP_IDENTITY_POOL_ID", "YOUR_IDENTITY_POOL_ID")
GCP_IDENTITY_POOL_PROVIDER_ID = os.environ.get("GCP_IDENTITY_POOL_PROVIDER_ID", "YOUR_IDENTITY_POOL_PROVIDER_ID")
GCP_SERVICE_ACCOUNT_EMAIL = os.environ.get("GCP_SERVICE_ACCOUNT_EMAIL", "YOUR_SERVICE_ACCOUNT_EMAIL@YOUR_PROJECT_ID.iam.gserviceaccount.com")
AWS_REGION = os.environ.get("AWS_REGION", "us-east-1") # 例如: 'us-east-1'
AWS_ROLE_ARN = os.environ.get("AWS_ROLE_ARN") # 可选: 例如 'arn:aws:iam::ACCOUNT_ID:role/ROLE

以上就是在Python中配置GCP工作负载身份池外部凭据的详细内容,更多请关注其它相关文章!


# 浮点  # 韶关seo网站关键词优化方法  # 龙岩网站营销与推广  # 咸阳品茶网站推广招聘  # 德州网站营销与推广加盟  # 赚钱的时候要做营销推广  # 百度网站需要优化吗  # seo01在线  # 搜狗排名关键词查询系统  # 黄岛营销型网站建设  # 高档产品网站推广文案  # 所需  # 是一个  # 如何在  # 将其  # 令牌  # python  # 配置文件  # 您的  # 客户端  # 配  # google  # 环境变量  # ai  # 工具  # 编程语言  # access  # github  # go  # json  # git  # js 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: J*aScript中高效处理用户输入:从Keyup事件到表单提交的优化实践  composer licenses 命令:如何检查项目依赖的许可证?  实时数据流中高效查找最小值与最大值  抖音猜你想搜能说明对方搜过吗  Win10截图远程协助 Win10远程桌面截屏法【场景应用】  《地下城堡4:骑士与破碎编年史》墓穴挑战125攻略  《爱笔思画x》涂色教程  Google Drive API 认证:服务账户与OAuth 2.0的选择与实践  Coolpad5890 ROM刷机包  Vue 3中独立响应式实例的创建与应用  Lar*el Eloquent:高效删除多对多关系中无关联子记录的父模型  谷歌浏览器官网地址整理_谷歌浏览器新版直连2026稳定访问  Python中深度嵌套字典与列表的数据提取与条件过滤指南  电脑桌面图标怎么变大变小_Windows个性化设置第一课【新手入门】  《花瓣》创建专辑方法  招商淘客入门指南  解决Pandas DataFrame高度碎片化警告:高效创建多列的策略  智云Q3和Q2有什么升级_智云Q3与Q2手持云台功能与性能对比分析  知音漫客官网首页入口_知音漫客热门漫画推荐  J*aScript类型数组_TypedArray使用  谷歌浏览器如何查找和删除恶意软件 谷歌浏览器内置安全清理工具使用教程  店铺如何关联视频号推广?视频号推广有什么用?  苹果电脑如何快速截图并编辑 苹果电脑截屏标注快捷操作  《红果免费短剧》下载观看方法  mail.qq.com登录入口 QQ邮箱网页版直达  如何在CSS中使用伪类选择器_hover实现悬停效果  《七读免费小说》开通会员方法  Python中对象引用与链表属性赋值的机制解析  《火影忍者:木叶高手》快速升级攻略  《大周列国志》皇帝律令功能介绍  支付宝如何解绑云闪付_支付宝与云闪付账户关联解除方法  微信如何设置字体大小_微信字体设置的阅读舒适  吃完饭就犯困是什么原因 餐后嗜睡如何缓解  被称为海蜈蚣的海洋动物是  《微信》视频号原创声明开启方法  抖音视频如何添加标题?添加标题有哪些好处?  oppo手机如何通过下拉通知栏截图_oppo手机通知栏快捷截图方法  《梦想世界:长风问剑录》药师一图流分享  php如何实现多域名共享session_php存储session到redis与跨域读取配置  优化2xN网格最大路径和的动态规划算法实践  iPhone 13 Pro Max如何设置桌面小组件_iPhone 13 Pro Max小组件添加指南  风车动漫官网首页入口登录 风车动漫在线观看正版地址  猫眼电影app如何设置电影上映提醒_猫眼电影上映提醒设置教程  poki官网最新入口 poki小游戏大全入口  Linux如何优化系统启动流程_Linux启动项优化方案  感染了幽门螺杆菌一定会导致胃癌吗?蚂蚁庄园今日答案最新11.30  哔哩哔哩黑名单怎么查看  奥克斯空调不制热啥毛病_奥克斯空调不制热原因分析及解决技巧  《小宇宙》标记不友善评论方法  画质怪兽120帧安卓和平精英免费版 

 2025-11-10

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.