Openstack基础服务运维 Keystone

Keystone认证服务

(1)认证

认证是确认允许一个用户访问的进程。在Openstack当中Identity会为用户提供证书,起初这些证书是用户名和密码,当认证体系接受了用户的请求之后,直接颁发给用户一个token,用户在之后的请求中直接使用这个token去访问资源中的其他应用。

(2)证书

用于确认用户身份的数据,例如用户名、密码。

(3)令牌(Token)

这个令牌是一串比特值或者字符串,用来作为访问资源的记号。包含了一些可以访问资源的范围和有效时间。Keystone的功能是负责身份验证、校验服务和发布服务令牌的。它可以分解为两个功能点:权限管理和服务的目录。服务目录可以说成是一个服务的总线,或者是整个OpenStack中的注册表;权限管理的话是用户的管理授权。

用户请求云主机的流程涉及认证服务(Keystone)、计算服务(Nova)、镜像服务(Glance),在整个服务认证流程中,token作为流程认证传递。

1.配置Keystone应用环境

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

在安装keystone之后产生的主配置文件存放在 /etc/keystone,名称是keystone.conf

Keystone安装完毕,可以通过请求身份令牌来验证服务:

[root@controller ~]# source  /etc/keystone/admin-openrc.sh

[root@controller ~]# openstack token issue

+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Field      | Value                                                                                                                                                                                   |

+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| expires    | 2022-10-15T04:56:41+0000                                                                                                                                                                |

| id         | gAAAAABjSi953pGp33gbayvw3musEx-hn03D1zP68690uYRgLy8yQTl4SHtTcxPWv7psltnc642ebTVK8cHHLMxRUug_4KC1tTfh5Ll2QdLdn9HTbBEPSLcF_7allQwqqysaIl1uzpDAY43DfPcjAULQHJB_xdAD3yYQ-QInLs5Q78XGAffdBHI |

| project_id | a9ef1cb9c3db40c0889807210939dee9                                                                                                                                                        |

| user_id    | e2ff150bd9a74fd5b28788d4d374df76                                                                                                                                                        |

+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

2.Keystone在Openstack中的作用

用户资源需要验证用户的身份与权限,服务的执行操作也需要进行权限检测,这些都需要通过keystone来进行处理。Openstack通过Keystone来注册其endpoint(服务访问的URL),在任何服务之间的相互调用,都需要先经过Keystone的身份验证,获得目标服务的Endpoint,在进行调用。

[root@controller ~]# openstack endpoint list

+----------------------------------+-----------+--------------+--------------+---------+-----------+-----------------------------------------------+

| ID                               | Region    | Service Name | Service Type | Enabled | Interface | URL                                           |

+----------------------------------+-----------+--------------+--------------+---------+-----------+-----------------------------------------------+

| 0bc31893f7894617a3b6a8c6e81e60bb | RegionOne | nova         | compute      | True    | internal  | http://controller:8774/v2.1                   |

| 10850c7721b447129d36db60a5a2f785 | RegionOne | glance       | image        | True    | public    | http://controller:9292                        |

| 184b0c27e0784c5abd9514d9031844c9 | RegionOne | cinderv2     | volumev2     | True    | internal  | http://controller:8776/v2/%(project_id)s      |

| 320b512561ef47ec94dcb8b7bee06a32 | RegionOne | swift        | object-store | True    | internal  | http://controller:8080/v1/AUTH_%(project_id)s |

| 33ed568024f84e56ac3ab8fdee3a83dc | RegionOne | swift        | object-store | True    | public    | http://controller:8080/v1/AUTH_%(project_id)s |

| 39d2a793965e4795be963073e8bc6782 | RegionOne | nova         | compute      | True    | admin     | http://controller:8774/v2.1                   |

| 53202d5bb0e24238b465566cee6437ce | RegionOne | cinderv3     | volumev3     | True    | internal  | http://controller:8776/v3/%(project_id)s      |

| 58e7e71a86a144b5b7dc8c2c5f4ced9e | RegionOne | neutron      | network      | True    | public    | http://controller:9696                        |

| 65ddab41af1943fcb96c27fc37a1b28d | RegionOne | neutron      | network      | True    | admin     | http://controller:9696                        |

| 67fc1b1408134bd6a4450ee3da923d93 | RegionOne | placement    | placement    | True    | admin     | http://controller:8778                        |

| 739cfb09e5c3456787eeb42d1cfa19b6 | RegionOne | glance       | image        | True    | admin     | http://controller:9292                        |

| 92d9cf006e3445ea941c50a797ea54d5 | RegionOne | cinderv2     | volumev2     | True    | public    | http://controller:8776/v2/%(project_id)s      |

| 9fb1400e0f0044f8991b9543e275ede6 | RegionOne | placement    | placement    | True    | internal  | http://controller:8778                        |

| a782974485144f0691660d0fa4da38aa | RegionOne | placement    | placement    | True    | public    | http://controller:8778                        |

| b9e39beac58a4fcb8955d0f2463a0911 | RegionOne | cinderv2     | volumev2     | True    | admin     | http://controller:8776/v2/%(project_id)s      |

| bd53fa30730641b4b80b4612d112837c | RegionOne | glance       | image        | True    | internal  | http://controller:9292                        |

| c5a2e89d45dc4786a7a077613bc0234a | RegionOne | keystone     | identity     | True    | public    | http://controller:5000/v3/                    |

| c79e9f1ff00448b4957efc3ba1029cfd | RegionOne | cinderv3     | volumev3     | True    | admin     | http://controller:8776/v3/%(project_id)s      |

| de3f1adbfd11455d810cfa96da5ffa62 | RegionOne | swift        | object-store | True    | admin     | http://controller:8080/v1                     |

| e18d3a481c8f4f8bb0e7cd2cc3997321 | RegionOne | keystone     | identity     | True    | internal  | http://controller:5000/v3/                    |

| eb8bbeb76a8c4daa9b745b5002fd127c | RegionOne | neutron      | network      | True    | internal  | http://controller:9696                        |

| ec1d8170f1bc40afbe3cb65925ec2cc6 | RegionOne | cinderv3     | volumev3     | True    | public    | http://controller:8776/v3/%(project_id)s      |

| ef3b973029a74081bdbcd5f6fcfaab52 | RegionOne | nova         | compute      | True    | public    | http://controller:8774/v2.1                   |

| f8312ceea274441c80787b77afa1fddd | RegionOne | keystone     | identity     | True    | admin     | http://controller:5000/v3/                    |

+----------------------------------+-----------+--------------+--------------+---------+-----------+-----------------------------------------------+

简单总结Keystone的主要功能:

(1)管理用户及权限 (2)维护Opensatck服务的Endpoint (3)认证和授权

3.使用Keystone相关命令创建用户、组、角色等

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

(1)创建用户

[root@controller ~]# source /etc/keystone/admin-openrc.sh

[root@controller ~]# openstack user create --domain demo  --password 000000  testuser

+---------------------+----------------------------------+

| Field               | Value                            |

+---------------------+----------------------------------+

| domain_id           | ee8f1cb3db494c59ba7cabe7c4e2270d |

| enabled             | True                             |

| id                  | fcbab28bc2574b6a9606c2944c373010 |

| name                | testuser                         |

| options             | {}                               |

| password_expires_at | None                             |

+---------------------+----------------------------------+

[root@controller ~]# openstack user delete testuser          //删除一个用户

[root@controller ~]# openstack user list         //列出当前平台中的用户列表

+----------------------------------+-----------+

| ID                               | Name      |

+----------------------------------+-----------+

| e2ff150bd9a74fd5b28788d4d374df76 | admin     |

| 879abb0312444b178e791dc7af25a863 | demo      |

| 39864508a59541bb89ddf0015e885ca1 | glance    |

| f0d5d1d72e0a4ee9a90098e15a474e36 | placement |

| 38d6b4382fd04346a6e90def4f6d8fb8 | nova      |

| 8f1a908a7dac41148bbc08b129dbc2c0 | neutron   |

| 6669182ee0854096865a792f5babfbd4 | cinder    |

| 9f680df707994233a8b1fb241026b998 | swift     |

| fcbab28bc2574b6a9606c2944c373010 | testuser  |

+----------------------------------+-----------+

[root@controller ~]# openstack user show admin                //查询用户的详细信息

+---------------------+----------------------------------+

| Field               | Value                            |

+---------------------+----------------------------------+

| default_project_id  | a9ef1cb9c3db40c0889807210939dee9 |

| domain_id           | ee8f1cb3db494c59ba7cabe7c4e2270d |

| enabled             | True                             |

| id                  | e2ff150bd9a74fd5b28788d4d374df76 |

| name                | admin                            |

| options             | {}                               |

| password_expires_at | None                             |

+---------------------+----------------------------------+

(2)创建租户

一个租户的话就是一个项目或者团队、组织,当请求Openstack服务时,必须要先定义一个租户。

[root@controller ~]# openstack project list             //查询租户的列表

+----------------------------------+---------+

| ID                               | Name    |

+----------------------------------+---------+

| 279c8c33c997420eb8ff063e5d5213a6 | service |

| 3e77da5e80894f258dcd284c4f5ceb9a | demo    |

| a9ef1cb9c3db40c0889807210939dee9 | admin   |

+----------------------------------+---------+

[root@controller ~]# openstack project create --domain demo testproject      //创建一个租户

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description |                                  |

| domain_id   | ee8f1cb3db494c59ba7cabe7c4e2270d |

| enabled     | True                             |

| id          | 14f5b4495562487e93cbcbe9cdbb555e |

| is_domain   | False                            |

| name        | testproject                      |

| options     | {}                               |

| parent_id   | ee8f1cb3db494c59ba7cabe7c4e2270d |

| tags        | []                               |

+-------------+----------------------------------+

[root@controller ~]# openstack project create --domain demo  --description "Test" aaa    //创建一个包含类型的租户

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Test                             |       //对于租户的描述信息

| domain_id   | ee8f1cb3db494c59ba7cabe7c4e2270d |

| enabled     | True                             |

| id          | 98401e37ac74437d86291a8ddcd259b8 |

| is_domain   | False                            |

| name        | aaa                              |

| options     | {}                               |

| parent_id   | ee8f1cb3db494c59ba7cabe7c4e2270d |

| tags        | []                               |

+-------------+----------------------------------+

[root@controller ~]# openstack project delete aaa        //删除一个租户

[root@controller ~]#  openstack project show aaa

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Test                             |

| domain_id   | ee8f1cb3db494c59ba7cabe7c4e2270d |

| enabled     | True                             |

| id          | 98401e37ac74437d86291a8ddcd259b8 |

| is_domain   | False                            |

| name        | aaa                              |

| options     | {}                               |

| parent_id   | ee8f1cb3db494c59ba7cabe7c4e2270d |

| tags        | []                               |

+-------------+----------------------------------+

(3)创建角色

角色限定了用户的操作权限。

[root@controller ~]# openstack role create testrole       //创建一个角色

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | None                             |

| domain_id   | None                             |

| id          | 0614ea1f0acc4ab3961456a11d4868f1 |

| name        | testrole                         |

| options     | {}                               |

+-------------+----------------------------------+

[root@controller ~]# openstack role list          //查询角色的列表

+----------------------------------+----------+

| ID                               | Name     |

+----------------------------------+----------+

| 0614ea1f0acc4ab3961456a11d4868f1 | testrole |

| 26a92b0027b44466815e96a36bf3bb7d | member   |

| 331e561e160340b4b8fc08942f956c9d | user     |

| 6508cbcaf1144387aac39685ee63f040 | reader   |

| c6cdf02b21d84e4a9501ee9f91b8e24a | admin    |

+----------------------------------+----------+

[root@controller ~]# openstack  role delete testrole      //删除一个角色

(4)创建域

用于定义管理边界,域当中可以包含多个Project、User、Role。

[root@controller ~]# openstack domain list        //查询域的列表

+----------------------------------+---------+---------+--------------------+

| ID                               | Name    | Enabled | Description        |

+----------------------------------+---------+---------+--------------------+

| default                          | Default | True    | The default domain |

| ee8f1cb3db494c59ba7cabe7c4e2270d | demo    | True    | Default Domain     |

+----------------------------------+---------+---------+--------------------+

[root@controller ~]# openstack domain create --description "Test Domain"  test   //创建一个域

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Test Domain                      |

| enabled     | True                             |

| id          | 2a03380f98b44f5e9003baf51716ba88 |

| name        | test                             |

| options     | {}                               |

| tags        | []                               |

+-------------+----------------------------------+

[root@controller ~]# openstack domain show test       //查询域的详细信息

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Test Domain                      |

| enabled     | True                             |

| id          | 2a03380f98b44f5e9003baf51716ba88 |

| name        | test                             |

| options     | {}                               |

| tags        | []                               |

+-------------+----------------------------------+

[root@controller ~]# openstack domain delete  test    //删除一个域

(5)绑定用户和租户的权限

添加的用户需要分配一定的权限,这就需要把用户关联绑定到对应的租户和角色中。

[root@controller ~]# openstack role add  --project  testproject --user  testuser testrole

//给用户testuser分配testproject租户下的testrole角色

例题

(1)使用rabbitmqctl创建用户chinaskill-admin,密码为admin。

(2)使用rabbitmqctl命令查询所有用户列表。

(3)使用命令对chinaskill-admin用户进行授权,对本机所有资源可写可读权限。

(4)使用rabbitmqctl命令查询集群状态。

(5)使用命令给chinaskill-admin用户创建administrator角色,并查询。

(6)使用rabbitmqctl命令,查看队列信息,所包含的信息包括name,arguments,messages,memory。

1)在keystone中创建用户testuser,密码为password。

(2)将testuser用户分配给admin项目,赋予用户user的权限。

(3)以管理员身份将testuser用户的密码修改为000000。

(4)通过openstack相关命令获取token值。

(5)使用命令列出认证服务目录。

(6)在keystone中创建用户testuser2,密码为password,创建好之后,使用命令修改testuser2的状态为down,并查看testuser的详细信息。

(1)设置数据库支持大小写

(2)设置数据库缓存innodb 表的索引,数据,插入数据时的缓冲为4G

(4)设置数据库的log buffer 为 64MB

(4)设置数据库的redolog 大小为256MB;

(5)设置数据库的redo log 文件组为2

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇

)">
下一篇>>