创建GCP service账号并管理权限

news2024/11/20 14:22:59

列出当前GCP项目的所有service account

我们可以用gcloud 命令
gcloud iam service-accounts list

 gcloud iam service-accounts list
DISPLAY NAME                            EMAIL                                               DISABLED
terraform                               terraform@jason-hsbc.iam.gserviceaccount.com        False
vm-common                               vm-common@jason-hsbc.iam.gserviceaccount.com        False
terraform2                              terraform2@jason-hsbc.iam.gserviceaccount.com       False
Compute Engine default service account  912156613264-compute@developer.gserviceaccount.com  False

当然在gcp console 上也可以查看
在这里插入图片描述


创建1个新的gcp service account

gcloud iam service-accounts create SA_NAME
–description=“DESCRIPTION”
–display-name=“DISPLAY_NAME”

gcloud iam service-accounts create pubsub-publisher-a --description="be used to publish message to topicA"  --display-name="pubsub publisher a"
Created service account [pubsub-publisher-a].

gcloud iam service-accounts list
DISPLAY NAME                            EMAIL                                                  DISABLED
terraform                               terraform@jason-hsbc.iam.gserviceaccount.com           False
vm-common                               vm-common@jason-hsbc.iam.gserviceaccount.com           False
pubsub publisher a                      pubsub-publisher-a@jason-hsbc.iam.gserviceaccount.com  False
terraform2                              terraform2@jason-hsbc.iam.gserviceaccount.com          False
Compute Engine default service account  912156613264-compute@developer.gserviceaccount.com     False

新的service account 被创建出来了。

当然, 在gcp console 也可以利用UI 创建它.

在这里插入图片描述



分配service account权限

gcloud pubsub topics add-iam-policy-binding projects/jason-hsbc/topics/TopicA --member=serviceAccount:pubsub-publisher-a@jason-hsbc.iam.gserviceaccount.com --role=roles/pubsub.publisher

上面语句是1个例子, 分配某个pubsub topic(TopicA) 的publish 权限。

gcloud pubsub topics add-iam-policy-binding projects/jason-hsbc/topics/TopicA --member=serviceAccount:pubsub-publisher-a@jason-hsbc.iam.gserviceaccount.com --role=roles/pubsub.publisher
Updated IAM policy for topic [TopicA].
bindings:
- members:
  - serviceAccount:pubsub-publisher-a@jason-hsbc.iam.gserviceaccount.com
  role: roles/pubsub.publisher
etag: BwYGwRVxij4=
version: 1




下面的例子是把storage admin 分配给这个service account

gcloud projects add-iam-policy-binding jason-hsbc --member=serviceAccount:pubsub-publisher-a@jason-hsbc.iam.gserviceaccount.com --role=roles/storage.admin

gcloud projects add-iam-policy-binding jason-hsbc --member=serviceAccount:pubsub-publisher-a@jason-hsbc.iam.gserviceaccount.com --role=roles/storage.admin

Updated IAM policy for project [jason-hsbc].

注意上面两个例子是有区别的


第一种 是分配资源粒度的权限

例如 分配某个pubsub subscription 的读权限
某个 BQ table的权限等


第二种是分配项目级别的权限, 通常是reader , editor 和 owner

例如上面的storage admin, pubsub admin等.




其实 还有第三种

就是定义谁(另1个 account) 对这个service account的权限

包括seviceAccountUser等。这个很重要
例如我要用terraform account 去部署1个 cloud run service, 而这个service 必须用 pubsub-publisher-a account 去启动(以获得推送消息权限), 则terraform account必须拥有对于 pubsub-publisher-a的 serviceAccountUser权限

不过较真的话, 这个第3种也是属于第一种(资源粒度), service account 也是一种资源

命令:
gcloud iam service-accounts add-iam-policy-binding pubsub-publisher-a@jason-hsbc.iam.gserviceaccount.com --member=serviceAccount:terraform@jason-hsbc.iam.gserviceaccount.com --role=roles/iam.serviceAccountUser

例子:

❯ gcloud iam service-accounts add-iam-policy-binding pubsub-publisher-a@jason-hsbc.iam.gserviceaccount.com --member=serviceAccount:terraform@jason-hsbc.iam.gserviceaccount.com --role=roles/iam.serviceAccountUser

Updated IAM policy for serviceAccount [pubsub-publisher-a@jason-hsbc.iam.gserviceaccount.com].
bindings:
- members:
  - serviceAccount:terraform@jason-hsbc.iam.gserviceaccount.com
  role: roles/iam.serviceAccountUser
etag: BwYGwZ2IcnA=
version: 1



查看service account的权限

上面已经对权限大概分了类

对于第一种 分配资源粒度的权限

我暂时找不到直接gcloud 命令or UI 查看某个service account对什么资源的权限细节。

但是我们可以查看某个资源的 service account 权限列表

具体点来讲,上面我们已经分配 TopicA 的publisher 权限给 service account pubsub-publisher-a .

1.基于pubsub-publisher-a 去查看 它的TopicA权限我暂时不知道方法
2.基于 TopicA去查看 权限, 是可以见到 pubsub-publisher-a 在其列表内的。

方法1
gcloud 命令

gcloud pubsub topics get-iam-policy projects/jason-hsbc/topics/TopicA
bindings:
- members:
  - serviceAccount:pubsub-publisher-a@jason-hsbc.iam.gserviceaccount.com
  role: roles/pubsub.publisher
etag: BwYGwRVxij4=
version: 1

方法2, 通过gcp console
在这里插入图片描述



查看 第二种 项目级别的权限

这个相对简单。

方法一:
gcloud 命令:
gcloud projects get-iam-policy jason-hsbc
–flatten=“bindings[].members”
–format=‘table(bindings.role)’
–filter=“bindings.members:pubsub-publisher-a@jason-hsbc.iam.gserviceaccount.com”

gcloud projects get-iam-policy jason-hsbc  \
--flatten="bindings[].members" \
--format='table(bindings.role)' \
--filter="bindings.members:pubsub-publisher-a@jason-hsbc.iam.gserviceaccount.com"
ROLE
roles/storage.admin

可以看出, 它是列不出资源粒度权限的, 但是可以把storage admin列出来

方法二: gcp console
在这里插入图片描述

查看 第三种 service account 的 User

gcloud command
gcloud iam service-accounts get-iam-policy pubsub-publisher-a@jason-hsbc.iam.gserviceaccount.com


❯ gcloud iam service-accounts get-iam-policy pubsub-publisher-a@jason-hsbc.iam.gserviceaccount.com
bindings:
- members:
  - serviceAccount:terraform@jason-hsbc.iam.gserviceaccount.com
  role: roles/iam.serviceAccountUser
etag: BwYGwZ2IcnA=
version: 1

UI上也可以:
在这里插入图片描述
至于为何 上面terraform 账户也拥有 对 pubsub publish a 的owner权限? 因为 terraform 被我设置成了project owenr, 就继承过来了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1059056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构 1.1 初学数据结构

数据结构的基本概念 数据结构在学什么? 如何用程序代码把现实世界的问题信息化 如何用计算机高效处理信息从而创造价值 数据: 数据元素、数据项: 数据元素——描述一个个体 数据对象——数据元素之间具有同样的性质 同一个数据对象里的数…

BGP高级特性——4字节AS号

目录 4字节AS号 相关概念 两种过渡属性 4字节AS号的格式 4字节AS号建立邻居 4字节AS号路由传递 配置命令 4字节AS号 相比于2字节AS号,范围更大。由1~65535扩展到1~4294967295 支持4字节AS号的BGP设备兼容仅支持2字节AS号的BGP设备 相关概念 Speaker&#…

13链表-简单思路练习

目录 LeetCode之路——876. 链表的中间结点 分析: 解法一:常规思路 解法二:快慢指针 LeetCode之路——876. 链表的中间结点 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回…

详解Linux的系统调用fork()函数

在Linux系统中,fork()是一个非常重要的系统调用,它的作用是创建一个新的进程。具体来说,fork()函数会在当前进程的地址空间中复制一份子进程,并且这个子进程几乎完全与父进程相同,包括进程代码、数据、堆栈以及打开的文…

利用Redis实现全局唯一ID

利用Redis实现全局唯一ID 背景 场景分析:如果我们的id具有太明显的规则,用户或者说商业对手很容易猜测出来我们的一些敏感信息,比如商城在一天时间内,卖出了多少单,这明显不合适。 场景分析二:随着我们商…

怎么将本地代码文件夹通过Git 命令上传到启智平台仓库

在本地创建一个与启智平台仓库同样名字的文件夹 然后在本地文件夹右键–>选择Git Bash Here,就会打开Git命令窗口 初始化本地仓库 git init将项目文件添加到Git git add .提交更改: 使用以下命令提交您的更改,并为提交添加一条描述性的消息&#…

ArcGIS Engine:实现Shp/Mxd数据的加载、图层的简单查询

本博客参考&#xff1a;BiliBili UP主 <羊羊旸> &#xff1a; Arcgis Engine学习 目录 01 加载控件以及控件的基本信息等调整 02 编写 <菜单-地图控件> 中各个子工具的代码 2.1 加载Shapefile数据-代码 2.2 加载地图文档数据-代码 2.3 获取图层数量-代码 2.…

lv7 嵌入式开发-网络编程开发 04 IP地址与端口号

目录 1 IP地址 1.1 IP 地址及其表示方法 1.2 分类的 IP 地址 1.3 无分类编址 CIDR 1.3.1 网络前缀 1.3.2 地址块 1.3.3 地址掩码 (address mask) 1.4 IPv6 的地址 1.4.1 表示方式 1.4.2 零压缩 2 端口号 2.1 进程之间的通信 2.2 运输层的作用 2.3 屏蔽作用 2.4…

CompletableFuture 异步编排

目录 CompletableFuture 的详解代码测试配置类的引入Demo1Demo2CompletableFuture的async后缀函数与不带async的函数的区别ThreadPoolTaskExecutor 和 ThreadPoolExecutor 的区别Spring 线程池的使用业务使用多线程的原因场景一:场景二:FutureTask介绍线程池为什么要使用阻塞队…

(三) Markdown插入互联网或本地视频解决方案

前言 不论博客系统是WordPress还是Typecho&#xff0c;绕不开的是两种书写语言&#xff0c;一种称之为富文本&#xff0c;一种叫做Markdown。 Markdown有很多好处&#xff0c;也有很多坏处&#xff0c;比如Markdown本身不具备段落居中的功能&#xff0c;以及Markdown也不具有…

聊聊JAVA中的锁优化锁升级及其底层原理剖析

文章目录 1. 基础介绍java中的锁什么是锁优化和锁升级 2. Java中的锁升级过程及底层原理1. 偏向锁实现机制和原理1. 偏向锁的原理2. 偏向锁的底层实现 2. 轻量级锁1. 轻量级锁的原理2. 轻量级锁的底层实现 3. 重量级锁1. 重量级锁的原理2. 重量级锁的底层实现 3. Java中锁升级的…

selenium +IntelliJ+firefox/chrome 环境全套搭配

1第一步&#xff1a;下载IntelliJ idea 代码编辑器 2第二步&#xff1a;下载浏览器Chrome 3第三步&#xff1a;下载JDK 4第四步&#xff1a;配置环境变量&#xff08;1JAVA_HOME 2 path&#xff09; 5第五步&#xff1a;下载Maven 6第六步&#xff1a;配置环境变量&#x…

新环境下配置jupyter notebook并启动

1.先切换到我们需要使用的环境 2.安装python内核 conda install ipykernel 3.创建指定内核 ipython kernel install --user --nametensorflow2 4.运行jupyter notebook 即出现新创建的内核

计算机网络 第一章计算机网络体系结构

非常好的课程。计算机网络 //----------------------------------------------------------------------------------------------------------------// 需要清楚实体、协议、服务。 网络协议三要素&#xff0c;语法、语义、同步。

遗留系统陷入困境

当我们谈论遗留系统时&#xff0c;我们经常会想到数据中心某处的过时服务器和交换机。我们带着一种病态的迷恋阅读了有关系统性技术问题的文章&#xff0c;这些问题在假期周末困扰着其他旅行者&#xff0c;并为他们缺乏远见而摇头。 然后&#xff0c;我们坐在屏幕前&#xff0…

数据结构—栈、队列、链表

一、栈 Stack&#xff08;存取O(1)&#xff09; 先进后出&#xff0c;进去123&#xff0c;出来321。 基于数组&#xff1a;最后一位为栈尾&#xff0c;用于取操作。 基于链表&#xff1a;第一位为栈尾&#xff0c;用于取操作。 1.1、数组栈 /*** 基于数组实现的顺序栈&#…

4 Ways to Fix an Operation Did Not Complete Virus Error on Windows

文章目录 Can’t open a file on your PC? Use these methods to fix your issue. A Windows operation did not complete virus error.Mahesh Makvana / How-To Geek Readers like you help support How-To Geek. When you make a purchase using links on our site, we ma…

Spring实例化源码解析之registerBeanPostProcessors(六)

BeanPostProcessors是Spring框架中的一个扩展机制&#xff0c;它允许开发人员在Spring容器实例化、配置和初始化Bean的过程中干预和定制化。BeanPostProcessor接口定义了两个方法&#xff1a;postProcessBeforeInitialization和postProcessAfterInitialization&#xff0c;分别…

【WSN】无线传感器网络 X-Y 坐标到图形视图和位字符串前缀嵌入方法研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

MacOS - Sonoma更新了啥

1 系统介绍 苹果公司于2023年9月26日发布了macOS Sonoma 14.0正式版。名称由来不知道&#xff0c;可能是地名&#xff1a;Sonoma是一个地名,指加利福尼亚州北部索诺玛县(Sonoma County)。 2 系统重要更新 2.1 将小组件添加到桌面 速览提醒事项和临近日程等。按住Control键点…