- 项目介绍Keystone是Openstack框架中负责身份认证、服务管理、服务规则和服务令牌的功能,它实现了Openstack的Identity API。Keystone是整个openstack框架的注册表,其他服务通过keystone来注册其服务的endpoint,任何服务之间相互的调用,都需要经过keystone的身份验证来获得目标服务的endpoint来找到目标服务。Keystone主要包含两个主要部件:验证、权限和服务目录。
- 基本概念User用户,表示拥有用户名,密码,邮箱等帐号信息的个人Tenant租户,它是各个服务中的一些可以访问的资源集合。可以理解为一个项目,默认user是绑定在Tenant上的。Role 角色,代表用户可以访问的资源权限。Users可以被添加到任意一个全局的 或 租户内的角色中。在全局的role中,用户的role权限作用于所有的租户,即可以对所有的租户执行role规定的权限;在租户内的role中,用户仅能在当前租户内执行role规定的权限。Service服务,一个openstack的服务,例如nova,swift等。通常用不同的名称来表示不同的服务。 Endpoint端点,一个可以通过网络访问的地址,即服务访问的URL。具有public,private,admin三种权限。Token 令牌,是一把特殊的钥匙。用户通过用户名和密码获取某个租户的令牌,可以实现单点登录。Template 模版,一个端点集合,代表一组可用的openstack服务端点。
- 认证服务的流程
- 用户名通过自己的用户名和密码向keystone申请令牌token,keystone认证其用户名和密码后,若正确则返回一个token1。
- 用户携带token1向keystone申请查询其所拥有的租户,keystone认证token1后,返回其拥有的所有租户的tenant信息。
- 用户选择一个租户,通过用户名和密码向keystone申请令牌token,keystone认证用户名,密码和租户后,返回token2。(前两步是为了查询用户所拥有的租户信息的,如果已经知道租户信息,则省略前两步)。
- 用户携带token2向keystone发送提供服务的请求,keystone认证token2后(包括此token是否有效,是否有创建服务的权限等等),把请求下发到相应的服务,服务按照需求执行相应的操作并把执行结果返回给用户。 从上面的流程得知,用户是从keystone获取令牌和服务列表。并在访问某个服务的时候提供自己的token,然后此服务向keystone求证所携带token的合法性。
- 配置认证服务所需要的数据库首先在数据库中创建名为keystone的数据库: