Google云平台如何区分系统管理密钥和客户管理密钥?
How to distinguish system managed key and customer managed key in Google Cloud Platform?
我正在尝试编写一个云函数来删除为服务帐户生成的密钥。
但是不允许云功能删除系统管理的密钥。
如何即时区分系统管理和客户管理的密钥?这样,如果它是系统管理的密钥,我就可以跳过,如果它是客户管理的密钥,我就可以删除。
将此作为社区 Wiki 发布,因为它基于@JohnHanley 的评论,因为这些评论是对这个问题的有效答案:
Google 不允许访问 Google 托管服务帐户密钥的私钥。每个服务帐户都有一个,即使不可见。我不确定如何检测哪个是哪个,但关于如何检测的一个想法是尝试下载密钥 material (JSON).
如果被拒绝,则它是一个系统管理的密钥(或者您没有权限),如果您被允许,那么它就是一个由 IAM 用户创建的密钥。
注意:系统管理的密钥总是第一个。如果 Google 在您创建服务帐户时自动创建第一个密钥,那是有道理的。此键也自动轮换 Google.
[John Hanley 的补充信息]
我的评论没有参考 link。我通过观察和编写代码弄清楚了这一点。我对 IAM 和安全帐户在底层的工作方式也有相当深刻的理解。
一个Google 云服务帐户包含一个RSA 私钥。每个私钥都有对应的 public 密钥。 Google Cloud 发布 public 密钥,即使对于这些“私有”私钥也是如此。
当您创建服务帐户但不创建密钥对时,您仍然可以将服务帐户与 Google 云服务一起使用。在我的例子中,我使用了 Compute Engine 和一个新的服务账户。 Google 云元数据服务器不提供服务帐户的私钥。这是 SignBlob 等 IAM 功能的原因之一。您无法访问私钥,但 Google Cloud IAM 可以。
在我的测试中,我使用 IAM 签署数据,然后使用 public 密钥验证该签名。因此,我能够推断出没有密钥的服务帐户实际上有一个“私有”私钥,否则在原始问题中称为系统管理密钥。
这个问题的答案是在我另一个问题的回复中得到的。
归功于 @jccampanero
在高层次上,可以通过查看KeyType来识别enumeration。
- KEY_TYPE_UNSPECIFIED 未指定密钥类型。
中存在这个
该消息将立即导致错误。
- USER_MANAGED 用户管理的密钥(由用户管理和轮换)。
- SYSTEM_MANAGED 系统管理的密钥(由 Google 管理和轮换)。
我正在尝试编写一个云函数来删除为服务帐户生成的密钥。 但是不允许云功能删除系统管理的密钥。
如何即时区分系统管理和客户管理的密钥?这样,如果它是系统管理的密钥,我就可以跳过,如果它是客户管理的密钥,我就可以删除。
将此作为社区 Wiki 发布,因为它基于@JohnHanley 的评论,因为这些评论是对这个问题的有效答案:
Google 不允许访问 Google 托管服务帐户密钥的私钥。每个服务帐户都有一个,即使不可见。我不确定如何检测哪个是哪个,但关于如何检测的一个想法是尝试下载密钥 material (JSON).
如果被拒绝,则它是一个系统管理的密钥(或者您没有权限),如果您被允许,那么它就是一个由 IAM 用户创建的密钥。
注意:系统管理的密钥总是第一个。如果 Google 在您创建服务帐户时自动创建第一个密钥,那是有道理的。此键也自动轮换 Google.
[John Hanley 的补充信息]
我的评论没有参考 link。我通过观察和编写代码弄清楚了这一点。我对 IAM 和安全帐户在底层的工作方式也有相当深刻的理解。
一个Google 云服务帐户包含一个RSA 私钥。每个私钥都有对应的 public 密钥。 Google Cloud 发布 public 密钥,即使对于这些“私有”私钥也是如此。
当您创建服务帐户但不创建密钥对时,您仍然可以将服务帐户与 Google 云服务一起使用。在我的例子中,我使用了 Compute Engine 和一个新的服务账户。 Google 云元数据服务器不提供服务帐户的私钥。这是 SignBlob 等 IAM 功能的原因之一。您无法访问私钥,但 Google Cloud IAM 可以。
在我的测试中,我使用 IAM 签署数据,然后使用 public 密钥验证该签名。因此,我能够推断出没有密钥的服务帐户实际上有一个“私有”私钥,否则在原始问题中称为系统管理密钥。
这个问题的答案是在我另一个问题的回复中得到的。
归功于 @jccampanero
在高层次上,可以通过查看KeyType来识别enumeration。
- KEY_TYPE_UNSPECIFIED 未指定密钥类型。
中存在这个 该消息将立即导致错误。 - USER_MANAGED 用户管理的密钥(由用户管理和轮换)。
- SYSTEM_MANAGED 系统管理的密钥(由 Google 管理和轮换)。