忿忿的泥巴坨 发表于 2024-8-2 14:21:19

Openstack基础服务运维 Keystone

Keystone认证服务
(1)认证
认证是确认答应一个用户访问的进程。在Openstack当中Identity会为用户提供证书,早先这些证书是用户名和暗码,当认证体系担当了用户的哀求之后,直接颁发给用户一个token,用户在之后的哀求中直接使用这个token去访问资源中的其他应用。
(2)证书
用于确认用户身份的数据,例如用户名、暗码。
(3)令牌(Token)
这个令牌是一串比特值或者字符串,用来作为访问资源的记号。包含了一些可以访问资源的范围和有效时间。Keystone的功能是负责身份验证、校验服务和发布服务令牌的。它可以分解为两个功能点:权限管理和服务的目次。服务目次可以说成是一个服务的总线,或者是整个OpenStack中的注册表;权限管理的话是用户的管理授权。
https://i-blog.csdnimg.cn/blog_migrate/c2d4913b445f83e85c7ce9a66bc8ed29.png
用户哀求云主机的流程涉及认证服务(Keystone)、盘算服务(Nova)、镜像服务(Glance),在整个服务认证流程中,token作为流程认证通报。
1.配置Keystone应用环境
在开始阶段Keystone是没有创建任何用户的,所以必须使用授权的令牌和服务的访问的接口来创建特定的用来进行身份认证的用户,需要去创建一个管理员用户的环境变量(admin-openrc.sh)来管理最终的凭证和终端。
在安装keystone之后产生的主配置文件存放在 /etc/keystone,名称是keystone.conf
Keystone安装完毕,可以通过哀求身份令牌来验证服务:
   # source  /etc/keystone/admin-openrc.sh
    # 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,在进行调用。
   # 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)创建用户
   # source /etc/keystone/admin-openrc.sh
    # openstack user create --domain demo  --password 000000  testuser
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | ee8f1cb3db494c59ba7cabe7c4e2270d |
| enabled             | True                             |
| id                  | fcbab28bc2574b6a9606c2944c373010 |
| name                | testuser                         |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
    # openstack user delete testuser          //删除一个用户
    # openstack user list         //列出当前平台中的用户列表
+----------------------------------+-----------+
| ID                               | Name      |
+----------------------------------+-----------+
| e2ff150bd9a74fd5b28788d4d374df76 | admin     |
| 879abb0312444b178e791dc7af25a863 | demo      |
| 39864508a59541bb89ddf0015e885ca1 | glance    |
| f0d5d1d72e0a4ee9a90098e15a474e36 | placement |
| 38d6b4382fd04346a6e90def4f6d8fb8 | nova      |
| 8f1a908a7dac41148bbc08b129dbc2c0 | neutron   |
| 6669182ee0854096865a792f5babfbd4 | cinder    |
| 9f680df707994233a8b1fb241026b998 | swift     |
| fcbab28bc2574b6a9606c2944c373010 | testuser  |
+----------------------------------+-----------+
    # 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服务时,必须要先定义一个租户。
   # openstack project list             //查询租户的列表
+----------------------------------+---------+
| ID                               | Name    |
+----------------------------------+---------+
| 279c8c33c997420eb8ff063e5d5213a6 | service |
| 3e77da5e80894f258dcd284c4f5ceb9a | demo    |
| a9ef1cb9c3db40c0889807210939dee9 | admin   |
+----------------------------------+---------+
    # 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        | []                               |
+-------------+----------------------------------+
    # 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        | []                               |
+-------------+----------------------------------+
    # openstack project delete aaa        //删除一个租户
    #  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)创建脚色
脚色限定了用户的操作权限。
   # openstack role create testrole       //创建一个脚色
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | None                             |
| domain_id   | None                             |
| id          | 0614ea1f0acc4ab3961456a11d4868f1 |
| name        | testrole                         |
| options     | {}                               |
+-------------+----------------------------------+
    # openstack role list          //查询脚色的列表
+----------------------------------+----------+
| ID                               | Name     |
+----------------------------------+----------+
| 0614ea1f0acc4ab3961456a11d4868f1 | testrole |
| 26a92b0027b44466815e96a36bf3bb7d | member   |
| 331e561e160340b4b8fc08942f956c9d | user     |
| 6508cbcaf1144387aac39685ee63f040 | reader   |
| c6cdf02b21d84e4a9501ee9f91b8e24a | admin    |
+----------------------------------+----------+
    # openstack  role delete testrole      //删除一个脚色
(4)创建域
用于定义管理边界,域当中可以包含多个Project、User、Role。
   # openstack domain list        //查询域的列表
+----------------------------------+---------+---------+--------------------+
| ID                               | Name    | Enabled | Description        |
+----------------------------------+---------+---------+--------------------+
| default                          | Default | True    | The default domain |
| ee8f1cb3db494c59ba7cabe7c4e2270d | demo    | True    | Default Domain     |
+----------------------------------+---------+---------+--------------------+
    # openstack domain create --description "Test Domain"  test   //创建一个域
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Test Domain                      |
| enabled     | True                             |
| id          | 2a03380f98b44f5e9003baf51716ba88 |
| name        | test                             |
| options     | {}                               |
| tags        | []                               |
+-------------+----------------------------------+
    # openstack domain show test       //查询域的具体信息
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Test Domain                      |
| enabled     | True                             |
| id          | 2a03380f98b44f5e9003baf51716ba88 |
| name        | test                             |
| options     | {}                               |
| tags        | []                               |
+-------------+----------------------------------+
    # openstack domain delete  test    //删除一个域
(5)绑定用户和租户的权限
添加的用户需要分配肯定的权限,这就需要把用户关联绑定到对应的租户和脚色中。
   # 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
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Openstack基础服务运维 Keystone