如何使用不同的服务帐户凭据验证谷歌API?

2024-01-28

任何曾经不幸以编程方式与 Google CLI 二进制文件进行交互的人都会意识到,可以使用以下工具进行身份验证gcloud, gsutil, bq等远非直观或琐碎,尤其当您需要跨不同项目工作时。

我正在为不同的项目运行与 Google Cloud Storage 和 BigQuery 交互的各种 cron 作业。由于 cron 作业可能会重叠,因此重命名配置文件显然不是一个选择,任何理智的人也不会采取这种方法。

肯定有某种方法将服务帐户的密钥对文件的路径传递给这些 CLI 二进制文件,但是bq help什么也不产生。

Google 文档虽然冗长,但基本上没有什么用处,它让人们了解了 OAuth2 的工作原理等,而不是解释什么肯定是一个非常常见的要求,即如何在不运行的情况下实际验证服务帐户修改中央配置文件的命令。

任何开明的人都可以告诉我谷歌的工程师是否决定添加一个像将服务帐户的密钥对文件的路径传递给类似这样简单的功能gsutil and bq?或者也许我可以简单地导出一些变量,以便他们知道使用哪个密钥对文件进行身份验证?

我意识到这些简单化的方法可能是对情报的侮辱,但我们并不关心如何利用核聚变,因此我们甚至不需要考虑相比之下亚马逊的身份验证方法如此正确......


Cloud SDK 中的配置对于用户来说是全局的,但您可以指定在每个命令的基础上使用该配置的哪些方面。为了完成您正在尝试做的事情,您可以:

gcloud auth activate-service-account [email protected] /cdn-cgi/l/email-protection --key-file ...
gcloud auth activate-service-account [email protected] /cdn-cgi/l/email-protection --key-file ...

此时,两组凭据都位于您的全局凭据存储中。 现在你可以运行:

gcloud --account [email protected] /cdn-cgi/l/email-protection some-command
gcloud --account [email protected] /cdn-cgi/l/email-protection some-command

并行地,每个人都将使用给定的帐户而不会干扰。


其更大的扩展是“配置”,它执行相同的操作,但针对您的整套配置(包括帐户和项目等设置)。

# Create first configuration
gcloud config configurations create myconfig
gcloud config configurations activate myconfig
gcloud config set account [email protected] /cdn-cgi/l/email-protection
gcloud config set project foo

# Create second configuration
gcloud config configurations create anotherconfig
gcloud config configurations activate anotherconfig
gcloud config set account [email protected] /cdn-cgi/l/email-protection
gcloud config set project bar

您可以根据每个命令指定要使用的配置。

gcloud --configuration myconfig some-command
gcloud --configuration anotherconfig some-command

您可以通过运行以下命令来阅读有关配置的更多信息:gcloud topic configurations


所有属性都有相应的环境变量,允许您为单个命令调用或终端会话设置特定属性。它们的形式如下:

CLOUDSDK_<SECTION>_<PROPERTY>

例如:CLOUDSDK_CORE_ACCOUNT

您可以通过运行以下命令查看所有可用的配置设置:gcloud help config

--configuration 标志的等效项是:CLOUDSDK_ACTIVE_CONFIG_NAME


如果您确实想要完全隔离,您还可以通过设置更改Cloud SDK的config目录CLOUDSDK_CONFIG到您选择的目录。请注意,如果您这样做,配置将完全独立,包括凭证存储、所有配置、日志等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用不同的服务帐户凭据验证谷歌API? 的相关文章

  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • 为什么我不能在 Angular 模板中定义内联函数?还能怎样做呢?

    我正在使用 Angular 2 而且是新手 我想为单击按钮调用一个小函数 所以我尝试这样做 也许是因为我来自 React 背景
  • 如何在 Windows 上安装 Zend 框架

    安装 Zend Framework 就是这么简单 是的 对 好吧 我正在写一本初学者的书 有一件不太详细的事情是最重要的部分 安装该死的东西 浏览了几个小时的快速入门指南后 它只说 下载 Zend 添加包含目录 bla bla 然后就完成了
  • 在 VS 2013 中添加新项目时,“已安装”下没有任何内容?

    我正在尝试在 Visual Studio 2013 中添加一个新的 C C 文件项 但是 当我单击 添加新项目 时 已安装 下绝对没有任何内容 我在找Visual C gt C 安装下 可能出了什么问题 有什么我应该安装的吗 在 在线 下
  • Perforce - 如何获取已本地修改的文件列表?

    我正在寻找一个 perforce 命令来获取已在本地修改且 未 签入存储库的文件列表 我知道我 应该 获取待处理更改列表中的已修改文件列表 但在某些情况下我看不到该列表中的已修改文件 然后 在 手动 检查文件并进行比较时 我意识到了差异 是
  • 动态调度协议扩展不适用于多个目标

    这是我的主要目标中的代码 所以不是测试目标 protocol ProtocolA func dontCrash extension ProtocolA func dontCrash fatalError func tryCrash dont
  • 使用 JavaScript 禁用第三方 cookie

    我正在努力根据所有在欧盟运营的公司的数据保护规则实施新的 Cookie 政策合规性 根据该规则 用户在使用任何网站时必须能够拒绝 接受除必需的 Cookie 之外的所有内容 在我客户的网站中 我可以看到正在存储以下第三方 cookie ga
  • 执行带有 EXCEPTION 的 PostgreSQL 查询会导致两条不同的错误消息

    我有一个 PostgreSQL 查询 其中包含事务和列重复时的异常 BEGIN ALTER TABLE public cars ADD COLUMN top speed text EXCEPTION WHEN duplicate colum
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 尝试将相机切换回前面但出现异常

    尝试将相机切换回前面 但出现异常 找不到 问题请检查并帮助 error 01 27 11 49 00 376 E AndroidRuntime 30767 java lang RuntimeException Unable to start
  • Roslyn SyntaxNode 是否被重用?

    我一直在看罗斯林CTP http msdn microsoft com en us roslyn并且 虽然它解决了类似的问题表达式树API http msdn microsoft com en us library bb397951 asp
  • Kendo Ui 像 Windows 桌面一样可拖动

    我需要模拟桌面图标拖放 我这样做 draggable kendoDraggable container desktop hint function return draggable clone dragend function e cons
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 如何在vb.net中对datagridview的3列进行排序

    下面我想对 ProductCode ColorCode 和 Size 列进行排序 请指导 对 大小 列中的信息进行排序 Size Number sequence XS 1 S 2 M 3 L 4 XL 5 XXL 6 2L 7 3L 8 4
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 同一配置文件上的两个不同提供程序

    我在用着实体框架 6 1 0 I have 2 家提供者 MysqlClient 和 SQLServerCE 我需要创建2个不同的DBContext 这迫使我创造2个配置类因为mysql有一些不同的东西 但是当我初始化应用程序时 Datab
  • 如何从shell脚本自动登录MySQL?

    我有一个 MySQL 服务器 其中有一个用户和密码 我想在 shell 脚本中执行一些 SQL 查询而不指定密码 如下所示 config sh MYSQL ROOT root MYSQL PASS password mysql sh sou
  • 如何使用javascript将大图像转换为十六进制?

    如果我尝试将图像转换为十六进制 无论我使用哪个函数 我都会收到此错误消息 该图像的大小为 7 MB 19812 毫秒 清理 1401 2 1455 0 gt 1401 2 1455 0 MB 9 9 0 ms 自上次 GC 以来 8 3 m
  • 关闭捕获上下文 Swift

    当我尝试更改闭包中的变量时出现此错误 A C function pointer cannot be formed from a closure that captures context 是否有解决方法或者仍然可以更改闭包内的变量 My C
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本

随机推荐

  • 如何使用Android MediaCodec编码相机数据(YUV420sp)

    感谢您的关注 我想使用Android MediaCodec API对从Camera获取的视频帧进行编码 不幸的是 我没有成功做到这一点 我对 MediaCodec API 还不太熟悉 以下是我的代码 我需要你的帮助来弄清楚我应该做什么 1
  • 将参数传递给正在运行的应用程序

    我正在制作一个图像上传器 将图像上传到图像托管网站 并且在传递参数时遇到一些问题 图像位置到已运行的应用程序 首先 假设 MyApp exe 始终运行 每当我右键单击图像时 我都会在默认 Windows 上下文菜单中添加一个项目 显示 上传
  • RAM 如何以 O(1) 的速度访问内存中的任何位置

    我们被告知 RAM 内存的抽象是一个长字节数组 对于 CPU 来说 访问它的任何部分都需要相同的时间 能够同时访问 4 GB 在我的计算机上 中的任何字节的设备是什么 因为这对我来说似乎不是一个微不足道的任务 我问过同事和我的教授 但没有人
  • 减少 React.min.js 和 React-dom.min.js 的 Browserify 包

    我想将一些 React 库与 Browserify 捆绑在一起 require他们 但因文件大小而推迟 我使用以下 Browserify 命令 browserify path to react min js path to react do
  • 为 Uwsgi 编译插件

    我从官方网站编译了uwsgi版本x y zz ww 我使用官方文档中建议的命令编译了uwsgi 然后我用官方文档中的命令编译了Python建议的插件 我得到的错误输出是这样的 gt ubuntu ip xx yy zz ww tmp uws
  • 检测自定义形状 OpenCV

    我想在 OpenCV 中找到自定义形状 形状是预先定义的 我想使用网络摄像头实时检测该形状是否等于当前形状 我怎样才能做到这一点 如何比较预定义的自定义形状和当前形状 正如评论者所回避的那样 您可以使用模板匹配来检测自定义形状 那么什么是模
  • 检查对象类型失败并出现“不是类型”错误

    我试图检查一个对象是否属于给定类型 但收到错误 expectedClass 不是类型 我的代码如下 func testInputValue inputValue AnyObject isKindOfClass expectedClass A
  • Spring Boot 应用程序已弃用 java.security.egd=file:/dev/./urandom?

    我曾经配置过 Djava security egd file dev urandom在我的 Spring Boot 应用程序的 Dockerfile 中 In https spring io guides gs spring boot do
  • 将增量数据从 REST API 引入 SQL azure

    我的需求如下 需要将数据从第 3 方 API 提取到 SQL azure 中 每天都会查询 API 以获取增量数据 并且可能需要分页 因为默认情况下任何 API 响应都只会提供前 N 条记录 该 API 还需要一个身份验证令牌才能工作 这是
  • Android 应用程序中使用的服务器 Web 的 Google Places API 密钥请求被拒绝

    我正在尝试从 Android 应用程序的 Google Places API 获取信息 为此 我首先在我的 Google 帐户中启用了此 API 其次 我为浏览器创建了一个 API KEY 由于另一个 API 我已经有了一个 API KEY
  • Doctrine DQL 每组最大 n

    这是我的 Symfony2 项目的 2 个表 EVENT PHOTO id id event id likes 1 1 1 90 2 2 1
  • 将每个组扩展到最大 n 行

    如何将组扩展到最大组的长度 df lt structure list ID c 1L 1L 2L 3L 3L 3L col1 c A B O U L R class data frame row names c NA 6L ID col1
  • 如何在 Spring Integration 测试之间删除内存中的 h2db?

    我在 Spring Web 应用程序中使用 Liquibase 我有一堆实体 在每个实体 如用户 帐户 发票 许可证等 的集成测试中对 REST API 进行了数百次测试 我的所有集成测试在按类运行时都通过了 但其中很多在使用一起运行时失败
  • 如何修复ModuleNotFoundError:使用python源代码安装没有名为“pip._internal”的模块[重复]

    这个问题在这里已经有答案了 我通过编译源代码在redhat机器上安装了python3 7 但在处理pip3时遇到问题 安装后我已经执行了以下步骤 sudo ln usr local bin python3 7 usr bin python3
  • r中的2d矩阵到3d堆叠数组

    我有一个数据框data在 R 中 大小为 120000 行 x 5 列 每300行是在不同时间间隔测量的一帧 即400帧 Action 我尝试使用array data c 300 5 400 Expected 通过分割将此数据框变成 3d
  • 如何正确处理类中使用的字节数组?

    我有一个 StateObject 类 用于存储来自客户端和服务器的数据 这是代码 public class StateObject IDisposable public StateObject public String serviceNa
  • iPhone 自动对焦中到“兴趣点”的距离

    在iphone中 我想计算相机到拍摄对象的距离 我想知道也许 iPhone 相机的 主动自动对焦 为我提供了到拍摄对象 兴趣点 的距离 提前谢谢了 附注伙计们 如果您认为不可能 请告诉我 据我所知 这是不可能的 请参阅here http d
  • Pyside6:从 QTableWidget 复制粘贴、删除、撤消多个单元格

    我希望能够使用 control C control V 在 Pyside6 表 QTableWidget 之间进行复制和粘贴 主要是在 Excel 之间进行复制和粘贴 我找到了 Momo 2023 年 1 月的帖子 1 https stac
  • JavaScript 闭包。在循环中访问当前 i、j 变量[重复]

    这个问题在这里已经有答案了 我尝试动态生成 table 使用 jQuery 我想为每个单元格设置单击处理程序 因此当单元格单击时 弹出窗口将显示单元格的当前索引 我如何访问 CURRENTi and j循环中的变量 for var i 0
  • 如何使用不同的服务帐户凭据验证谷歌API?

    任何曾经不幸以编程方式与 Google CLI 二进制文件进行交互的人都会意识到 可以使用以下工具进行身份验证gcloud gsutil bq等远非直观或琐碎 尤其当您需要跨不同项目工作时 我正在为不同的项目运行与 Google Cloud