首页 > 解决方案 > 谷歌云自动删除上次创建的服务帐号密钥

问题描述

作为自动化的一部分,我正在尝试为服务帐户创建一个临时访问密钥,进行更改,然后删除这个最后使用的密钥。

我被卡住的地方是列出并用这个结果做一些事情:

gcloud iam service-accounts keys list --iam-account=dummy@dummy.com --format=json

此命令将随机列出此服务帐户的所有可用密钥,我还没有找到一个好的格式来帮助我。

尝试使用带有和不带有通配符 * 的日期值 ( year-month-day ),但它无法识别它。

> gcloud iam service-accounts keys list --iam-account=dummy@dummy.com
> --format="value(validAfterTime[2021-07-11])"

从逻辑上讲,我可能想比较每个键的 validAfterTime 值,然后得到最高的值,但我不知道如何在 shell 中以编程方式执行此操作。在 python 中,我会比较这些值并获得具有最大值的名称。

什么是创建最后一个以便我可以删除它的简单方法?

编辑

好的,所以它比我想象的要简单。我需要做的是还添加标志排序依据,我将在那里放置相同的validAfterTime。

> gcloud iam service-accounts keys list --iam-account=dummy@dummy.com
> --format="value(validAfterTime[2021-07-11])" --sort-by=validAfterTime | tail -1 | awk -F/ '{print $6}'

Sort by 将按升序对值进行排序,tail -1 将给我最后一个结果, print 6 将给我使用 / 作为分隔符的第 6 个元素。

谢谢

标签: apigoogle-cloud-platformkey

解决方案


您应该使用的命令如下所示:

gcloud iam service-accounts keys list --iam-account=dummy@dummy.com
--format=json --sort-by=~validAfterTime --limit=1

基于谷歌云 SDK 参考--sort-by 做:

要排序的资源字段键名的逗号分隔列表。默认顺序是升序。为字段添加前缀“~”表示该字段的降序

因此,您可以使用sort-by基于validAfterTime字段获取 SA 密钥上的最后一个条目。您可以使用 --limit 来限制您将获得的条目数。


推荐阅读