如何在GCP上为单个计算实例提供访问权限?

15

一直在尝试解决这个问题,但迄今为止没有成功。与AWS相比,这似乎是一个非常棘手的问题。

我有一个谷歌云平台(GCP)项目,其中包含多个计算实例和其他正在运行的服务。

我需要将根访问权限授予单个计算实例,但不授予对任何其他服务的访问权限,以便给外部开发团队使用。

在“计算引擎”视图中,当我选择该实例并将用户添加为计算管理员(拥有所有计算引擎资源的完全控制权)时,但他仍无法通过 ssh 连接到该实例。

尝试#1:

出现错误:“需要compute.instance.get权限。”

所以我去给那个用户分配了一个角色,其中包括该权限。

尝试#2:

出现错误:“用户无法访问服务帐号...”

问题#1:

到底需要做些什么才能在GCP中仅给某个实例赋予角色访问权限呢?

在AWS上,可以给定一个特定的角色来访问单个资源,但这似乎在这里不适用。

问题#2:

此外,“计算引擎”视图中的“权限”右侧边栏的目的是什么,如果它实际上并没有授予任何权限呢?

谢谢!


这个答案有帮助吗?https://dev59.com/8lkS5IYBdhLWcg3wHDDU#52054668 - savac
2个回答

18

我之前遇到了相同的问题并找到了解决方案,以下是我的回答:

问题1:如何让一个角色仅拥有对GCP中单个计算实例的访问权限?

您需要授予用户以下权限:

1- 在主IAM页面,https://console.cloud.google.com/iam-admin/iam?project=your_project 授予用户“Compute Viewer”和“Service Account User”角色。

2- 在VM页面,https://console.cloud.google.com/compute/instances?folder=&organizationId=&project=your_project,选择一个或多个VM,并授予用户“Compute Instance Admin(v1)”角色。

现在用户可以通过SSH连接到VM。

问题2:在“Compute Engine”视图中,“权限”右侧边栏的目的是什么,如果它实际上并没有给任何权限。

在GCP中,有项目级和资源级权限。在“Compute Engine”中,“权限”右侧边栏设置单个资源的权限。

希望这可以帮助到您!

enter image description here

在此输入图片描述


我在一个项目中运行了多个实例。我已经实施了步骤1和2,以及仅实施了步骤2,但仍然无法正常工作。用户能够看到并访问项目目录中的所有实例。 - Yogesh Awdhut Gadade
2
如果您的实例使用自定义服务帐户,您也可以在 IAM / 服务帐户下为该特定服务帐户授予用户“服务帐户用户”,而不是将用户服务帐户用户授予整个项目。 - Matthew Lenz
我想知道是否必须有外部IP才能使OS登录工作?我在自定义网络中运行Ubuntu VM。外部IP已禁用。我已经给了一个用户(比如abc2021@gmail.com)Compute OS管理员登录角色。我在元数据中将enable-oslogin设置为TRUE。但是当我以abc2021@gmail.com的身份访问计算VM时,仍然无法看到SSH已启用。我正在使用免费的GCP帐户。我是否遗漏了什么? - Chandan Patra

1

此链接中,您将找到添加新用户到项目以及如何为计算引擎资源设置访问控制的不同方法。

注意:如果您想要给用户SSH虚拟机实例的权限,但又不想让他们访问所有API,则应将用户的SSH密钥添加到项目或实例中,而不是将用户添加到项目并授予他们广泛的权限。

  1. 如果您只想授予用户对VM实例的SSH访问权限,则可以将用户的公钥添加到项目或特定实例中。这在此处链接中有提到。

  2. 使用OS登录管理实例访问权限,此功能使您更加精细地控制哪些用户可以连接到您的实例以及他们具有什么级别的权限。有关详细信息,请参见此文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接