1、OpenStack云计算实战大数据创新人才培养系列第5章 人民邮电出版社OpenStack身份服务身份服务基础基于Dashboard界面进行身份管理操作基于命令行界面进行身份管理操作通过oslo.policy实现权限管理手动安装和部署Keystone5.1 身份服务基础lKeystone基本功能身份认证(Authentication)用户授权(Authorization)用户管理(Account)服务目录(Service Catalog)lKeystone在OpenStack项目中的作用跟踪用户和监管用户权限。为每个OpenStack服务提供一个可用的服务目录和相应的API端点。Keyston
2、e主要功能5.1 身份服务基础l认证(Authentication)l凭证(Credentials)l令牌(Token)l用户(User)l项目(Project)l域(Domain)l组(Group)l角色(Role)l端点(Endpoint)l服务(Service)l分区(Region)l客户端(OpenStackClient)Keystone基本概念5.1 身份服务基础Keystone的管理层次结构5.1 身份服务基础lKeystone的3大组件服务器(Server)驱动(Drivers)模块(Modules)l服务(Services)身份(Identity)服务 用户(Users)组(G
3、roups)资源(Resource)服务 项目(Projects)域(Domains)分配(Assignment)服务令牌(Token)服务目录(Catalog)服务策略(Policy)服务Keystone体系结构5.1 身份服务基础l应用程序构建(Application Construction)Keystone是多个服务的HTTP前端。它是使用Python WSGI接口实现的,应用程序使用Paste配置。应用程序的HTTP端点由WSGI中间件组成。l服务后端(Service Backends)每个服务可以配置为使用后端来让Keystone适合多种环境和需求。每种服务的后端在/ect/key
4、stone/keystone.conf配置文件中定义。l数据模型(Data Model)Keystone体系结构 用户(User)组(Group)项目(Project)域(Domain)角色(Role)令牌(Token)附加(Extras)规则(Rule)5.1 身份服务基础lCRUD方法Keystone提供了用于开发和测试的多种CRUD操作方法。CRUD作为不要求后端支持的核心特性集的扩展或附加特性。l授权方法(策略)要求执行用户作为管理员(admin)。要求执行用户匹配被引用的用户。l验证方法Keystone提供多种继承自keystone.auth.plugins.base的验证插件。在最
5、基本的密码插件中,要求验证两条信息:资源(Resource)信息和身份(Identity)。Keystone体系结构5.1 身份服务基础Keystone认证流程身份服务基础基于Dashboard界面进行身份管理操作基于命令行界面进行身份管理操作通过oslo.policy实现权限管理手动安装和部署Keystone5.2 基于Dashboard界面进行身份管理操作l项目列表项目管理5.2 基于Dashboard界面进行身份管理操作l创建项目(设置项目信息)项目管理l创建项目(添加项目成员)5.2 基于Dashboard界面进行身份管理操作l查看或编辑项目的配额项目管理5.2 基于Dashboard
6、界面进行身份管理操作l用户列表用户管理5.2 基于Dashboard界面进行身份管理操作l创建用户用户管理5.2 基于Dashboard界面进行身份管理操作l组列表组管理5.2 基于Dashboard界面进行身份管理操作l组成员列表组管理5.2 基于Dashboard界面进行身份管理操作l管理角色角色管理身份服务基础基于Dashboard界面进行身份管理操作基于命令行界面进行身份管理操作通过oslo.policy实现权限管理手动安装和部署Keystone5.3 基于命令行进行身份管理操作l管理项目l管理用户管理项目、用户和角色(1)列出项目(2)创建项目(3)修改项目(4)删除项目(1)列出用
7、户(2)创建用户(3)修改用户(4)删除用户5.3 基于命令行进行身份管理操作l管理角色管理项目、用户和角色(1)列出可用角色 openstack role list(2)创建角色 openstack role create new-role(3)分配角色 openstack role add-user 用户名或ID -oject 项目名或ID 角色名或ID(4)查看角色详细信息 openstack role show 角色名或ID(5)删除角色 openstack role remove-user 用户名或ID-project 用户名或ID 角色名或ID5.3 基于命令行进行身份管理操作l通
8、过Keystone身份服务定义的服务服务目录模板(Service catalog template)目录服务的SQL后端l配置使用服务用户的OpenStack服务的基本步骤(1)为所有服务创建一个项目。(2)为每个服务创建用户。(3)将admin角色指派给每个服务用户和项目对。5.3 基于命令行进行身份管理操作l创建服务创建和管理服务和服务用户(1)列出可用服务 openstack service list(2)创建服务 openstack service create-name SERVICE_NAME-description SERVICE_DESCRIPTION SERVICE_TYPE
9、(3)查看某服务的详细信息 openstack service show SERVICE_TYPE|SERVICE_NAME|SERVICE_ID5.3 基于命令行进行身份管理操作l创建服务用户l删除服务创建和管理服务和服务用户(1)创建一个服务用户专用的项目 openstack project create service-domain default(2)为要部署的相关服务创建服务用户 openstack user create-domain default-password-prompt SERVICE_NAME(3)将admin角色分配给用户-项目对 openstack role ad
10、d-project service-user 服务用户名 adminopenstack service delete SERVICE_TYPE|SERVICE_NAME|SERVICE_ID身份服务基础基于Dashboard界面进行身份管理操作基于命令行界面进行身份管理操作通过oslo.policy实现权限管理手动安装和部署Keystone5.4 通过oslo.policy实现权限管理lOpenStack的oslo.policy库用于实现基于角色的权限访问控制(RBAC)。面向公众提供的应用和存储等资源,为外部客户提供服务。最大优点是其所应用的程序、服务及相关数据都存放在公共云端,用户无需做相
11、应的投资和建设。安全性存在一定风险,可用性不受用户控制,存在一定的不确定性。l私有云(Private Cloud)服务不是供公众使用,而是供自己内部人员或分支机构使用。数据安全性、系统可用性、服务质量都可由自己控制。细分为自有私有云(On-Premise Private Cloud)和托管私有云(Hosted Private Cloud)。l混合云(Hybrid Cloud)既面向公共空间又面向私有空间提供服务,可以发挥出所混合的多种云计算模型各自的优势。有助于提供所需的、外部供应的扩展。概述5.4 通过oslo.policy实现权限管理l文件policy.json包含target:rule或
12、alias:definition形式的策略和别名。语法和示例 alias 1:definition 1,alias 2:definition 2,.target 1:rule 1,target 2:rule 2,.5.4 通过oslo.policy实现权限管理l镜像服务的策略配置文件(/etc/glance/policy.json)语法和示例 context_is_admin:role:admin,default:role:admin,add_image:,delete_image:,get_image:,get_images:,modify_image:,publicize_image:ro
13、le:admin,communitize_image:,copy_from:,download_image:,upload_image:,#以下省略身份服务基础基于Dashboard界面进行身份管理操作基于命令行界面进行身份管理操作通过oslo.policy实现权限管理手动安装和部署Keystone5.5 手动安装和部署Keystone创建Keystone数据库(1)以root用户身份使数据库访问客户端连接到数据库服务器。mysql-u root-p(2)创建Keystone数据库(名称为keystone)。MariaDB(none)CREATE DATABASE keystone;(3)对K
14、eystone数据库授予合适的账户访问权限。MariaDB(none)GRANT ALL PRIVILEGES ON keystone.*TO keystonelocalhost IDENTIFIED BY KEYSTONE_DBPASS;MariaDB(none)GRANT ALL PRIVILEGES ON keystone.*TO keystone%IDENTIFIED BY KEYSTONE_DBPASS;(4)退出数据库访问客户端。5.5 手动安装和部署Keystone安装和配置Keystone及相关组件(1)执行以下命令安装所需的软件包。yum install openstack-
15、keystone httpd mod_wsgi(2)编辑/etc/keystone/keystone.conf配置文件。(3)初始化数据库。su-s/bin/sh-c keystone-manage db_sync keystone(4)初始化Fernet密钥库以生成令牌。keystone-manage fernet_setup-keystone-user keystone-keystone-group keystonekeystone-manage credential_setup-keystone-user keystone-keystone-group keystone(5)对Keyst
16、one应用Bootstrap框架执行初始化操作。keystone-manage bootstrap-bootstrap-password ADMIN_PASS -bootstrap-admin-url http:/controller:5000/v3/-bootstrap-internal-url http:/controller:5000/v3/-bootstrap-public-url http:/controller:5000/v3/-bootstrap-region-id RegionOne5.5 手动安装和部署Keystone配置Apache HTTP服务器(1)编辑/etc/htt
17、pd/conf/httpd.conf文件,配置ServerName选项,使其指向控制节点。ServerName controller(2)创建一个到/usr/share/keystone/wsgi-keystone.conf文件的链接文件。ln-s/usr/share/keystone/wsgi-keystone.conf/etc/httpd/conf.d/5.5 手动安装和部署Keystone完成安装(1)启动Apache HTTP服务并将其配置开机自动启动。systemctl enable httpd.service systemctl start httpd.service(2)设置环境
18、变量,配置管理员账户。export OS_USERNAME=admin export OS_PASSWORD=ADMIN_PASSexport OS_PROJECT_NAME=admin export OS_USER_DOMAIN_NAME=Defaultexport OS_PROJECT_DOMAIN_NAME=Defaultexport OS_AUTH_URL=http:/controller:35357/v3 export OS_IDENTITY_API_VERSION=3 5.5 手动安装和部署Keystonel需要将OpenStack项目中的每个组件都注册到其中,使Keystone身份认证组件能够识别这些组件。l每一个服务都需要在Keystone中创建项目、用户和角色并进行关联,然后创建服务目录。l实际上所有的OpenStack服务公用一个项目(通常命名为service或services),所用的角色都是admin,服务(组件)之间的通信要用admin角色。因此首先要创建一个服务用户专用的项目。为后续的服务创建统一的服务项目THANKS