VMware vSphere Web Services SDK编程指南(八)- 8.2 ESXi 和 vCenter 服务器的认证和授权

来源:互联网 发布:sql date类型 编辑:程序博客网 时间:2024/05/22 10:47

8.2 ESXi 和 vCenter 服务器的认证和授权


本章包括以下主题:

■ 8.1 认证和授权管理的相关对象
8.2 ESXi 和 vCenter 服务器的认证和授权
■ 8.3 从 UserDirectory 获取用户和组信息
■ 8.4 使用 HostLocalAccountManager 管理 ESXi 用户
■ 8.5 使用 AuthorizationManager 管理角色和权限
■ 8.6 通过 SessionManager 认证用户
■ 8.7 使用凭据库(Credential Store)自动登录
■ 8.8 使用 LicenseManager 管理许可证

本小节从第2节开始


8.2 ESXi 和 vCenter 服务器的认证和授权

当客户端应用程序(如 vSphere 客户端或 Web Services SDK 应用程序)连接服务器时,几个服务器端机制对用户进行认证。
因为 ESXi 使用基于 Linux 的认证,而 vCenter 服务器是一个 Windows 服务,这两种系统使用不同的方式处理用户账户。
下图 8.1 显示了与 VMware vSphere 服务器相关联的两种不同用户管理机制。

图 8.1 - 处理用户账户的托管对象

这里写图片描述

这些服务协同工作以确保只有认证的用户才能连接到 ESXi 或 vCenter 服务器系统,并且只能访问这些对象——folders、虚拟机、数据中心、虚拟服务等——拥有这些对象所需的特权,并有权限使用或查看它们。

另外,vSphere Web Services SDK 支持通过凭证库自动登录。
查阅 使用凭证 Store 自动登录。

8.2.1 ESXi 用户模型

当用户从客户端应用程序输入他们的帐户和凭据时,服务器会查询适当的用户帐户存储,并验证用户帐户的真实性和关联的凭证。目前,凭证由密码组成,但 vSphere 也支持证书,如 X.509 证书。
认证的用户可以访问其所授权使用的对象。如果用户身份存在于目标系统或受支持的目录服务中,那么身份认证就成功了。

ESXi 借用标准 Linux 架构,包括用于用户帐户创建和管理的 Linux 可插入身份验证模块(Pluggable Authentication Module,PAM)机制.
VMware 身份验证守护进程 (vmware-authd) 是作为 PAM 模块实现的,你可以通过使用 HostLocalAccountManager 在一个 ESXi 系统上创建和管理用户账户。

8.2.2 vCenter 服务器用户模型

vCenter 服务器是一个基于 Windows 服务,其使用本机 Windows 设备和 Windows 用户模型进行身分确认及认证。
vCenter Server Web service 与用于 vCenter 服务器安装过程被记录到机器的 Windows 用户账户关联,这个 vCenter 服务器管理账户必须是本机 Windows 管理员组的成员。VMware 建议创建一个专用的 Windows 用户帐户来安装和管理 vCenter 服务器系统。

其它的连接到 Web 服务的 vCenter 服务器用户必须也有一个本地管理员组中的 Windows 账户。


注意:即使一个用户有相同的名字存在于 ESXi 主机和 vCenter 服务器系统上,但这两个用户的账户是不同的。


使用 Microsoft Active Directory 的组织可以使用包含于 Windows 2003 服务器域控制器中的用户身份或跨其虚拟基础设施的 Active Directory 服务。
Microsoft Active Directory 身份被所有从基于 Windows 系统运行的 vSphere Web Services SDK 应用程序的客户端所支持。

vCenter 服务器客户端使用一个 SAML 令牌来建立一个与服务器的单点登录会话。

8.2.3 vSphere 安全模型

尽管身份认证和授权的细节在 ESXi 和 vCenter 服务器之间有所不同,但对于这两种系统来说,模型本身是相同的,它依赖于 权限、角色和许可。

权限(Privileges)
权限是与 VMware vSphere 对象相关联的一个系统定义的必要条件,权限由 VMware 定义,是静态的,对于一个产品的单一版本不会更改。
每个托管对象拥有一个或者多个权限,一个主体(用户、组成员)必须有这些权限以调用一个操作或查看一个属性。
例如,托管实体如 Folder 和 VirtualMachine 要求主体有在实体上的 System.Read 权限才能查看它们的属性值。

对于每个托管对象,在 API 文档页中的所需权限标签上,vSphere API Reference 包含调用操作和查看属性所需的权限信息。
对 vSphere 组件的权限定义如下:

<group>[.<group>].privilege

例如:
Datacenter.Create
Host.Config.Connection
Host.Config.Snmp

某些权限可以是针对 vCenter 服务器或 ESXi 系统的。
例如,Alarm.Create 定义于 vCenter 服务器上,通过 AlarmManager 服务接口完成警报设置,需要一个运行中的 vCenter 服务器系统。

权限要求应用于系统对象,而不管给定的客户端应用程序如何尝试访问服务器内容 (vSphere Client, CLI or SDK)。
例如,你可以使用如下的 URL 访问虚拟机数据存储文件:

https://<hostname>/folder[/<path>]/?dcPath=<datacenter_path>[&dsName=<datastore_name>]

该 URL 访问一个在清单中的 Datastore 对象,你必须有访问清单层次结构中每个对象的权限,对应于 URL 的元素。

应用 Datastore 对象的所需权限(不管访问机制)

这里写图片描述

角色
角色是一组预定义的权限,用户通过角色授予对象的权限(查阅使用角色合并特权集)。
当你分配一个用户或组权限,是将用户或组与某个角色关联组合,并将该组合与清单对象相关联。对于在清单中的不同对象,单个用户可能有不同的角色。

例如,如果在你的清单中你有两个资源池,Pool A 和 Pool B, 你可能分配一个特殊的用户角色 Pool A 上的 Virtual Machine User 和 在 Pool B 上的角色 ReadOnly。
这些分配允许用户启动 Pool A 上的虚拟机;
在 Pool B 上,用户可以查看虚拟机状态,但是不能启动虚拟机。

授予管理员角色的权限这节列出了一个管理员角色所包含权限的完整列表(在 vCenter Server 4.0 系统中定义)。

许可权限(Permissions)
在 vSphere 中,一个许可权限由一个用户或组和一个为清单对象(如虚拟机或 ESXi 主机)分配的角色组成,许可权限授予用户执行在对象上该角色指定的活动的权利。

例如,要为一个 ESXi 主机配置内存,一个用户必须被授予一个包含 Host.Configuration.Memory 权限的角色。对于不同对象,通过分配不同角色给用户或组,你可以控制用户在你的 vSphere 环境中执行的任务。

许多任务需要多个对象的权限。

8.2.4 设置用户、组和许可权限

设置用户、组和许可权限包含下列任务:

  1. 获取有关所需权限和与系统及示例角色相关联的权限信息。
    ■ 找出 vSphere 对象上的操作需要哪些特权;
    ■ 找出系统角色和示例角色可以执行哪些操作,可查阅系统和示例角色。

  2. 如果有必要,创建额外的角色(权限集)。可查阅修改示例角色来创建新角色。

  3. 检索关于现有用户和组的信息(查阅从 UserDirectory 获取用户和组信息),如果需要的话,并创建额外的组。

  4. 使用许可权限将用户或组和角色相关联。查阅 使用 AuthorizationManager 管理角色和许可权限。

在运行时,使用 SessionManager 登录服务器,vCenter 服务器支持单点登录会话。
要建立一个单点登录会话,使用 SessionManager.LoginByToken 方法;
要与独立 ESXi 主机建立一个会话,使用 SessionManager.Login 方法。




原文:
VMware vSphere 6.5 Documentation Center:Authentication and Authorization for ESXi and vCenter Server

阅读全文
0 0