• openstack-3keystone(认证服务)


    openstack-3keystone(认证服务)

    OpenStack Identity服务提供单点集成,用于管理身份验证,授权和服务目录。

    身份服务通常是用户与之交互的第一个服务。经过身份验证后,最终用户可以使用其身份访问其他OpenStack服务。同样,其他OpenStack服务利用身份服务来确保用户是他们所声称的人,并发现部署中的其他服务。Identity服务还可以与某些外部用户管理系统(例如LDAP)集成。

    用户和服务可以使用由Identity服务管理的服务目录来查找其他服务。顾名思义,服务目录是OpenStack部署中可用服务的集合。每个服务可以有一个或多个端点,每个端点可以是以下三种类型之一:admin,internal或public。在生产环境中,出于安全原因,不同的端点类型可能驻留在暴露给不同类型用户的不同网络上。例如,公共API网络可能从Internet上可见,因此客户可以管理他们的云。管理API网络可能仅限于管理云基础架构的组织内的运营商。内部API网络可能仅限于包含OpenStack服务的主机。此外,OpenStack支持多个区域以实现可伸缩性。RegionOne区域。在身份服务中创建的区域,服务和端点一起构成部署的服务目录。部署中的每个OpenStack服务都需要一个服务条目,其中相应的端点存储在Identity服务中。这可以在安装和配置Identity服务之后完成。

    Identity服务包含以下组件:

    服务器
    一个中心化的服务器使用RESTful接口来提供认证和授权服务。
    驱动程序
    驱动或服务后端被整合进集中式服务器中。它们被用来访问OpenStack外部仓库的身份信息,并且它们可能已经存在于OpenStack被部署在的基础设施(例如,SQL数据库或LDAP服务器)中。
    模块
    中间件模块运行于使用身份认证服务的OpenStack组件的地址空间中。这些模块拦截服务请求,取出用户凭据,并将它们送入中央是服务器寻求授权。中间件模块和OpenStack组件间的整合使用Python Web服务器网关接口。

    安装和配置

    先决条件

    用数据库连接客户端以 root 用户连接到数据库服务器:

    mysql -u root -p

    创建 keystone 数据库:

    CREATE DATABASE keystone;

    keystone数据库授予恰当的权限

     GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystonepass';

    安全并配置组件

    yum install openstack-keystone httpd mod_wsgi

    控制端要安装

     yum install -y  python2-PyMySQL python-memcached

    生成临时 token

    openssl rand -hex 10

    编辑文件 /etc/keystone/keystone.conf 并完成如下动作
    在 [database] 部分,配置数据库访问

    [database] 
    connection = mysql+pymysql://keystone:keystonepass@192.168.10.233/keystone

    [token]部分,配置Fernet UUID令牌的提供者

    [token]
    provider = fernet

    [DEFAULT]部分,配置token

    [DEFAULT]
    admin_token = 279d54b9f417300c332d

    初始化身份认证服务的数据库

    su -s /bin/sh -c "keystone-manage db_sync" keystone

    初始化Fernet key

    keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
    keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
    ll /etc/keystone/fernet-keys/

    配置 Apache HTTP 服务器

    编辑/etc/httpd/conf/httpd.conf 文件,配置ServerName 选项为控制节点

    ServerName 192.168.10.201:80

    创建一个链接到/usr/share/keystone/wsgi-keystone.conf文件

    ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
    cat /etc/httpd/conf.d/wsgi-keystone.conf
    Listen 5000
    Listen 35357
    
    <VirtualHost *:5000>
        WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
        WSGIProcessGroup keystone-public
        WSGIScriptAlias / /usr/bin/keystone-wsgi-public
        WSGIApplicationGroup %{GLOBAL}
        WSGIPassAuthorization On
        ErrorLogFormat "%{cu}t %M"
        ErrorLog /var/log/keystone/keystone.log
        CustomLog /var/log/keystone/keystone_access.log combined
    
        <Directory /usr/bin>
            Require all granted
        </Directory>
    </VirtualHost>
    
    <VirtualHost *:35357>
        WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
        WSGIProcessGroup keystone-admin
        WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
        WSGIApplicationGroup %{GLOBAL}
        WSGIPassAuthorization On
        ErrorLogFormat "%{cu}t %M"
        ErrorLog /var/log/keystone/keystone.log
        CustomLog /var/log/keystone/keystone_access.log combined
    
        <Directory /usr/bin>
            Require all granted
        </Directory>
    </VirtualHost>

    递归更改 /etc/keystone 目录属组

    chown -R keystone:keystone /etc/keystone

    完成安装

    systemctl enable httpd.service
    systemctl restart httpd.service

    创建域、项目、用户和角色

    Identity服务为每个OpenStack服务提供身份验证服务。身份验证服务使用域,项目,用户和 角色的组合

    openstack客户端(openstack命令)

    yum install python-openstackclient

    通过 admin 的 token 设置环境变量进行操作

    export OS_TOKEN=279d54b9f417300c332d
    export OS_URL=http://192.168.10.233:35357/v3
    export OS_IDENTITY_API_VERSION=3

    创建默认域

    #命令格式为:openstack domain create --description " 描述信息" 域名

    [root@controller1 ~]# openstack domain create --description "Default Domain" default
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description | Default Domain                   |
    | enabled     | True                             |
    | id          | 0a8f301960df4c76bea868524707efe8 |
    | name        | default                          |
    +-------------+----------------------------------+
    
    [root@controller1 ~]# openstack domain list
    +----------------------------------+---------+---------+----------------+
    | ID                               | Name    | Enabled | Description    |
    +----------------------------------+---------+---------+----------------+
    | 0a8f301960df4c76bea868524707efe8 | default | True    | Default Domain |
    +----------------------------------+---------+---------+----------------+

    创建一个 admin 的项目:

    #命令格式为 openstack project --domain 域 --description " 描述" 项目名

    [root@controller1 ~]# openstack project create --domain default --description "Admin Project" admin
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description | Admin Project                    |
    | domain_id   | 0a8f301960df4c76bea868524707efe8 |
    | enabled     | True                             |
    | id          | 14c7c0b953754e0d9f30d4973e3e369d |
    | is_domain   | False                            |
    | name        | admin                            |
    | parent_id   | 0a8f301960df4c76bea868524707efe8 |
    +-------------+----------------------------------+
    [root@controller1 ~]# openstack project list
    +----------------------------------+-------+
    | ID                               | Name  |
    +----------------------------------+-------+
    | 14c7c0b953754e0d9f30d4973e3e369d | admin |
    +----------------------------------+-------+

    创建 admin 用户并设置密码为 admin:

    [root@controller1 ~]# openstack user create --domain default --password-prompt admin
    User Password:
    Repeat User Password:
    +---------------------+----------------------------------+
    | Field               | Value                            |
    +---------------------+----------------------------------+
    | domain_id           | 0a8f301960df4c76bea868524707efe8 |
    | enabled             | True                             |
    | id                  | f7e61b8a40b7490694e8082dc6ecf9bc |
    | name                | admin                            |
    | options             | {}                               |
    | password_expires_at | None                             |
    +---------------------+----------------------------------+
    [root@controller1 ~]# openstack user list
    +----------------------------------+-------+
    | ID                               | Name  |
    +----------------------------------+-------+
    | f7e61b8a40b7490694e8082dc6ecf9bc | admin |
    +----------------------------------+-------+

    创建 admin 角色:

    一个项目里面可以有多个角色,目前角色只能创建在/etc/keystone/policy.json 文件中定义好的角色:

    [root@controller1 ~]# openstack role create admin
    +-----------+----------------------------------+
    | Field     | Value                            |
    +-----------+----------------------------------+
    | domain_id | None                             |
    | id        | 11f7dc0b9df1443ab4a2ed688b10926f |
    | name      | admin                            |
    +-----------+----------------------------------+
    [root@controller1 ~]# openstack role list
    +----------------------------------+-------+
    | ID                               | Name  |
    +----------------------------------+-------+
    | 11f7dc0b9df1443ab4a2ed688b10926f | admin |
    +----------------------------------+-------+

    给 admin 用户授权:

    将 admin 用户授予 admin 项目的 admin 角色,即给 admin 项目添加一个用户叫 admin,并
    将其添加至 admin 角色,角色是权限的一种集合:

    [root@linux-host1 ~]# openstack role add --project admin --user admin admin

    创建demo

    openstack project create --domain default --description "Demo Project" demo

     openstack user create --domain default --password-prompt demo
     openstack role create user
     openstack role add --project demo --user demo user
     
     openstack project create --domain default 
      --description "Service Project" service

    服务注册

    创建一个 keystone 认证服务:

    [root@controller1 ~]# openstack service create --name keystone --description "OpenStackIdentity" identity
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description | OpenStackIdentity                |
    | enabled     | True                             |
    | id          | 88ae0d08128842279750cdc3dfb00cff |
    | name        | keystone                         |
    | type        | identity                         |
    +-------------+----------------------------------+

    创建 endpoint

    如果创建错误或多创建了,就要全部删除再重新注册,因为你不知道哪一个是对的哪一个是
    错的,所以只能全部删除然后重新注册,注册的IP地址写keepalived的VIP,稍后配置haproxy:
    如果需要修改endpoint节点IPhttps://www.xiaopeiqing.com/posts/2160.html
    mysql>use keystone;

    mysql>select id,url from endpoint;

    mysql>update endpoint set url=’http://10.0.0.100:8773/services/Cloud’ where id=’c6edf51290e34b84995bccacbc2a2454′;
    #公共端点

    [root@controller1 ~]# openstack endpoint create --region RegionOne identity public http://192.168.10.233:5000/v3 
    +--------------+----------------------------------+
    | Field        | Value                            |
    +--------------+----------------------------------+
    | enabled      | True                             |
    | id           | e0ecf07f27494ac1b1fadc11e1162b53 |
    | interface    | public                           |
    | region       | RegionOne                        |
    | region_id    | RegionOne                        |
    | service_id   | 88ae0d08128842279750cdc3dfb00cff |
    | service_name | keystone                         |
    | service_type | identity                         |
    | url          | http://192.168.10.233:5000/v3    |
    +--------------+----------------------------------+

    #私有端点

    [root@controller1 ~]# openstack endpoint create --region RegionOne identity internal http://192.168.10.233:5000/v3 
    +--------------+----------------------------------+
    | Field        | Value                            |
    +--------------+----------------------------------+
    | enabled      | True                             |
    | id           | 6b6ecf1ca488400784b0f9e35f5c4b7e |
    | interface    | internal                         |
    | region       | RegionOne                        |
    | region_id    | RegionOne                        |
    | service_id   | 88ae0d08128842279750cdc3dfb00cff |
    | service_name | keystone                         |
    | service_type | identity                         |
    | url          | http://192.168.10.233:5000/v3    |
    +--------------+----------------------------------+

    #管理端点

    [root@controller1 ~]# openstack endpoint create --region RegionOne identity admin http://192.168.10.233:35357/v3 
    +--------------+----------------------------------+
    | Field        | Value                            |
    +--------------+----------------------------------+
    | enabled      | True                             |
    | id           | 4862d7d814f04fc08b0d5c5073a1209a |
    | interface    | admin                            |
    | region       | RegionOne                        |
    | region_id    | RegionOne                        |
    | service_id   | 88ae0d08128842279750cdc3dfb00cff |
    | service_name | keystone                         |
    | service_type | identity                         |
    | url          | http://192.168.10.233:35357/v3   |
    +--------------+----------------------------------+

    #查看当前的服务

    [root@controller1 ~]# openstack service list 
    +----------------------------------+----------+----------+
    | ID                               | Name     | Type     |
    +----------------------------------+----------+----------+
    | 88ae0d08128842279750cdc3dfb00cff | keystone | identity |
    +----------------------------------+----------+----------+

    测试 keystone 是否可以做用户验证:

    作为admin 用户,请求认证令牌
    验证 admin 用户,密码 admin ,新打开一个窗口并进行以下操作:

    [root@controller1 ~]# export OS_IDENTITY_API_VERSION=3
    [root@controller1 ~]# openstack --os-auth-url http://192.168.10.233:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue
    Password: 
    +------------+-------------------------------------------------------------------------------------------------------------------+
    | Field      | Value                                                                                                             |
    +------------+-------------------------------------------------------------------------------------------------------------------+
    | expires    | 2019-09-11T10:47:12+0000                                                                                          |
    | id         | gAAAAABdeMKgXQCxYbOjBxz-Gmx8hz4xgeVsftGXaO1cqKXDvRk-HntiSKBmbm24yRiWmaKqWZiJb9BATnSiVeATMpJ8Lx-                   |
    |            | 1ZSM57jQOsn5iAqGTj-p_kuZWYE8iwy-r2KYHSEk1l9gitJfJ9QOIF9GpNF4lQQJ0tzDSmvvayBK82ooQP-e5pOY                          |
    | project_id | 14c7c0b953754e0d9f30d4973e3e369d                                                                                  |
    | user_id    | f7e61b8a40b7490694e8082dc6ecf9bc                                                                                  |
    +------------+-------------------------------------------------------------------------------------------------------------------+

    创建 OpenStack 客户端环境脚本

    创建脚本

    Admin 用户脚本内容:

    cat admin-ocata.sh
    #!/bin/bash
    export OS_PROJECT_DOMAIN_NAME=default
    export OS_USER_DOMAIN_NAME=default
    export OS_PROJECT_NAME=admin
    export OS_USERNAME=admin
    export OS_PASSWORD=admin
    export OS_AUTH_URL=http://192.168.10.233:35357/v3
    export OS_IDENTITY_API_VERSION=3
    export OS_IMAGE_API_VERSION=2

    使用脚本

    chmod +x admin-ocata.sh
    当前 bash admin-ocata.sh
    全局 source admin-ocata.sh
  • 相关阅读:
    docker安装redis
    Kibana:Vega 可视化入门
    QT
    软件版本
    vue在线预览pdf
    Nacos 架构原理①:一条注册请求会经历什么?
    验证码是自动化的天敌?看看大神是怎么解决的
    Allure在自动化测试中的应用
    测试架构师必备技能Nginx安装部署实战
    一文学会jenkins pipline自动化构建
  • 原文地址:https://www.cnblogs.com/fina/p/11592508.html
Copyright © 2020-2023  润新知