核心组件—keystone身份认证

云计算openstack核心组件——keystone身份认证服务
一、Keystone介绍:
keystone 是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证、令牌的发放和校验、服务列表、用户权限的定义等等。云环境中所有的服务之间的授权和认证都需要经过 keystone. 因此 keystone 是云平台中第一个即需要安装的服务。
作为 OpenStack 的基础支持服务,Keystone 做下面这几件事情:
1、管理用户及其权限
2、维护 OpenStack Services 的 Endpoint
3、Authentication(认证)和 Authorization(鉴权)
学习 Keystone,得理解下面这些概念:
 
一、搭建环境及安装
机器:3台
1:controller:3块网卡(集群网,租户网,外网)
2:compute:2块网卡(集群网,租户网)
3:storage:1块网卡(集群网)
 
设置主机名,彼此域名解析,无密钥登陆
 
controller节点:
服务列表:
# openstack catalog list
 
2.1、安装openstack客户端软件包及openstack-selinux软件包(openstack-selinux是自动管理openstack安全策略的软件CentOS默认启用SELinux)
其他源执行:
# yum install centos-release-openstack-ocata
# yum install https://rdoproject.org/repos/rdo-release.rpm
学校源执行:
# yum install python-openstackclient -y
# yum install openstack-selinux -y
 
2.2、安装数据库,并创建openstack配置文件,初始化
# yum install mariadb mariadb-server python2-PyMySQL -y
更改配置文件:/etc/my.cnf.d/openstack.cnf(创建一个[mysqld]节,并将绑定地址键设置为控制器节点的管理IP地址,以允许其他节点通过管理网络访问。设置额外的键来启用有用的选项和UTF-8字符集:)
[mysqld]
bind-address = 192.168.149.33
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096(最大连接数量)
collation-server = utf8_general_ci
character-set-server = utf8
 
设置数据库开机自启:
# systemctl enable mariadb.service
# systemctl start mariadb.service
初始化数据库:
# mysql_secure_installation
 
2.3、安装rabbitmq服务,创建openstack用户
安装rabbitmq服务:
# yum install rabbitmq-server -y
设置rabbitmq开机自启:
# systemctl enable rabbitmq-server.service
# systemctl start rabbitmq-server.service
建立openstack用户:(此处admin是密码)
# rabbitmqctl add_user openstack admin
给予权限:(设置为管理员)
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"(给权限)
# rabbitmqctl set_user_tags openstack administrator(设置为管理员)
 
2.4、安装memcached,修改配置文件写入主机名(服务的标识服务身份验证机制使用Memcached缓存令牌。memcached服务通常在控制器节点上运行。对于生产部署,我们建议启用防火墙、身份验证和加密的组合来保护它。)
安装缓存服务:
# yum install memcached python-memcached -y
修改memcached配置文件:/etc/sysconfig/memcached(将服务配置为使用控制器节点的管理IP地址。这是为了让其他节点能够通过管理网络访问:)
 
设置memcached开机自启:
# systemctl enable memcached.service
# systemctl start memcached.service
 
配置
1、进入数据库,创建keystone数据库及keystone用户:
# mysql -u root -p123
# CREATE DATABASE keystone;
创建完后赋予权限并允许本地登录及远程登录:(KEYSTONE_DBPASS为密码)
# GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \IDENTIFIED BY 'KEYSTONE_DBPASS';
# GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \IDENTIFIED BY 'KEYSTONE_DBPASS';
 
2、安装keystone服务:
# yum install openstack-keystone httpd mod_wsgi -y
修改keystone配置文件前的准备:
修改前先备份 # cp keystone.conf keystone.conf.bak
备份完毕后更改静态解析名称 # vim /etc/hosts
 
更改服务器的名称:(分别在三台虚拟机上)
# hostnamectl set-hostname controller/compute/storage
更改配置文件:
# vim /etc/sysconfig/memcached
重启 # systemctl restart memcached
 
修改keystone配置文件:/etc/keystone/keystone.conf(在[database]部分,配置数据库访问)
数据库的参数及token的参数:
# vim /etc/keystone/keystone.conf
[DEFAULT]
[assignment]
[auth]
[cache]
[catalog]
[cors]
[cors.subdomain]
[credential]
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
[domain_config]
[endpoint_filter]
[endpoint_policy]
[eventlet_server]
[federation]
[fernet_tokens]
[healthcheck]
[identity]
[identity_mapping]
[kvs]
[ldap]
[matchmaker_redis]
[memcache]
[oauth1]
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_messaging_zmq]
[oslo_middleware]
[oslo_policy]
[paste_deploy]
[policy]
[profiler]
[resource]
[revoke]
[role]
[saml]
[security_compliance]
[shadow_users]
[signing]
[token]
provider = fernet
[tokenless_auth]
[trust]
 
4、导入keystone数据库中的表:
同步数据库:
# su -s /bin/sh -c "keystone-manage db_sync" keystone
# mysql -u root -p123
# show databases;
# use keystone;
# show tables;
 
5、创建keystone用户和keystone组
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
 
6、创建admin用户的密码,并宣告keystone服务端点:
# keystone-manage bootstrap --bootstrap-password admin \
  --bootstrap-admin-url http://controller:35357/v3/ \
  --bootstrap-internal-url http://controller:5000/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne
 
7、修改apache服务配置文件:/etc/httpd/conf/httpd.conf
配置文件中搜索/ServerName
改:ServerName controller
 
 
 
8、创建keystone服务调用httpd的模块配置文件的软连接
# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
 
 
启动apache服务并开机自启:
# systemctl enable httpd.service
# systemctl start httpd.service
创建文件并编辑环境变量:# vim openrc
export宣告一个变量:
$ 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=http://controller:35357/v3
$ export OS_IDENTITY_API_VERSION=3
末行模式下输入,去掉$:%s/$ //g
宣告环境变量:(每次用openstack命令之前需要宣告环境变量)
# source openrc
 
9、创建service项目:
# openstack project create --domain default \
  --description "Service Project" service
查看keystone项目、用户、服务端点、角色列表:
# openstack project list
# openstack user list
# openstack endpoint list
# openstack role list
 
10、创建demo项目:
# openstack project create --domain default \
  --description "Demo Project" demo
# openstack user list
 
11、创建demo用户:
# openstack user create --domain default \
  --password-prompt demo
# openstack user list
 
12、创建user的角色
# openstack role create user
 
13、把demo用户设置为user角色
# openstack role add --project demo --user demo user
 
# source openrc
# unset OS_AUTH_URL OS_PASSWORD(出于安全原因,禁用临时身份验证令牌机制:
取消设置临时OS_AUTH_URL和OS_PASSWORD环境变量)
# openstack --os-auth-url http://controller:35357/v3 \
  --os-project-domain-name default --os-user-domain-name default \
  --os-project-name admin --os-username admin token issue(作为管理用户,请求一个身份验证令牌)
# openstack user list
 

posted @ 2020-05-10 17:24  乄Keyboardman丶  阅读(514)  评论(0编辑  收藏  举报