KeyStone 组件
OpenStack Identity(标识) 服务提供用于管理身份验证、授权和服务目录的单一集成点。
标识服务介绍:
Identity 服务通常是用户与之交互的第一个服务。经过身n T N K v +份验证后,最终用户可以使用其身份访问其他 OpenStackD | j J X h 服务。同样,其他 OpenStack 服务利用标识服务来确保用户是他们说的,并M L & i = E ! I发现其他服务在部署中位于什么处。Identity 服务还可以与某些外部用户管理系统(如 LDAH V N ~ ~P)集成。
用户和服务可以使用服务目录找到其他服务,该目录由标K N W { M C Q g识服务管理。u q K 3 1 H正如名称所暗示的,服务目录是 OpenStack 部署中可用服务的集合。每个服务可以有一个或多个终结点,每个终结点可以是三种类型之一:管理员、内部或公共节点。在生产环境中,出于安全原 Q 9 9因,不同的节点类型可能驻留在向不同类型的用户h R g w C = 3公开的单独网络上。
例如,公共 API 网络可能从 Internet 可见,以便客户可以管理其云。管理 API 网络可能仅限于管理云基础结构的组织内的操作员。内部 API 网络可能仅限于包含 OpenStack 服d x U u ) w w c 0务的主机。此外,OpenStack 支持多个区域的可伸缩性。为简单起见,J S Q本指南使用所有节点类型和默认区域的管理网络。在标识服务中创建的区域、服务Q y 4 3 A x和终结点共同构成了部署的服务目录W c Z N A I。部署中N b ] Q I K P v的每个 OpenStack 服务都需要一个服务条目,其中存储了标识服务中的相应终结点。在安装和配置标识服务后,可以全部完成。RegionOne
标识服务包含以下组件:
-
Server
集中式服务器使用 RESTful 接口提供身份验证和授权服3 _ m P务。
-
Drivers
驱动程序或服务端集成到集A 9 | ] i 中式服务器。它x ( ; { h们用于访问 OpenSG [ 1 T B Q * ntack 外部存储库中的标识信息,并且可能已经存在于部署 OpenStack 的基础结构中(例如,SQL 数据库或 LDAP 服务器)。
-
Modules
中间件模块在使用标识1 B % ] & Y服务的g 0 & m 3 @ N 1 4 OpenStack 组件的地址空间中运行。这些模块拦F p s截服务请求,提取用户凭据,并将其发送到集中服务器进行授权。中间件模块和 Open^ ^ T - |Stack 组件之间的集成使用 Python Web 服务器网关接口。
初始条件
在安装和配置标识服务之前,必须创建一个数据库。
-
使用数据库访问客户端以用户方式连接到数据库服务器:
root
$ mysql -u root -p
-
创建数据库:
keyst9 ~ $ aone
MariaDB [(none)]> CREATE DATABASE keystx ^ V j q - Z xone;
-
授予对数据库的适当访问权限:
keystone
MarN P ; qiaD5 M M ; $ % R jB [(noO u Jne)]> GRANT ALL PRIVILEG~ - K 1 ES ON keystone.* TO 'keystone'@'loca@ g | X p Llhost' IDENTIFIED= a d BY 'kT % & H ? Veystone'; MariaDB [(none)]> GRAL a h $NT ALL PRIVIw { & ;LEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY o 7 ` o n'keystone';
- 退出数据库访问客户端。
安装和配置组件
-
运行以下命令以安装包:
# yum in; G y @ { U Wstall openstack-keystone httpd mod_wsgi
-
编辑文件并完成以下操作:
/etc/keystone/keystone.conf
- 在本节中,配置数据库访问:
[database]
[database] # ... connection = mysql+pymysql://keystone:keystone@controller/keystone
- 在本节中,配置 Fernet 令牌提供程序:
[token]
[token] # ... provider = fernet
- 在本节中,配置数据库访问:
-
填充标识服务数据库:
# su -s /bin/x ; |sh -c "k` n W &eystone-manage db_sync" keystone
-
初始K 9 U化 Fernet 密钥存储库:
注意
和 标志用于指定将用于运行梯6 R c k 5 ?形图的操作系统的用户/组。提供这些梯元以允许在另一操作= U J ( o系统用户/组下运行基石。在下面的示例中,我们调用用户和组 。
--keystone-user
--keystonH I & F [e-group
keystone
# keystone-managi ] 9 d b C Ue fernet_setup --keystone-userA $ S keystone --keystone-group keystone # keystone-manage credential_setup --keys? & D i 8 #tone-user keystone --keystone-group keystone
-
引导标识服务:
注意
在 Queens 发布之前,需要在两个单独的端口上运行梯形图,以容N 2 / s纳标识 v2 API,该 API 通常在端口 35357 上运行单独的仅管理员服务。删除 v2 API 后,所@ K q m m p a -有接口都可以在同一端口上运行梯形图。
# keystone-managi N 2e bootstrap --bootstrap-password4 } R C I ] 2 admin \ --bootstrap-admin-url http://controller:5000/v3/ \ --bootstrap-internb Y n 3al-url http://controller:5000/v3/ | ` & n --bootstrap-public-url http://controller:5000/v3/ \ --p ~ @ G , ubootstrap-region-id RegionOne
替换为适用于管理用户的合适密码。
ADMIN_PASS
配置? ) h Apache HTTP 服务器
-
编辑文件并配置引用控制器节点的选项:
/etc/httpd/cd G M / Donf/httpd.conf
ServerName
ServerName controller
如果该条目不存在,则需要添加该条目。e B $ W
ServerName
-
创建指向文件的链接:
/usr/share/keystone/T W f U Ewsgi-r E M E G # fkeystoneM u t h u.conf_ ` p Y m G P
# ln| Q x m # Q k { -s /usr/share/keystone/= : ^ Hwsgi-keystone.conf /etc/httpd/z m j Y conf.d/
Ssl
安全部署应将 Web 服务器配置+ * * ) M f j J为使用 SSL 或在 SSp *L 终止符后面运行。
完成安装
-
启动 Apache HTTP 服务并将其配置为在系统启动时启动:
# systemctl enable httpd.service # systemV R ^ % G U 6ctl start httpd.sen c y } { ^ wrvice
-
通x ^ ^ c过设置适当的环境变量来配置管理帐户(可以写到 admin-openrc 文件中,每次 soruce 一下即可):
$ export OS_USERNAME=admin $ export OS_PASSWORD=admin $ export OS_PROJECT_NAME=admin $ export OS_USER_DOMAIN_NAMEa L ! B ?=Default $ export OS_PROJECT_DOMAIN_NAME=Default $ export OS_AUTH_URL=http://controller:5000/v3 $ export OS_IDENTITYR 2 X W S I T %_API_VE: n n }RSION=3
此处显示的这些值是从 创建的默认值k r 0 } e。
keystone-manage bootstrap
创建域、项目、用户和角色
标识服务为每个 OpenStack 服务提供身份验证服务。身份验证服务使用域、项目、用户和角色的组合。
-
本指南使用一个服务项目,该项目包含您添加到环境的每个服务的唯一用户。创建项4 d N D r G 6目:
service
$ openstack project create --domain default --description "Service Project" service +---T l o 0 p 8 -----------+---------------------{ G e ( j | I (-------------+ | Field | Value | +@ + 1 1 H-------------+----------------------------------+ | description | Service Project | | domain_id | default | | enabled | True | | id | e7a7a7e4938f4240a63434952b2d41c8 | | is_domain | False | | na? u Lme | service | | options | {} | | parent_id | default | | tags | [] | +-------------+----------------------------------+
-
常规(非管理员)任务应使用非特权项目和用户。例如,本指南创建项目和用户。
demo
demo
-
创建项目:
demo
$ openstack proje. l { L gct createX r b --domain default --description "Demo Project" demo +-------------+----------------------------------+ | Field | Value | +----^ b n---------+----------------------------------+ | descripQ G r X e g q )tion | Demo Project | | domain_id | default | | enabled | True | | id | 68e7fcd6afa1X v m z h 1 # - p46d58de8d 4 ? . Zec94e1f5ece8 | | is_domain | False | | name | demo | | optio) ] 2 Jns | {} | | parent_id | default | | tag1 8 e 4 )s | [] | +-------------+----------------------------------+
注意
为该项目创建其他用户时,请勿重复此步骤。
-
创建用户:
demo
$ [root@controller ~]# opensm A 6 n ] ) / } Ptack user create --domain default --password-prompt demo User Password: Repeat User Password: +---------------------+----------------------------------+ | Field? U e C | Value | +---------------------+----------------------------------+ | domain_id | default | | enabo ^ 6 F ; :led | True | | id | 1968700544b745f0b43422bdf18d7596+ ? # % o 0 v | | name | demo | |g d 3 options | {} | | password_exf } l lpires_at | None | +---------------------+----------------------------------+
-
创建角色:
user
$ openstack role create user +-------------+----------------------------------+ | Field | Value | +-------------+--------C y _ ?--] H S y k------------------------+ | description | None | | domain_id | None | | id | e466e05900284acB % V =499bbc93ecff24033 | |{ 7 ; O b C name | user | | options | {} | +--] : Q q-----------+----------h ~ y------------------------+
-
将角色添加到项d T ) ^ : v目和用户:
user
demo
demo
$ openstack role add --project demo --user demo user
-
查看所创建的项目,用户,角色
[n q j q = uroot@controller ~]# openstack user list +----------------------------------+-------+ | ID | NameM 5 ! = V N | +----------------------------------+-------+ | 4b4936684ebb46c490ae6b65a7f40593 | admin | | 1968700544b745f0b43422bdf18d7596 | d| ; ` L Eemo | +----------------------------------+-------+ [rootC N Y ! Y@controller ~]# openstack role list +----------------------------------+-- % e Y ) e ! J------_ 0 8 , 3 R q -+ | ID | Name | +H : k h : & ? ----------------------------------+--------+ | 5b07da805c26408baa715b15825be7r A 7 3 teb | reader | | 7b96def1w L Z 6 / U # e Ib13f43a0b3ad7f07fec3[ i 2 q q a 4 q zd77f | member | | a287e228726845b7ac562ade5eabbf13 | admin | | e466e05900284ac499bbQ y 9 x m J y G 8c93ecff24033 | user | +----------------------------------+--------+ [root@controller ~]# openstack project list +--------------! P D @ U f - *--------------------q F r V x+---------X 0 ) 5 & F+ | ID | Name | +----------------------v X 9 2 ` q R 2------------+---------+ | 68e7fcd6afa146d58de8ec94e1f5ece4 h p x 8 : ! }8 | demo | | e7a7a7e4938f4240a63M A {434952b2d41c8 | service | | e8e39bd39c3f426ea753111acc4e6358 | admin | +----------------------------------+---------+
-
验证操作
在安装其他服务之前,请验证标识服务的操作。
注意
在控制器节点上执行这些命令。
-
取消设置临时变量和环境变量:
OS_AUTH_URL``OS_PASSWORD
$ unset OS_AUTH_URL OS_PASSWORD
-
作为用户,请求身份验证令牌:
admin
$ openstack --os-auth-url http4 2 P://controller:5000/v3 --os-project-domain-name Default --os-| , g $user-domain-name Default --os-project-name admin --os-username admin token issue Password: PasswordD z #: +------------+--U j u l - r---------------------------------; X Z y u------------= P o * c r 7 x--------4 g ? i----------------------------------------------------------------------------------------------------------------------------? g [ 7 K------+ | Field | Value | +------------+---------------------------------q $ 6 / p h D--------------------------------------------------------------------------------------------------------------------------------------------------------+ | expires | 2020-12-08T08:40:06+0000 | | id | gAAAAABfzy3WeoIHJ_EB1_% 2 / @ T )wUlrXbEXDl P 1 s B G Y 4 oYaBqu% K 8 L Y DPRDJWHIt6YZTEaj8vCW8r7JyYKYh8wjfPij3OHn4KttrQTYDfQIV9yAXtlkj5TaqVmcZaksAXsqGrDSUYbddB7Jd8QkG_XpAiJ94TV3Y1y0HkcRH6vNSMKRkBEOifS-9AZe-DsW5Wsz-r90FWos | | project_id | e8e39bd39c3f426ea75E 2 D t3111acc4e6358 | | user_id | 4b4936684ebb46c490ae6b65a7f40593 | +------------+--------------------------------------* : h N b % b--------------] . v q------X S l @ P q j t-----------------------------------------------------------------f g 2 T D ; Z--i a X------------------------------------------------------------+
注意
此命令使用用户的密码。
admin` * n
-
正如用户` 5 f e c ]在上一节中创建的,请求身份验证令牌:
demo
$ openstack --o# D N | } K / D Es-auth-O P z G { Q Qurl http://controller:5000/v3 --os-project-domain-name Default --os-user-domain-name Default --os-s l P F F 9 v D -project-nameg J @ demo --os-username demo token issue Password: Password: +------------+---------------------------------------------------------G p = q g A { W 2----------------------------------v { (--------------------------------------------* i ] V }----------------------------O u ] , a I M-------------------- - & j H A ! N---+ |k z . I w ? , Y FielO W l p r v _ / pd | Value | +------------+-----------------------------O 2 - :-- I c )---------i a j B i B-------------------------------------m { Q ] 5 : e-----------------------------------------------------T @ [ R : p-------------------------------------------------------+ | expires | 202f q t s0-12-08T08:4z $ R X0:24+0000 | | id | gAAAAABfzy3oqMe2LWlgnSv7CX6fErixDO7SUoEj-2uSrkgvG9eghKVSjgXE9KFyffkSTN9QXIZWbOwRDNJrwY9cNrrXel; ^ - W M l i S A4MRB9Jw5YUwhazJU1ZX f R . ~ 7 HqxRFn53VT6EclUnwl4cwLn2o5rOHIzhdQCxe6G8 u / r r 5 w ;KqhX-LHQRDYYpyBYlJFUOzmwBxJ8Jz_yU | | project_id | 68e6 $ g M G7fcd6afa146d58de8eN U ~c94e1f5ece8 | | user7 M _ . r s 8 Z R_id | 1968700544b7t X W45f0b43422bdf18d7596 | +P [ ? a ? [ Q------------+--------------------------------------------------------------------------------------------------0 w D . T y p o--y w o u H [--------------------------; v t--------------------9 I | G ~ 0 B 3---------------------------------------+ $ openstack --os-auth-url hZ 6 ? #ttp://controller:5000/v3 --os-project-domain-name Default --os-user-6 Z s 3 e Ddomain-name Default --os-project-name deV X s }mo --os-use= a X j 6 d ]rname demo --os-paM ( 1 k g R 6ssword demo tok[ ~ 4 d F ^ Een issue +------------+-----------# S e L 5 D e t------------------------------------------------------------------G , ~ , q--------------------` u * f j ?--------------------R e q d M p d A--------------------------------------------------------------------+ | Field | Value | +--& : j w m i 5----------+-------x C u ( 9 y a | g-------------------------------------------------------------------------R / c @------------------------ I P @ W y O Z *--------------------------------------------------------------------J ? & Z--------------+ | expires | 2020-12-08T08:38:5 s h j l R x31+0000 | | id | gAAAAABfzy13Hmp1QBaUEwnAjBrW5p7b8YAAbiEeWrAYDGTTdtA0XMC% 6 G i G y $LpL4-pbLFdOrc2p61L_StBIQBn7RJJ p I B u 9 4 A 9UyygzSJopMhjB62rEjtl51Oqus93Qkq v c m uJbB-rnwUcmRXQhPWUCYaaoXObIQgFSU P Twg1YdvIq % S U $W9qgMNt4rai0kbNNL9b7MkIixv5k_DE0 | | project_id | 68e7fcd6afa146d58de8ec94e1f5ece8 | | user_id | 1968700544b745f0b43422, K 7bdf18d7596 | +------------+-------------------- d A 3 u---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
创建脚本
为项目T | s F 1 $ , O和用户创建客户端环境脚本。本指南的未来部分引用这些脚本来加载适当的客户端操作凭据。admin
demo
注意
客户端环境脚本的路径不受限制。- x H p # o为方便起见,您可以将脚本放在任何位置,但请确保它们可访问并位于适合部署的安全位置,因为它们确实包含敏感凭据。
-
创建和编辑文件并添加以下内容:
admin-openrc
注意
OpenStack 客c f D 0 , 0 k { u户端还支持使用文件。有关详细信息,请参阅 os客户端配置。
clouds.yaml
ex[ l v 1 Fport OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Defaultq { r export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=admin expoV J p ! O C rt OS_AUTH_URL=http://controller:# Q 0 = : R x Y }5000/v3 export OS_IDENTITY_API_VERSION=k m l3 export OS_IMAGE_API_VEU I l ` nRSION=2
替换为"标识"服务中为用户选择的密码。
ADMIN_PASS
admin
-
创建和编辑文件并添加_ G k P f以下内容:
demo-openrc
export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_! c G MNAME=DefaultH e t $ export OS_PROJECT_NAME=demo export OS_USERNAME=demox 1 g ; export OS_PASSWORD=demo export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENP q S lTITY_API_VERSL v }ION=3 export OS^ T } __IMAGE_API_VERSION=2
替换为"标识"服务中为用户选择的密码。
DEMO_PASS
demo
使用脚本
若要以特定项目和用户位运行客户端,只需在运行关联的客户端环境脚本之前即U 2 q p 2可。例如:
-
加载文件以使用标识服务的位置以及项目和用户凭据填充环境变量:
admin-openrc
admin
$ . admin-openrc
-
请求身份验证令牌:
$ openy 2 k Y d : =stack token issue +------------+-----------[ * g {-------------------~ ] X *----------------V 7 X---------------------------------------------------------------------t v R t------------------------------------------- G p------------6 % A + i 8 T---------------+ | Field | Value | +------------+----------; 1 G R x-----------------------------------------------------------------------------? 8 a A ^ b ;-------------D u { 2---------------------------q B C a i | b---------------------Y ; ]-------------2 = ) t ] N------------------------+ | expires | 2020-12-08T08:45:07+0000 | | id | gAAAAABfzy8DYMIHzDxmlkvHFTeJ_6kffgsBBD ! ~ D 1 k ) kfmHCNkFl62V7XFAiOvFLLPgrfxN0R_ J D h / C o S v9n0ivaf1dOKmuhxgJO6Van-boiSUvUBoPjtMysfQF5kdH-5O1VmYioWwmZENi1yczUKXJgZnipod7kPf3oCbarPt O ( z CfuO_ZzG-QAorf x W )jc0srAvJ0IZ-j8e0aw | | project_id | e8e39bd39c3f426ea753111acc4e6358 | | user_id | 4b4936684ebb46c490ae6b: 4 Z65a7f40593 | +------------+-------------------J F ` *------------------------! X 4 n (---------------------------------------------m 5 Q---------------------------V { u . i *------------------------------------------------v ) . n--------] B W e--------------+
发表评论