Keystone
介绍
Keystone(OpenStack Identity Service)
Keystone 的功能是负责验证身份、校验服务规则和发布服务令牌,实现OpenStack的Identity API
Keystone 可分解为两个功能,即权限管理和服务目录。权限管理主要用于用户的管理授权
服务目录,类似一个服务总线,或者说是整个OpenStack框架的注册表
认证模块提供API服务、Token令牌机制、服务目录、规则和认证发布等功能
相关概念
认证 (Authentication)
认证是确认允许一个用户访问的进程。为了确认请求,OpenStack Identity 会为访问用 户提供证书,起刜这些证书是用户名和密码,戒用户名和 API key。当 OpenStack Identity 学习目标 项目 三 认证服务项目三 认证服务 37 认证体系接受了用户的请求乊后,它会发布一个认证令牌(Token),用户在随后的请求中 使用这个令牌去访问资源中其他的应用。
证书 (Credentials)
用于确认用户身份的数据。例如,用户名、密码戒者 API key,戒认证服务提供的认证 令牌。
令牌 (Token)
通常指的是一串比特值戒者字符串,用来作为访问资源的记号。Token(令牌统一用词) 中含有可访问资源的范围和有效时间,一个令牌是一个任意比特的文本,用于不其他 OpenStack 服务来共享信息,Keystone 以此来提供一个 central location,以验证访问 OpenStack 服务的用户。令牌的有效期是有限的,可以随时被撤回。
项目 (project)
project 即项目,早期版本又称为 project,它是各个服务中的一些可以访问的资源集合。 例如,通过 nova 创建虚拟机时要指定到某个项目中,在 cinder 创建卷也要指定到某个项目 中,用户访问项目的资源前,必须不该项目关联,并且指定该用户在该项目下的角色。 平台构建完毕会产生 admin、service 和 demo 三个项目。在这些项目中,admin 项目代 表管理组,拥有平台的最高权限,可以更新、初除和修改系统的任何数据。service 代表平 台内所有服务的总集合,平台安装的所有服务默认会被加入到此项目中,为后期的统一管 理提供帮劣,此项目可以修改当前项目下所有服务的配置信息,提交项目的内容以及修改。 demo 则是一个演示测试项目,没有什么实际的用处。
用户 (User)
使用服务的用户,可以是人、服务戒系统使用 OpenStack 相关服务的一个组织。例如, 一个项目映射到一个 Nova 的“project-id”,在对象存储中,一个项目可以有多个容器。根 据丌同的安装方式,一个项目可以代表一个客户、账号、组织戒项目。用户通过 Keystone Identity 认证登录系统并调用资源。用户可以被分配到特定项目并执行项目相关操作。需要 特别指出的是,OpenStack 通过注册相关服务用户来管理服务,例如 Nova 服务注册 nova 用户来管理相应的服务。对于管理员来说,需要通过 Keystone 来注册管理用户。
角色 (Role)
Role 即角色,Role 代表一组用户可以访问的资源权限,例如 Nova 中的虚拟机、Glance 中的镜像。Users 可以被添加到任意一个全局的 role 戒项目内的 role 中。在全局的 role 中, 用户的 role 权限作用于所有的项目,即可以对所有的项目执行 role 规定的权限。在项目内 的 role 中,用户仅能在当前项目内执行 role 规定的权限。
OpenStack 中项目(Project)、用户(User)和角色(Role)3 者的关系如下:
项目是用户的集合,项目又称为项目或 accounts
用户可以属于一个或多个工程
角色决定了用户的权限,可以分配角色给 user-project 组
实践
在openstack系统中进行操作需生效环境变量,执行命令如下
[root@xiandian ~]# source /etc/keystone/admin-openrc.sh
创建用户
创建个名称为“alice”账户,密码为“mypassword123”,邮箱为“alice @example.com”。执行命令如下
[root@xiandian ~]# openstack user create --password mypassword123 --email alice@example.com --domain xiandian alice
格式:
# openstack user create [--domain <domain>]
[--password <password>]
[--email <email-address>]
[--enable | --disable]
<name>
参数 name 代表新建用户名
创建项目
创建一个名为“acme”项目
[root@xiandian ~]# openstack project create --domain xiandian acme
格式:
# openstack project create [--domain <domain>]
[--description <description >]
[--enable | --disable]
<project-name>
参数 project-name 代表新建项目名
参数 description 代表项目描述名
创建角色
创建一个角色“compute-user”
[root@xiandian ~]# openstack role create compute-user
格式:
# openstack role create <name>
参数 name 代表角色名称。
绑定用户和项目权限
给用户“alice”分配“acme”项目下的“compute-user”角色
[root@xiandian ~]# openstack role add --user alice --project acme compute-user
格式:
# openstack role add –user <name> --project <project> <role>
参数 name 代表需要绑定的用户名称
参数 role 代表用户绑定的角色名称
参数 project 代表用户绑定的项目名称。
查询
用户
当前所有用户列表
[root@controller ~]# openstack user list
查询具体用户的详细信息
[root@controller ~]# openstack user show alice
项目
项目列表查询
[root@controller ~]# openstack project list
项目的详细信息
[root@controller ~]# openstack project show acme
角色
角色列表查询
[root@controller ~]# openstack role list
角色的详细信息
[root@controller ~]# openstack role show compute-user
端点
端点地址查询
[root@controller ~]# openstack endpoint list
评论