GCP API - 您如何确定 VM 是通过 Marketplace 创建的?
GCP API - How could you determine that a VM was created via Marketplace?
我正在尝试在 Python 中进行 API 调用(在 Cloud Function 中)来做一些不同的事情,作为我想传递的信息的一部分,是否VM 是从 Marketplace 中的内容创建的。
用例是这样的:用户在 Compute Engine 的 GCP 控制台中。他们单击显示屏左栏中的市场,然后会显示可供选择的虚拟机。用户选择一个(比如“Ubuntu 20.4 LTS (Focal)”)。显示屏显示有关带有“启动”按钮的 VM 的信息。当他们单击它时,他们将被带到“创建实例”页面,他们继续做出选择并最终创建 VM。
这会创建一个日志条目,供客户端的安全组在云函数内部检查。当我查看 beta.compute.instances.insert 的日志条目时,我没有看到任何关于它是通过 Marketplace 创建的信息。如果我调用 API 来获取实例,则返回的对象中也没有任何内容表明这一点。任何人都知道有什么方法可以确定这一点?
我不熟悉 Marketplace 创建的资源,但我怀疑,确定任何 GCP 资源来源的唯一方法(仅通过单独检查资源)是通过识别标签(适用于 most/all? GCP 资源)在创建时应用。
推论:Marketplace 创建的资源(通常通过 Deployment Manager1?)与通过任何方式创建的资源没有区别除非用特定标签标记资源。
1 -- 您可以使用(审计)日志将现有资源关联回它们的创建(行为,即部署经理;谁,即服务帐户)和以这种方式关联它们。
这取决于您所说的“通过 Marketplace”是什么意思。通常,Marketplace 报价通常是 public 项目中的 Deployment Manager 模板和图像(public 项目仅适用于发布到 Marketplace 的合作伙伴)。因此,如果您部署 Marketplace VM 解决方案,您将拥有:
- 您组织外的某个项目中带有源映像的虚拟机;但这也将匹配使用该图像手动创建的虚拟机(它是否符合您的“通过市场”定义?)和从您的个人用户有权访问的自定义图像创建的虚拟机。提示:分配给 function 的服务帐户也可以访问所有 public 图片,但通常不能访问用户之间共享的图片。
- Deployment Manager 部署 - 这是一个很好的部署,因为这样的部署有一些 marketplace-specific 标签。问题是可以在不删除已部署资源的情况下删除部署元数据。还有您提到的一些市场列表只是重定向到部署单个 VM 的情况。
恐怕无法检测 Ubuntu VM 是否在访问 Marketplace 后部署,或者在单击添加 VM 按钮或使用 CLI 或 Terraform 后部署 - 对于 GCE,它只是一个 API 调用以插入新实例。
我正在尝试在 Python 中进行 API 调用(在 Cloud Function 中)来做一些不同的事情,作为我想传递的信息的一部分,是否VM 是从 Marketplace 中的内容创建的。
用例是这样的:用户在 Compute Engine 的 GCP 控制台中。他们单击显示屏左栏中的市场,然后会显示可供选择的虚拟机。用户选择一个(比如“Ubuntu 20.4 LTS (Focal)”)。显示屏显示有关带有“启动”按钮的 VM 的信息。当他们单击它时,他们将被带到“创建实例”页面,他们继续做出选择并最终创建 VM。
这会创建一个日志条目,供客户端的安全组在云函数内部检查。当我查看 beta.compute.instances.insert 的日志条目时,我没有看到任何关于它是通过 Marketplace 创建的信息。如果我调用 API 来获取实例,则返回的对象中也没有任何内容表明这一点。任何人都知道有什么方法可以确定这一点?
我不熟悉 Marketplace 创建的资源,但我怀疑,确定任何 GCP 资源来源的唯一方法(仅通过单独检查资源)是通过识别标签(适用于 most/all? GCP 资源)在创建时应用。
推论:Marketplace 创建的资源(通常通过 Deployment Manager1?)与通过任何方式创建的资源没有区别除非用特定标签标记资源。
1 -- 您可以使用(审计)日志将现有资源关联回它们的创建(行为,即部署经理;谁,即服务帐户)和以这种方式关联它们。
这取决于您所说的“通过 Marketplace”是什么意思。通常,Marketplace 报价通常是 public 项目中的 Deployment Manager 模板和图像(public 项目仅适用于发布到 Marketplace 的合作伙伴)。因此,如果您部署 Marketplace VM 解决方案,您将拥有:
- 您组织外的某个项目中带有源映像的虚拟机;但这也将匹配使用该图像手动创建的虚拟机(它是否符合您的“通过市场”定义?)和从您的个人用户有权访问的自定义图像创建的虚拟机。提示:分配给 function 的服务帐户也可以访问所有 public 图片,但通常不能访问用户之间共享的图片。
- Deployment Manager 部署 - 这是一个很好的部署,因为这样的部署有一些 marketplace-specific 标签。问题是可以在不删除已部署资源的情况下删除部署元数据。还有您提到的一些市场列表只是重定向到部署单个 VM 的情况。
恐怕无法检测 Ubuntu VM 是否在访问 Marketplace 后部署,或者在单击添加 VM 按钮或使用 CLI 或 Terraform 后部署 - 对于 GCE,它只是一个 API 调用以插入新实例。