0x01 前言

当拥有一台或多台服务器的时候会发现可用的资源非常多,多到自己都用不完,比如我:

这时候我希望能将多余的计算资源分享给有需要的朋友,另一种情况是在企业环境中的某些开发人员需要计算资源,那么针对这两种情况,我们需要针对特定的用户赋予有限的权限,从而让相关人员能登入 vCenter 进行虚拟机的创建、重置以及销毁等操作。

所以目的很明确,有以下几项:

  1. 限制用户使用的资源
  2. 不能让该用户访问其他资源
  3. 网络隔离

0x02 准备

首先了解在 vCenter 中建立虚拟机所需要的权限,在 主机和集群 页面中的左边栏可以看到四个图标:

分别是:

  1. 主机和集群:控制可用资源(资源池)
  2. 虚拟机和模板:控制虚拟机的创建权限(虚拟机文件夹)
  3. 存储:控制存储池的权限
  4. 网络:控制端口组的权限

0x02.1 网络

因为我为不同用户分配了不同的网段以实现网络隔离的需求,所以我需要在 pfsense 里先行配置。我的 pfsense 是一台虚拟机,我通过建立分布式交换机的方式实现虚拟机与 pfsense 互联互通,大致拓扑图如下:

pfsense 一侧需要建立 vlan 端口:

如果有需要,还需要配置 DHCP 服务器、DNS 服务器与防火墙等服务:

vCenter 一侧的网络配置比较复杂,因为并没有物理网线连接,所以 pfsense 是连接至一个端口组里的,而且这个端口需要配置为 VLAN 中继:

然后这一个端口组的其他端口都需要配置为同样的 vlan ID,如上图所示。默认情况下,分布式交换机的 vlan 功能是关闭的,需要手动打开:

如果需要批量修改端口组的 vlan ID,可以使用管理分布式端口组功能:

0x02.2 资源池

一个计算集群的资源肯定是有限的,为了避免资源争抢和过度消耗的问题,需要为用户建立独立的资源池:

在资源池的配置里可以限定 CPU、内存 资源的使用:

0x02.3 虚拟机文件夹与存储

存储池并没有太多的配置,只能调整权限以实现读写、只读、只写或普通的使用权限。在接下来的操作中会为用户分配使用权限,在这种权限中,用户只能使用而不能浏览数据存储中的文件。

虚拟机文件夹是一个分组功能的东东,主要用于权限管理,我们可以针对特定的文件夹做出特定的权限分配:

0x03 用户与权限

用户与角色的创建需要使用超级用户,也就是 administrator,请使用该用户登入 vCenter,然后转到系统管理页面:

可以发现 vCenter 已经内置一些角色,每个觉得都有不同的特权,这就是等下我们需要为特定用户分配的。

可以看到上图中的数据存储使用者角色,它仅有分配空间的特权,所以它并不能浏览数据存储中不是它创建的数据,如果是它创建的数据,那么该数据将继承被授权用户的相关角色特权。

在我的使用环境中,预设的角色已完全满足需求。而在生产环境中无比针对不同业务和人员建立不同的角色并赋予最小化特权,以免误操作与其他以外的情况发生。

紧接着来到单点登陆栏目中的用户与组窗口,选中你的域:

然后单击添加用户并填写用户名与密码等必填信息,确认后保存即可。

0x04 授权

授权过程非常简单,首先回到主机和集群界面,右击需要授权的资源池并选择添加授权按钮:

然后选中特定的域,输入用户名的一部分后再选中提示的完整用户名,最后选择角色,在这里需要选择资源池管理员,并勾选传播到子对象以实现该资源池下的所有对象都能继承该角色的特权:

通过同样的办法为特定的用户在虚拟机与模板的文件夹、数据存储以及网络端口组中添加特权。最终,在每个资源对象中的权限标签都能看到相关权限,并可以修改以及删除:

0x05 使用

完成授权后即可尝试用该用户的信息登入 vCenter,在数据中心视图中只能看到自己获得授权的资源池:

对于无权限的对象,会有如下提示:

在建立虚拟机时也只能选择获得授权的资源,比如磁盘与端口组等,如果配置的资源已经超过资源池的限制,也会有相应的提示。

0x06 结语

计算资源比较少的服务器可能无法提供 vCenter 所需的资源,所以无法实现这篇文章所说的功能。