当前位置: 首页 > news >正文

gcloud cli 使用 impersonate模拟 服务帐号

什么是模拟服务帐号

众所周知, gcloud 登陆的方式有两种

  1. 使用个人帐号, 通常是1个邮箱地址
  2. 使用一个service account 通常是1个 json key 文件

所谓模式服务帐号意思就是, 让操作人员用个人帐号登陆, 但是登陆后所有的操作都是基于另个service account的权限

为什么需要模拟服务帐号

  1. 让操作人员使用服务帐号所有的权限
  2. 让操作人员没有对应的jsonkey file也能使用service account
  3. 让所有的操作的日志记录的操作者 为服务帐号

所需要的权限

假如 我的个人帐号是jason1.pan@maplequad.com
要模拟的sa 是terraform@jason-hsbc@gserviceaccount.com

简单来讲就是让个人帐号具有sa的 roles/iam.serviceAccountTokenCreator 的权限

检查

gateman@MoreFine-S500: github$ gcloud iam service-accounts get-iam-policy terraform@jason-hsbc.iam.gserviceaccount.com   --format=json
{"etag": "ACAB"
}

可见, 并没有

方法有两种

  1. 就是分配该权限给个人帐号
  2. 让个人帐号拥有gcp project owner权限

这里用的是第一种

gateman@MoreFine-S500: github$ gcloud iam service-accounts add-iam-policy-binding terraform@jason-hsbc.iam.gserviceaccount.com     --member="user:jason1.pan@maplequad.com"     --role="roles/iam.serviceAccountTokenCreator"     --project=jason-hsbc
Updated IAM policy for serviceAccount [terraform@jason-hsbc.iam.gserviceaccount.com].
bindings:
- members:- user:jason1.pan@maplequad.comrole: roles/iam.serviceAccountTokenCreator
etag: BwY-I5F2wxU=
version: 1
gateman@MoreFine-S500: github$ gcloud iam service-accounts get-iam-policy terraform@jason-hsbc.iam.gserviceaccount.com   --format=json
{"bindings": [{"members": ["user:jason1.pan@maplequad.com"],"role": "roles/iam.serviceAccountTokenCreator"}],"etag": "BwY-I5F2wxU=","version": 1
}

如何模拟服务帐号

首先登陆个人 帐号
gcloud auth login
gateman@MoreFine-S500: github$ gcloud config list
[core]
account = jason1.pan@maplequad.com
disable_usage_reporting = False
project = jason-hsbcYour active configuration is: [default]
使用gcloud config set auth/impersonate_service_account 命令模拟
gateman@MoreFine-S500: github$ gcloud config set auth/impersonate_service_account terraform@jason-hsbc.iam.gserviceaccount.com
Updated property [auth/impersonate_service_account].
gateman@MoreFine-S500: github$ gcloud config list
[auth]
impersonate_service_account = terraform@jason-hsbc.iam.gserviceaccount.com
[core]
account = jason1.pan@maplequad.com
disable_usage_reporting = False
project = jason-hsbcYour active configuration is: [default]

测试

gateman@MoreFine-S500: github$ gcloud compute instances list
WARNING: This command is using service account impersonation. All API calls will be executed as [terraform@jason-hsbc.iam.gserviceaccount.com].
WARNING: This command is using service account impersonation. All API calls will be executed as [terraform@jason-hsbc.iam.gserviceaccount.com].
NAME                                         ZONE            MACHINE_TYPE    PREEMPTIBLE  INTERNAL_IP              EXTERNAL_IP    STATUS
instance-windows                             europe-west1-c  c3-standard-4                192.168.4.2                             TERMINATED
gke-my-cluster1-my-node-pool1-5cad8c5c-7bv1  europe-west2-a  n2d-highmem-4                192.168.3.30                            RUNNING
gke-my-cluster1-my-node-pool1-5cad8c5c-zjgf  europe-west2-a  n2d-highmem-4                192.168.3.29                            RUNNING
tf-vpc0-subnet0-gpu-vm0                      europe-west2-a  n1-highmem-8    true         192.168.0.56                            TERMINATED
gke-my-cluster1-my-node-pool1-f7d2eb2b-jf2k  europe-west2-b  n2d-highmem-4                192.168.3.31                            RUNNING
gke-my-cluster1-my-node-pool1-f7d2eb2b-zb06  europe-west2-b  n2d-highmem-4                192.168.3.33                            RUNNING
gke-my-cluster1-my-node-pool1-8902d932-dchn  europe-west2-c  n2d-highmem-4                192.168.3.34                            RUNNING
gke-my-cluster1-my-node-pool1-8902d932-x0kk  europe-west2-c  n2d-highmem-4                192.168.3.32                            RUNNING
instance-1                                   europe-west2-c  e2-standard-2                192.168.0.2                             TERMINATED
instance-2                                   europe-west2-c  e2-standard-4   true         192.168.0.3                             TERMINATED
instance-20241201-042218                     europe-west2-c  n2d-highmem-4                192.168.0.54                            TERMINATED
instance-3-jenkins                           europe-west2-c  n1-standard-4                192.168.0.6                             TERMINATED
k8s-master                                   europe-west2-c  n2d-highmem-2   true         192.168.0.3              34.142.35.168  TERMINATED
k8s-node0                                    europe-west2-c  n2d-highmem-4   true         192.168.0.6                             TERMINATED
k8s-node1                                    europe-west2-c  n2d-highmem-4   true         192.168.0.44                            TERMINATED
k8s-node2                                    europe-west2-c  n2d-highmem-4   true         192.168.0.43                            TERMINATED
k8s-node3                                    europe-west2-c  n2d-highmem-4   true         192.168.0.45                            TERMINATED
tf-vpc0-subnet0-main-server                  europe-west2-c  n2d-standard-4  true         192.168.0.35             34.39.2.90     RUNNING
tf-vpc0-subnet0-mysql0                       europe-west2-c  e2-standard-2   true         192.168.0.42                            RUNNING
tf-vpc0-subnet0-vm0                          europe-west2-c  n2-highmem-4    true         192.168.0.51                            RUNNING
tf-vpc0-subnet0-vm1                          europe-west2-c  e2-small        true         192.168.0.7                             TERMINATED
tf-vpc0-subnet0-vm2                          europe-west2-c  e2-small        true         192.168.0.27                            TERMINATED
tf-vpc0-subnet0-vm20                         europe-west2-c  e2-small        true         192.168.0.33                            TERMINATED
tf-vpc0-subnet0-vm21                         europe-west2-c  e2-small        true         192.168.0.193                           TERMINATED
tf-vpc0-subnet0-vm22                         europe-west2-c  n2-highmem-4    true         192.168.0.192                           TERMINATED
tf-vpc0-subnet0-vm3                          europe-west2-c  e2-small        true         192.168.0.29                            TERMINATED
tf-vpc0-subnet0-vpc1-subnet0-vm0             europe-west2-c  e2-small        true         192.168.0.9,192.168.8.3                 TERMINATED
tf-vpc0-subnet1-vm0                          europe-west2-c  e2-small        true         192.168.1.2                             TERMINATED
tf-vpc0-subnet1-vm1                          europe-west2-c  e2-small        true         192.168.1.6                             TERMINATED
tf-vpc1-subnet0-vm0                          europe-west2-c  e2-small        true         192.168.8.2                             TERMINATED

题外:roles/iam.serviceAccountTokenCreator 和 roles/iam.serviceAccountUser的区别

roles/iam.serviceAccountTokenCreator 用于服务帐号模拟

而roles/iam.serviceAccountUser 用于资源绑定

例如当帐号a 想绑定帐号b到1个gcp 资源(例如vm的绑定帐号) 则a必须具有b的 roles/iam.serviceAccountUser 权限


文章转载自:

http://6uCTrBKG.xcszL.cn
http://9TyL2UaE.xcszL.cn
http://RvcCfZ0m.xcszL.cn
http://Ljp7GXdK.xcszL.cn
http://HSjpjaH7.xcszL.cn
http://ZBREs9H2.xcszL.cn
http://q5HYpbNH.xcszL.cn
http://7gZR0VLg.xcszL.cn
http://fXigkcEm.xcszL.cn
http://EX3gUkTg.xcszL.cn
http://CEkALGpR.xcszL.cn
http://rcLeCOm7.xcszL.cn
http://1Qsfqj33.xcszL.cn
http://JRC7MDaA.xcszL.cn
http://YpGKaM02.xcszL.cn
http://5mAFy5Pg.xcszL.cn
http://420LPirp.xcszL.cn
http://WzL5FDRg.xcszL.cn
http://WgbXjIeF.xcszL.cn
http://1sZkgQzp.xcszL.cn
http://ixV4VjRF.xcszL.cn
http://48IDD9eR.xcszL.cn
http://9C5k0Y3j.xcszL.cn
http://Rf9JCfvx.xcszL.cn
http://76bcTtuQ.xcszL.cn
http://MAKInOJl.xcszL.cn
http://lqE5ccTK.xcszL.cn
http://xXg7JOJP.xcszL.cn
http://QGeKFpoF.xcszL.cn
http://EGhA4g7l.xcszL.cn
http://www.dtcms.com/a/370758.html

相关文章:

  • leetcode 3495. 使数组元素都变为零的最少操作次数-C语言
  • 把装配想象成移动物体的问题
  • mac-intel操作系统go-stock项目(股票分析工具)安装与配置指南
  • 【问题记录】IIS 报500.19,如何解决
  • 【LLM】Openai分析大模型出现幻觉的原因
  • C++算法学习——链表
  • 驱动——Platform
  • LeetCode 139. 单词拆分 - 动态规划解法详解
  • 开源AI智能名片链动2+1模式S2B2C商城小程序服务提升复购率和转介绍率的研究
  • HTTP协议——Cookie的相关概念和使用
  • redis的数据类型:Hash
  • PiscCode使用 Mediapipe 实时人脸表情识别与可视化
  • EG2104 SOP-8 带SD功能 内置600V功率MOS管 栅极驱动芯片
  • 【审核问题——托管式首次进入APP展示隐私政策弹窗】
  • MySQL+Canal同步ES延时问题全链路解决方案
  • 【高等数学】第十一章 曲线积分与曲面积分——第三节 格林公式及其应用
  • Android Kotlin 动态注册 Broadcast 的完整封装方案
  • OceanBase容量统计:租户、数据库、表大小
  • SpringAMQP
  • 软件设计师备考-(十四)数据库设计
  • Fast DDS原生程序ROS2 Rviz Debug工具接入--Overview
  • 深入理解 Next.js 的路由机制
  • 鸿蒙 BLE 蓝牙智能设备固件升级之DFU升级方式(Nordic芯片)
  • 5-10数组元素添加和删除(数组基础操作)
  • echarts实现两条折线区域中间有线连接,custom + renderItem(初级版)
  • 机器人控制器开发(传感器层——奥比大白相机适配)
  • 深入解析 JavaScript 中的 call、apply、bind:用法、差异与面试题
  • LangChain实战(十八):构建ReAct模式的网页内容摘要与分析Agent
  • OpenRouter:一站式 AI 模型调用平台,免费畅享千问、DeepSeek 等顶级模型
  • Python基础(①⑧Queue)