配置身份服务

目录

身份服务理念…………………………..22

身份安装服务…………………………..24

定义用户,商户和角色………………25

定义服务和API端点…………………..26

验证身份服务的安装………………….27

身份服务理念

身份服务执行以下功能:

  • 用户管理。跟踪用户及其权限。

  • 服务目录。可提供的服务与他们的API端点的目录。

要了解身份服务,你必须了解以下概念:

用户

一个人,系统或服务的数字表示谁使用OpenStack的云服务。身份服务用于验证传入的请求是由用户作出谁声称要进行调用。用户必须登录和 可被分配的令牌来访问资源。用户可以 直接分配给特定租户和行为如果它们包含在租户内。

证书

这是唯一已知的由证明谁的用户数据他们是。在身份服务,例如:用户名和密码,用户名和API密钥,或一个由身份服务提供身份验证令牌。

认证

确认用户的身份的行为。身份服务通过由用户提供的凭证验证的一套确认传入的请求 。

这些凭证是最初的用户名和 密码或用户名和API密钥。为响应 这些凭证,身份服务发出 认证令牌发送给用户,从而用户 提供了在随后的请求。

令牌

文本的任意位是用于访问资源的。 每个标记有一个范围,它描述了哪些资源 与它接近。令牌可以在任何被撤销 一次,有效期为有限的持续时间。虽然身份服务支持基于令牌的 在这个版本的认证,其目的是为它来支持未来的附加议定书。这样做的目的是因为它是一种整合的服务,并不渴望成为一个成熟的身份存储和 管理解决方案。

租客

用于基或分离的资源和/或标识对象的容器。根据不同的服务运营商,租户可以映射到一个客户,帐户,组织或项目。

服务

一个OpenStack的服务,如计算(新星),对象存储(SWIFT),或影像服务(一览)。提供一个或多个端点,通过它用户可以访问资源并执行操作。

端点

通过网络访问的地址,按通常被描述一个URL,从那里您可以访问的服务。如果使用的是扩展模板,您可以创建一个端点模板,该模板代表了所有的模板耗材服务可跨地区。

角色

该用户承担,使他们能够有个性完成一组特定的操作。角色包括设置的权利和特权。用户承担这一职能继承了这些权利和特权。

在身份服务,发放给用户一个令牌 包括角色的用户具有的列表。这是服务 被称为由用户确定他们如何解释 设置用户的角色已经和哪个操作或 资源,每个角色授予访问权限。

下图显示了身份服务流程:

配置身份服务 - 图1

安装身份服务

  1. 控制器节点上使用Python-keystoneclient(依据)安装OpenStack的身份服务:配置身份服务 - 图2
  2. 身份服务使用数据库来存储信息。指定的位置 数据库中的配置文件中。在本指南中,我们使用了MySQL数据库在 控制器节点与用户名基石。用合适的密码为数据库用户更换KEYSTONE_DBPASS。配置身份服务 - 图3
  3. 使用您先前设置为root的登录密码。创建一个梯形数据库用户:配置身份服务 - 图4
  4. 创建身份服务数据库表: 配置身份服务 - 图5
  5. 定义一个授权令牌作为身份服务之间的共享密钥使用和其它OpenStack的服务。使用OpenSSL生成一个随机的令牌并将其存储在配置文件:配置身份服务 - 图6
  6. 默认情况下,使用梯形校正的PKI令牌。创建签名密钥和证书,并限制访问所生成的数据:配置身份服务 - 图7
  7. 启动身份认证服务,使其能够启动系统时启动:配置身份服务 - 图8
  8. 默认情况下,身份服务储存在数据库中无限期过期的令牌。而对于审计在生产环境中可能是有用的,在累积过期的令牌将大大增加数据库的大小和可能会降低服务性能,特别是在测试环境中具有有限的资源。我们建议配置使用cron以每小时清除过期令牌的周期性任务。

• 运行以下命令每隔一小时,以清除过期的令牌,并记录输出/var/log/keystone/keystone-tokenflush.log:配置身份服务 - 图9

定义用户,商户和角色

在您安装的身份服务,设置用户,商户和角色认证 反对。这些被用来允许访问的服务和终端,描述在接下来的部分。

通常情况下,你都将意味着用户名和密码的身份验证 服务。在这一点上,但是,你还没有创建任何用户,所以你必须使用 在前面的步骤中创建的授权令牌,见4.3.1节“安装Identity 服务“[24]为进一步的细节。您可以通过这个与—os令牌选项 在梯形命令或设置OS_SERVICE_TOKEN环境变量。设置 OS_SERVICE_TOKEN,以及OS_SERVICE_ENDPOINT来指定标识 服务正在运行。更换ADMIN_TOKEN与您的授权令牌。 配置身份服务 - 图10

创建一个管理用户

请按照下列步骤来创建一个管理用户,角色和租户。您将使用此 帐户用于与OpenStack云管理交互。

默认情况下,身份服务创建了一个特殊的member作用。在OpenStack的仪表板 自动授予访问权限的用户使用这个角色。你会给以管理员用户访问这个角色除了管理员角色。

您创建的任何角色必须映射到policy.json文件中指定的角色包括每个OpenStack的服务。对于大多数服务的默认策略文件授予管理角色管理权限。

  1. 创建admin用户:配置身份服务 - 图11用一个安全的密码更换ADMIN_PASS,并用替换ADMIN_EMAIL 电子邮件地址与帐户相关联。
  2. 创建管理角色:配置身份服务 - 图12
  3. 创建管理员用户:配置身份服务 - 图13
  4. 现在,您必须使用用户角色添加选项把管理用户,管理角色链接到一起 :配置身份服务 - 图14
  5. 联系管理员用户,member角色,管理租户:配置身份服务 - 图15

创建一个普通用户

请按照下列步骤来创建一个普通用户和租户,并将其链接到的特殊 member作用。您将使用此帐户与日常非管理互动 OpenStack的云。您也可以重复此步骤,以创建其他云用户不同的用户名和密码。创建这些当跳过租户创建步骤用户。

  1. 创建演示用户:配置身份服务 - 图16用一个安全的密码更换DEMO_PASS,并用电子邮件代替DEMO_EMAIL 地址与该帐户相关联。
  2. 创建演示租户:配置身份服务 - 图17

    添加更多的用户时,不要重复此步骤。

3 . 链接演示的用户,member角色,演示租户:配置身份服务 - 图18

创建服务租户

OpenStack的服务还需要一个用户名,租户和角色访问其他的OpenStack服务。在基本安装,OpenStack的服务通常称为共享一个单一租户服务。

你会为你装下这个房客创建额外的用户名和角色, 配置各项服务。

• 创建服务租户:配置身份服务 - 图19

定义服务和API端点

从而使身份服务可以跟踪安装哪些OpenStack的服务,让他们 位于网络上的,你必须在你的OpenStack安装每个注册服务。 要注册一个服务,运行以下命令:

  • 梯形服务创建。描述服务。
  • 梯形端点创建。相关联的API端点的服务。

您还必须注册身份服务本身。使用OS_SERVICE_TOKEN 环境变量,如设置之前,进行身份验证。

  1. 创建为身份服务的服务项:配置身份服务 - 图20服务ID是随机生成的,并不同于这里显示的任意一个。
  2. 通过返回的服务ID指定的身份认证服务的API端点。当指定端点,您提供的公共API的URL,内部API和管理API。在本指南中,控制器的主机名被使用。请注意,身份服务使用不同的端口进行管理的API。配置身份服务 - 图21

您将需要创建一个额外的端点为每个服务添加到您的OpenStack环境。本指南与相关联的部分系统中的每个服务包括具体的端点创建步骤服务。

验证身份服务的安装

  1. 要验证身份服务已安装并正确配置,清除在OS_SERVICE_TOKEN和OS_SERVICE_ENDPOINT环境变量的值:配置身份服务 - 图22这些变量被用来引导管理用户和注册身份服务,是不再需要的。
  2. 现在,您可以使用常规的用户名的验证。请求身份验证令牌通过使用管理员用户,以及你为该用户选择的密码 :配置身份服务 - 图23对此,您会收到搭配您的用户ID令牌。这验证身份服务于预期的端点上运行,并且您的用户帐户建立在预期的凭证上。
  3. 验证授权行为与预期。要做到这一点,在租户要求授权:配置身份服务 - 图24对此,您会收到包含您指定的租户的ID令牌。 这将验证您的用户帐户有一个明确的在指定的租客和存在预期租客的角色。
  4. 您还可以设置您 - OS-*变量的环境中,以简化命令行的使用。建立与管理凭据和管理端点的管理,openrc.sh文件配置身份服务 - 图25
  5. 这个源文件中读取的环境变量:配置身份服务 - 图26
  6. 请确认您的管理员,openrc.sh文件被正确配置。运行相同命令没有—os-*参数:配置身份服务 - 图27该命令返回一个标记,并指定租户的ID。这证明了你正确配置了你的环境变量。
  7. 请确认您的管理员帐户权限来执行管理命令:配置身份服务 - 图28配置身份服务 - 图29鉴于从梯形的用户列表命令的输出中的ID相匹配的 USER_ID在梯形的用户角色-list命令,而该管理员角色挂牌 该用户,为相关租户,这将验证您的用户帐户具有管理员 的作用,它匹配的身份服务是policy.json文件中使用的角色。

只要你定义凭证和身份服务端点通过命令行或环境变量,你可以运行所有从任何机器OpenStack的客户端命令。有关详细信息,请参阅第4章, “安装和配置OpenStack的客户端”[30]。