在处理Google VM实例时遇到了一些问题, 我使用此命令在开头创建一个实例,
gcloud compute instances create <instance name> \
--scopes storage-rw,bigquery,compute-rw \
--image-family container-vm \
--image-project google-containers \
--zone us-central1-b \
--machine-type n1-standard-1
实例运行良好,我可以在实例上做很多事情。
但是,在项目中,还有其他几个用户,同一项目中的每个用户都可以SSH访问我的实例并查看我的工作,并且他们有sudo权限,这意味着他们也可以更改我的设置,文档和等等。这不安全。
是否有方法将实例设置为个人而非公共项目?在这种情况下,项目中的每个人都可以拥有自己的VM,除了他/她自己,没有其他人可以访问它。
答案 0 :(得分:2)
如果要仅允许访问VM中的特定用户而不允许访问其他项目SSH密钥,则必须阻止将项目级别密钥传播到实例。这样,只有为实例定义的特定键才能访问它。有关详细信息,请参阅此article
在创建时部署此类实例的命令看起来像这样
gcloud compute --project "myproject" instances create "myinstance" --zone "us-central1-f" --machine-type "n1-standard-1" --network "default" --metadata "block-project-ssh-keys=true,ssh-keys=MYPUBLICKEYVLUE" --maintenance-policy "MIGRATE" --scopes default="https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring.write","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly" --image "/debian-cloud/debian-8-jessie-v20160923" --boot-disk-size "10" --boot-disk-type "pd-standard" --boot-disk-device-name "myinstance"
现在,如果您已将项目成员定义为所有者/编辑者,则当使用gcloud或Developer Console进行SSH时,该密钥仍会自动转移到实例。这种行为很有意义,因为项目级别的权限允许他甚至删除VM。
如果您的实例已经创建,则必须将block-project-ssh-keys元数据值更改为TRUE并删除VM中的任何不需要的密钥,如同article
中所述。