在使用VirtualBox创建的CentOS上配置OpenStack(身份认证部分)
環境部分的內容還在繼續。
开放堆栈标识(Keystone)
随着对身份验证服务的添加,我们将按照其进行操作。
以下为中文的释义:
说明的引用
OpenStack Identity服务是OpenStack中唯一管理认证、授权和服务目录服务的服务。其他OpenStack服务使用Identity服务作为通用统一API。此外,还可以将OpenStack之外的服务(例如LDAP服务等)提供的与用户相关的信息整合到现有基础设施中。
Identity服务包括以下组件。
– 服务器: 中央服务器通过使用RESTful接口提供认证和授权服务。
– 驱动程序: 驱动程序和服务后端与中央服务器集成。驱动程序用于访问存储在OpenStack外部存储库中的认证信息。这些存储库可能已经存在于部署OpenStack的基础设施中(例如SQL数据库或LDAP服务器)。
– 中间件模块: 中间件模块作为使用Identity服务的OpenStack组件的一部分运行。这些模块在服务请求处理过程中提取用户凭据并将其发送到中央服务器以进行授权。Python Web Server Gateway Interface用于实现中间件模块与OpenStack组件之间的集成。
安装和设置
-
- 前提として,DBと管理トークンを作成する必要がある
# mysql -u root -p して以下の作業を行う。KEYSTONE_DBPASSにはroot++
CREATE DATABASE keystone;
keystoneデータベースの作成
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@’localhost’ IDENTIFIED BY ‘KEYSTONE_DBPASS’;
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone’@’%’ IDENTIFIED BY ‘KEYSTONE_DBPASS’;
keystoneへのアクセス権の付与
# openssl rand -hex 10
管理トークンとして利用するランダム値を生成
結果: 7e229b6bbfda9481cc3f
组件的安装和设置
# yum install openstack-keystone httpd mod_wsgi memcached python-memcached
memcachedは汎用のメモリキャッシュシステム。 データとオブジェクトをメモリ内にキャッシュすることで、DBから読み出しを行う回数を減少させ、DBを用いたWebサイトを高速化するためによく用いられています。だそうです。
memcached起動処理 (memcachedをenableにしてstart)
# vi /etc/keystone/keystone.conf で以下
[DEFAULT]
admin_token = ADMIN_TOKEN # 先ほど生成したトークン 7e229b6bbfda9481cc3f
[database] # DBへのアクセス方法
connection = mysql://keystone:KEYSTONE_DBPASS@controller/keystone # root++
[memcache]
servers = localhost:11211 # memcachedサービスの設定
[token]
provider = uuid # UUIDトークンプロバイダー
driver = memcache # memcachedドライバー
[revoke]
driver = sql # SQL revocationドライバー
[DEFAULT]
#verbose = True # 冗長ロギングを有効にする はとりあえずコメントアウトのまま
Apache HTTP服务器的配置
# vi /etc/httpd/conf/httpd.conf で以下を編集
ServerName controller
# vi /etc/httpd/conf.d/wsgi-keystone.conf で以下をコピペした
httpd起動処理 (httpdをenableにしてstart)
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
<IfVersion >= 2.4>
ErrorLogFormat "%{cu}t %M"
</IfVersion>
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</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
<IfVersion >= 2.4>
ErrorLogFormat "%{cu}t %M"
</IfVersion>
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
</VirtualHost>
Web服务器网关接口(Web Server Gateway Interface,简称WSGI)是Python编程语言中用于连接Web服务器和Web应用程序(或Web应用程序框架)的标准化接口定义。此外,其他编程语言也借鉴了WSGI的思想,开发了类似的接口。
创建服务实体和API端点
终点的解释
OpenStack 使用三种API终点(admin、internal、public)来对应各项服务。默认情况下,管理API终点可对用户和租户进行更改,但公共API和内部API不允许执行这些操作。为了安全起见,在生产环境中,最好将不同类型的用户放置在不同的网络中。例如,公共API网络可以从互联网上访问,以便客户可以管理自己的云。管理API网络将限制在组织内负责管理云基础设施的操作员。内部API网络将限制在运行OpenStack服务的主机上。此外,OpenStack为了扩展性支持多个区域。为了简单起见,在本指南中,我们将在所有终点使用管理网络,并使用默认的RegionOne区域。
-
- 環境変数を設定してopenstackコマンドを使えるようにする
# export OS_TOKEN=7e229b6bbfda9481cc3f
先ほど生成したトークンを使用する
# export OS_URL=http://controller:35357/v3
# export OS_IDENTITY_API_VERSION=3
Identityサービス用のサービスエンティティの作成
# openstack service create –name keystone –description “OpenStack Identity” identity
今回はpublic, internal, adminのエンドポイントを全て同一ネットワークでする
openstack endpoint create –region RegionOne identity public http://controller:5000/v2.0
openstack endpoint create –region RegionOne identity internal http://controller:5000/v2.0
openstack endpoint create –region RegionOne identity admin http://controller:5000/v2.0
OpenStack 環境に追加するサービスごとに、1 つ以上のサービスエンティティー、3 種類の API エンドポイントを Identity サービスに登録する必要がある。
今後追加していくサービスも今やってるのと同様の操作が必要ということになります。
创建项目,用户和角色。
域名: Identity API v3的实体。它是项目、组和用户的集合,用于定义OpenStack Identity实体管理中的管理边界。
-
- adminプロジェクトの作成
# openstack project create –domain default –description “Admin Project” admin
adminユーザの作成
# openstack user create –domain default –password-prompt admin
pass: root++
adminロールの作成
# openstack role create admin
adminロールをadminプロジェクトとadminユーザに追加
# openstack role add –project admin –user admin admin
サービスごとの専用ユーザ用プロジェクトを作成(service)
# openstack project create –domain default –description “Service Project” service
非特権プロジェクト,ユーザ(demo: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
行为验证
-
- 一次認証トークンメカニズムを無効化
/usr/share/keystone/keystone-dist-paste.ini を編集、admin_token_auth、[pipeline:public_api]、[pipeline:admin_api] セクションから admin_token_auth を削除します。
一時的な環境変数を解除
unset OS_TOKEN OS_URL
adminユーザとして認証トークンを要求 (要 adminユーザのパスワード)
openstack –os-auth-url http://controller:35357/v3 –os-project-domain-id default –os-user-domain-id default –os-project-name admin –os-username admin –os-auth-type password token issue
demoユーザとして認証トークンを要求 (demoユーザのパスワード,5000番ポート,非管理APIのみアクセス)
openstack –os-auth-url http://controller:5000/v3 –os-project-domain-id default –os-user-domain-id default –os-project-name demo –os-username demo –os-auth-type password token issue
どちらもちゃんと返ってきたらOK
环境脚本
-
- exportをまとめたやつ
- 今後使っていくことになります。
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=root++
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
- 使うときは source admin-openrc.sh後にopenstack token issue