皇冠新体育APP

IT技术之家

OpenStack Victoria搭建(五) Keystone认证服务_mabaishun

发布信息的时间:2023-08-24 16:37:37 iOS 73次 标签:运维 linux
OpenStack环境搭建,keystone...

介绍

什么是 Keystone

Keystone是 OpenStack Identity Service 的该项目称谓,一个否则信息处理与权限的控件

主要功能: 实现用户的身份认证,基于角色的权限管理,及 OpenStack 其他组件的访问地址和安全策略管理。

为什么需要 Keystone

Keystone 该项原则常见原则是给所有 OpenStack 的个个模块(nova,cinder,glance…)供给同一个实行的证实模式 用户管理 Account账户Authentication 身份认证Authorization 授权 服务目录管理

术语

User (用户)
一个人、系统或服务在 OpenStack中的数字表示。已经登录的用户分配令牌环以访问资源。用户可以直接分配给特定的租户,就像隶属于每个组。

Credentials (凭证)
用于确认用户身份的数据。例如:用户名和密码,用户名和API key,或由认证服务提供的身份验证令牌。

Authentication(验证)
确认用户身份的过程。

Token(令牌)
一个用于访问 OpenStack API和资源的字母数字字符串。一个临时令牌可以随时撤销,并且持续一段时间有效。

Tenant(租户)
一个组织或孤立资源的容器。租户和可以组织或隔离认证对象。根据服务运营的要求,一个租户可以映射到客户、账户、组织或项目。

Service(服务)
OpenStack服务,例如计算服务(nova),对象存储服务(swift),或镜像服务(glance)。它提供一个或多个端点,共用户访问资源和执行操作。

Endpoing(端点)
一个用于访问某个服务的可以通过网络进行访问的地址,通常是一个URL地址。

Role(角色)
定制化的包含特定用户权限和特权的权限集合。

Keystone Client(keystone命令行工具)
Keystone 的命令行工具。通过该工具可以创建用户、角色、服务和端点等。

keystone与其他组件协同工作流程

keystone是用户与云平台交互的第一个服务,一旦认证通过,用户就会使用自己的身份来访问其他的opnestack服务,同样,被访问的openstack服务会去跟keystone再次确认用户(不能只能用户的片面之词)并且通过keystone可以发现其他服务(catalog的原因),keystone的还可以整合其他的用户管理系统,比如LDAP

keystone工作流程详解

    User从Keystone获取令牌以及服务列表;User访问服务时,亮出自己的令牌。相关的服务向Keystone求证令牌的合法性。

    用户alice登录keystone系统(password或者token的方式),获取一个临时的token和catalog服务目录(v3版本登录时,如果没有指定scope,project或者domain,获取的临时token没有任何权限,不能查询project或者catalog)。alice通过临时token获取自己的所有的project列表。alice选定一个project,然后指定project重新登录,获取一个正式的token,同时获得服务列表的endpoint,用户选定一个endpoint,在HTTP消息头中携带token,然后发送请求(如果用户知道project name或者project id可以直接第3步登录)。消息到达endpoint之后,由服务端(nova)的keystone中间件(pipeline中的filter:authtoken)向keystone发送一个验证token的请求。(token类型:uuid需要在keystone验证token,pki类型的token本身是包含用户详细信息的加密串,可以在服务端完成验证)keystone验证token成功之后,将token对应用户的详细信息,例如:role,username,userid等,返回给服务端(nova)。服务端(nova)完成请求,例如:创建虚拟机。服务端返回请求结果给alice。

安装和配置

整节课价绍该如何将调节器网络节点上装和安装 OpenStack Identity 服务质量质量,编码为 keystone。始于可扩充性目的性,此安装堡垒机被部署了 Fernet 令牌和 Apache HTTP 服务质量质量器来操作中请。

配置数据库

    使用数据库访问客户端以root用户身份连接数据库服务器:
    mysql -u root -p
    
    创建keystone数据库:
    MariaDB [(none)]> CREATE DATABASE keystone;
    
    授予对keystone数据库的适当访问权限:
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
    IDENTIFIED BY 'KEYSTONE_DBPASS';
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
    IDENTIFIED BY 'KEYSTONE_DBPASS';
    
    替换KEYSTONE_DBPASS为合适的密码。退出数据库访问客户端。

安装和配置组件

? 笔记
默认配置文件因发行版而异。您可能需要添加这些部分和选项,而不是修改现有的部分和选项。此外,配置片段中的省略号 ( …) 表示您应该保留的潜在默认配置选项。

    使用左右强制性来的安装电脑软件包:
    yum install openstack-keystone httpd python3-mod_wsgi
    

    ? 笔记
    对于 RHEL7/Centos7 及以上安装包 mod_wsgi。

    编缉/etc/keystone/keystone.conf档案并完整下述控制: 在该[database]的部分中,运行环境数据报告库网络访问:
    [database]
    #  ...
    connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
    
    编辑KEYSTONE_DBPASS为您为数据报告库采用的账号密码。

    笔记
    注释掉或删除connection该部分中的任何其他选项 [database]。

    笔记
    在此示例中,主机controller必须是可解析的。

    在该[token]区域中,标准配置 Fernet 令牌供给程度:
    [token]
    # ...
    provider = fernet
    
    插入角色工作数据信息库:
    su -s /bin/sh -c "keystone-manage db_sync" keystone
    
    默认化 Fernet 密匙存储器库:

    笔记
    和标志用于指定将用于运行 keystone 的操作系统的用户/组–keystone-user。–keystone-group提供这些是为了允许在另一个操作系统用户/组下运行 keystone。在下面的示例中,我们调用 user & group keystone。

    keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
    keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
    
    优化个人信息业务:

    ? 笔记
    在 Queens 发布之前,keystone 需要在两个单独的端口上运行以适应 Identity v2 API,后者通常在端口 35357 上运行单独的仅管理员服务。删除 v2 API 后,keystone 可以在同一端口上运行所有接口。

     keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
      --bootstrap-admin-url //controller:5000/v3/ \
      --bootstrap-internal-url //controller:5000/v3/ \
      --bootstrap-public-url //controller:5000/v3/ \
      --bootstrap-region-id RegionOne
    
    替代ADMIN_PASS为满足的管理业主的支付密码。

配置 Apache HTTP 服务器

    文字编辑/etc/httpd/conf/httpd.conf文件夹并搭配 ServerName页面设置以收录调控器时间:
    ServerName controller
    
    比如该ServerName要素尚不都存在,则要有获取该要素。 加入/usr/share/keystone/wsgi-keystone.conf材料的联结:
    ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
    

SSL

安全保障设置应将 Web 工作器配制为使用的 SSL 或在 SSL 战胜器上边工作。

完成安装

    启动 Apache HTTP 服务并将其配置为在系统启动时启动:
    systemctl enable httpd.service
    systemctl start httpd.service
    
    通过设置适当的环境变量来配置管理帐户:
    export OS_USERNAME=admin
    export OS_PASSWORD=ADMIN_PASS
    export OS_PROJECT_NAME=admin
    export OS_USER_DOMAIN_NAME=Default
    export OS_PROJECT_DOMAIN_NAME=Default
    export OS_AUTH_URL=//controller:5000/v3
    export OS_IDENTITY_API_VERSION=3
    
    此处显示的这些值是从创建的默认值。keystone-manage bootstrap
    替换为keystone-install-configure-rdo中命令中ADMIN_PASS使用的密码 。keystone-manage bootstrap

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

Identity 精准功能为没个 OpenStack 精准功能出具个人信息安全查验精准功能。个人信息安全查验精准功能选用域、楼盘、粉丝和人物角色的组成。

创建域

openstack domain create --description "An Example Domain" example

创建服务

openstack project create --domain default \
  --description "Service Project" service

创建项目

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

创建用户

openstack user create --domain default  --password-prompt demo

创建角色

openstack role create demo

将role的角色修改到demo新项目和demo移动用户
openstack role add --project demo --user demo demo

验证

    全部取消设计按规定因素值OS_AUTH_URL和OS_PASSWORD 环境因素值:
    unset OS_AUTH_URL OS_PASSWORD
    
    有所作为admin手机用户,申请一款身份信息证实令牌:
    openstack --os-auth-url //controller:5000/v3 \
      --os-project-domain-name Default --os-user-domain-name Default \
      --os-project-name admin --os-username admin token issue
    

    做为user在里边新创建的大家,要求一家定位验正令牌:
    openstack --os-auth-url //controller:5000/v3 \
      --os-project-domain-name Default --os-user-domain-name Default \
      --os-project-name demo --os-username demo token issue
    


创建 OpenStack 客户端环境脚本

以前的大部分用到氛围全局变量和控制命令页面设置的搭配依据 openstack用户端与个人身份产品来进行人机交互。成了升高用户端控制的热效率,OpenStack 支撑简单易行的用户端氛围按键精灵脚本制作,也通称 OpenRC 档案。他们按键精灵脚本制作一般性含有每个用户web端专用页面设置,但也支撑特有的页面设置。

创建脚本

为项目流程和用户的admin创立潜在客户端下载坏境角本。
    组建并插入图片admin_openrc文本并增添下玩法:
    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_PASS
    export OS_AUTH_URL=//controller:5000/v3
    export OS_IDENTITY_API_VERSION=3
    export OS_IMAGE_API_VERSION=2
    
    重命名为您在身份信息服务管理中ADMIN_PASS为移动用户admin选择的密码忘了。 组建并我们demo_openrc文件资料并加入下类內容:
    export OS_PROJECT_DOMAIN_NAME=Default
    export OS_USER_DOMAIN_NAME=Default
    export OS_PROJECT_NAME=demo
    export OS_USERNAME=demo
    export OS_PASSWORD=DEMO_PASS
    export OS_AUTH_URL=//controller:5000/v3
    export OS_IDENTITY_API_VERSION=3
    export OS_IMAGE_API_VERSION=2
    
    重命名为您在身分服务培训中DEMO_PASS为移动用户demo确定的密匙。

使用脚本

要将的服务端充当目标的项目和手机用户调用,您只需在调用她们开始之前调用相互影响的的服务端环境游戏脚本。假如:
    加载文件以使用身份服务的位置以及项目和用户凭据admin-openrc填充环境变量:admin
    source ./admin_openrc
    
    请求身份验证令牌:
    openstack token issue