【问题标题】:GCP machine images and credentialsGCP 机器映像和凭据
【发布时间】:2018-09-14 13:06:55
【问题描述】:

我对 Google Cloud 自定义图像以及凭据的存储方式/是否存储有疑问。也就是说,如果我自定义一个 VM 并保存具有公共访问权限的机器映像,我是否可能会暴露凭据?

特别是,我正在开发一个基于云的应用程序,该应用程序依赖于安装了 gsutil 和 docker 的“自定义”映像。基本 GCE 虚拟机预装了 gsutil,但没有有 docker。另一方面,容器优化的操作系统有 docker,但没有有 gsutil。因此,我只是从一个基本的 debian 映像开始并安装 docker 来获得我需要的东西。

理想情况下,当我分发我的应用程序时,我只想公开该自定义图像以供公众使用;这样,用户就不必花费额外的精力来制作自己的图像。

但是,我担心的是,由于我在自定义 VM 上使用了 gsutil,因此将此磁盘保存到映像会无意中保存与我的项目相关的一些凭据(如果是,它们在哪里??)。因此,任何使用我的图像的人也将获得这些凭据。

【问题讨论】:

    标签: google-cloud-platform google-compute-engine


    【解决方案1】:

    我试图重现你的情况。我从可以访问我的项目存储桶的实例的磁盘创建了一个customer image。然后,我shared 为另一个项目中的另一个用户提供图像。用户可以create 该共享图像中的一个实例。但是,当他尝试access我的项目存储桶时,遇到了 AccessDeniedException 错误。

    根据此复制和我的调查,您的凭据没有与图像一起暴露。 IAM grant permissions 基于赋予用户、组或服务帐户的角色。共享图片不能授予他人。

    此外,(正如下面提到的 Patrick W),您在 GCE 虚拟机实例中运行的任何东西都将使用虚拟机的服务帐户(除非另有说明)。只要服务帐户可以访问存储桶,您的应用程序(包括 docker 容器)也可以访问。

    【讨论】:

    • 很高兴知道——谢谢!让其他人重新创建它是一件好事,尽管它仍然是一个例子。我经常对某些权限是否有效的情况感到困惑/惊讶,具体取决于 VM 上的各种隐藏文件等。
    • 如果您详细说明某些权限是否有效(隐藏文件等)的情况的详细信息,我将很乐意为您提供进一步的帮助。 p.s.请确保不要在此处发布您项目的私人或重要细节。
    • 当我在 GCP 上创建一个 docker 容器时,我感到很惊讶。在该容器中(如下),我无需提供凭据即可访问我的存储桶。它是怎么知道的? FROM debian:stretch RUN apt-get update \ && apt-get install -y \ build-essential \ python3-dev \ python3-pip RUN pip3 install google-cloud-storage ADD list_buckets.py /opt/ ENTRYPOINT ["/opt/list_buckets.py"] 脚本:#! /usr/bin/python3 from google.cloud import storage storage_client = storage.Client() buckets = list(storage_client.list_buckets()) print(buckets)
    • 您在 GCE 虚拟机实例中运行的任何东西都将使用虚拟机的服务帐户(除非另有说明)。只要服务帐户可以访问存储桶,您的应用程序(包括 docker 容器)也可以访问
    猜你喜欢
    • 2021-04-07
    • 1970-01-01
    • 2020-01-23
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 2021-04-01
    相关资源
    最近更新 更多