OpenStack 认证服务

keystone管理认证用户

1.相关概念

(1)认证(Authentication)。

认证是确认允许一个用户访问的进程。为了确认请求,OpenStack Identity会为访问用户提供证书,起初这些证书是用户名和密码,或用户名和API key。当OpenStack Identity认证体系接受了用户的请求之后,它会发布一个认证令牌(Token),用户在随后的请求中使用这个令牌去访问资源中其他的应用。

(2)证书(Credentials)。

用于确认用户身份的数据。例如,用户名、密码或者API key,或认证服务提供的认证令牌。

(3)令牌(Token)。

通常指的是一串比特值或者字符串,用来作为访问资源的记号。Token(令牌统一用词)中含有可访问资源的范围和有效时间,一个令牌是一个任意比特的文本,用于与其他OpenStack服务来共享信息,Keystone以此来提供一个central location,以验证访问OpenStack服务的用户。令牌的有效期是有限的,可以随时被撤回。

(4)项目(project)。

project即项目,早期版本又称为project,它是各个服务中的一些可以访问的资源集合。例如,通过nova创建虚拟机时要指定到某个项目中,在cinder创建卷也要指定到某个项目中,用户访问项目的资源前,必须与该项目关联,并且指定该用户在该项目下的角色。

平台构建完毕会产生admin、service和demo三个项目。在这些项目中,admin项目代表管理组,拥有平台的最高权限,可以更新、删除和修改系统的任何数据。service代表平台内所有服务的总集合,平台安装的所有服务默认会被加入到此项目中,为后期的统一管理提供帮助,此项目可以修改当前项目下所有服务的配置信息,提交项目的内容以及修改。demo则是一个演示测试项目,没有什么实际的用处。

(5)用户(User)。

使用服务的用户,可以是人、服务或系统使用OpenStack相关服务的一个组织。例如,一个项目映射到一个Nova的“project-id”,在对象存储中,一个项目可以有多个容器。根据不同的安装方式,一个项目可以代表一个客户、账号、组织或项目。用户通过Keystone Identity认证登录系统并调用资源。用户可以被分配到特定项目并执行项目相关操作。需要特别指出的是,OpenStack通过注册相关服务用户来管理服务,例如Nova服务注册nova用户来管理相应的服务。对于管理员来说,需要通过Keystone来注册管理用户。

(6)角色(Role)。

Role即角色,Role代表一组用户可以访问的资源权限,例如Nova中的虚拟机、Glance中的镜像。Users可以被添加到任意一个全局的role或项目内的role中。在全局的role中,用户的role权限作用于所有的项目,即可以对所有的项目执行role规定的权限。在项目内的role中,用户仅能在当前项目内执行role规定的权限。

使用云服务的用户不局限于人,也可以是系统或者服务。用户可以通过指定的令牌登录系统并调用资源。用户可以被分配到特定项目并执行项目相关操作。

平台构建完毕,系统会创建user、admin两个用户权限,在系统中,user表示系统的普通用户的权限,拥有系统的正常使用和对当前项目的管理权限。admin角色是代表系统的管理员身份,对系统有绝对的管理权限。

认证服务流程

用户请求云主机的流程涉及认证Keystone服务、计算Nova服务、镜像Glance服务,在服务流程中,令牌(Token)作为流程认证传递,具体服务申请认证机制流程,如图所示。


服务申请认证机制流程

(其中验证令牌是由网络服务直接指向认证服务)

配置Keystone应用环境

在安装Keystone服务之前需要指定用户名和密码,通过认证服务来进行身份认证,在开始阶段是没有创建任何的用户的,所以必须使用授权令牌和服务的访问接口来创建特定进行身份认证的用户,之后需要创建一个管理用户的环境变量(admin-openrc.sh)来管理最终的凭证和终端。

在安装Keystone服务之后,产生的主配置文件存放在/etc/keystone目录中,名为keystone.conf,在配置文件中需要配置初始的Token值和数据库的连接地址。

 

一、基础运维
进行授权
#source /etc/keystone/admin-openrc.sh 
1.查询token
#openstack --os-project-name admin --os-domain-name demo --os-username admin --os-password 000000 --os-auth-url http://controller:35357/v3 token issue
//以admin用户访问http://controller:35357/v3地址获取token值

管理认证用户

OpenStack的用户(user)包括云平台使用者、服务以及系统。用户通过认证登录系统并调用资源。为方便管理,用户被分配到一个或多个项目(project),项目是用户的集合。为给用户分配不同的权限,Keystone设置了角色(Role),角色是代表用户可以访问的资源等权限。用户可以被添加到任意一个全局的或项目内的角色中。在全局的角色中,用户的角色权限作用于所有的用户,即可以对所有的用户执行角色规定的权限;项目内的角色,用户仅能在当前项目内执行角色规定的权限,下面介绍几种常见操作。

2.创建用户
创建一个名称为“alice”账户,密码为“000000”,邮箱为“[email protected]”。命令如下。
#openstack user create --password 000000 --email [email protected] --domain demo alice
从上面的操作可以看出,创建用户需要用户名称、密码和邮件等信息。具体格式如下。
$ openstack user create [--domain <domain>]
[--password <password>]
[--email <email-address>]
[--enable | --disable]
<name>

3.创建项目
创建一个名为“acme”项目。
#openstack project create --domain demo acme
从上面操作可以看出,创建项目需要项目名等相关信息。具体操作格式如下。
$ openstack project create [--domain <domain>]
                              [--description <description>]
                              [--enable | --disable]
                              <project-name>
其中,参数<project-name>代表新建项目名,参数 <description>代表项目描述名。

4.创建角色
角色限定了用户的操作权限。例如,创建一个角色“compute-user”。
#openstack role create compute-user
从上面操作可以看出,创建角色需要角色名称信息。具体命令格式如下。
$ openstack role create <name>
其中参<name>代表角色名称。

5.绑定用户、角色、项目
添加的用户需要分配一定的权限,这就需要把用户关联绑定到对应的项目和角色。例如,给用户“alice”分配“acme”项目下的“compute-user”角色,命令如下。
#openstack role add --user alice --project acme compute-user
从上面操作可以看出,绑定用户权限需要用户名称、角色名称和项目名称等信息。具体命令格式如下。
$ openstack role add --user <user> --project <project> <role>
其中,参数 <user>代表需要绑定的用户名称,参数<role>代表用户绑定的角色名称,参数<project>代表用户绑定的项目名称。
查询命令绑定用户、角色、项目
#openstack role list --user alice --project acme

二、项目创建
1.查询服务目录
#openstack  catalog list
// 可以显示所有已有的service
   查询服务详细信息
#openstack catalog show <name>
//显示某个service信息
2.创建项目
在dashboard界面创建RD_Dept研发部门
创建BS_Dept业务部门
#openstack project create "BS_Dept" --domain demo --description 业务部门
查询列表
#openstack project list
查询详细信息
#openstack project show BS_Dept
通过Shell命令行为项目研发部创建用户rduser002,密码为cloudpasswd。
# openstack user create rduser002 --password cloudpasswd --domain demo --email [email protected]
3.绑定用户权限
通过Shell命令行将项目研发部用户rduser002绑定普通用户权限。命令如下。
#openstack role add --user rduser002 --project RD_Dept  user
查看命令
# openstack role list --user rduser002 --project RD_Dept
部分执行结果如下所示。
+----------------------------------+----------+---------+-----------+
| ID                                     |   Name    |  Project |  User      |
+----------------------------------+----------+---------+-----------+
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_ | RD_Dept | rduser002 |
+----------------------------------+----------+---------+-----------+


OpenStack中项目(Project)、用户(User)和角色(Role)3者的关系如下:项目是用户的集合,项目又称为项目或accounts,用户可以属于一个或多个工程,角色决定了用户的权限,可以分配角色给user-project组。

在OpenStack中验证服务的身份令牌也可以直接在admin-openrc.sh文件中定义系统用户、密码以及认证服务的endpoint等参数,在实际应用中,直接引用(source)环境变量,即可使用Keystone。

在OpenStack用户管理中,用户、角色和项目等身份的权限和等级设定非常重要,对应的身份只拥有对应的适合身份的权限,对系统的安全和稳定非常有帮助。

发布了6 篇原创文章 · 获赞 0 · 访问量 204

猜你喜欢

转载自blog.csdn.net/weixin_45678149/article/details/104411400