Idenitity 服务理念:
执行以下功能:
用户管理,跟踪用户以及用户的权限
catalog服务:提供与他们的API catalog 服务
用户(user)
用户表示拥有用户名,密码,邮箱等帐号信息的自然人。
证书(Credentials)
证明资格和权力的东西,如用户名和密码,用户名和API KEY 或者服务本身的认证token
认证(Authentication)
确认用户身份的行为,经过上面描述的“证书”服务确认用户。
令牌(token)
一种认证方式,通过认证后发给连接端。
租户(tenant)
租户可以被理解为一个项目,团队或组织。你必须指定一个相应的租户(tenant)才可以申请OpenStack服务
服务(Service)
通过它用户可以访问资源并执行操作的一个终端。 即完成以上几步后就给一个终端供client使用。
终端(Endpoint)
通过网络访问的一个URL地址,可以获得你想要访问的服务,
角色(Role)
角色代表特定的租户中的用户用户操作权限
六个过程,alice任务请求创建一个虚拟机
alice发送凭据给keystone,keystone返回一个临时创建的tokent和一个通用的目录。
alice请求提供租户的列表,keystone返回一个他的租户的服务列表。
keystone发送给alice带有租房的凭据、租房的服务列表、租户的token
alice去终端连接服务,并提供一个请求的token,终端去问keystone是否是正确的令牌和是否允许使用这个服务
keystone提供“alice的租户允许访问服务,令牌与请求匹配并且这个令牌属于alice”给Service
Service执行服务请求并把执行状态发送给alice
安装identity服务
安装软件包
# apt-get install keystone
修改配置文件/etc/keystone/keystone.conf
使用数据库存储数据,我们改一下他的连接方式,默认使用sqlite我们要进行更改
connection = mysql://keystone:stack@controller/keystone
给keystone创建一个keystone数据库
mysql> create database keystone;
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'stack’;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'controller' IDENTIFIED BY 'stack';
4、同步一下到数据库
# keystone-manage db_sync
创建了一些空表
6、生成一个token,并放到配置文件中
/etc/keystone/keystone.conf
重启keystone服务
# service keystone restart
定义用户、租户、角色
1、定义环境变量
由于我们并没有用户,所以需要创建用户,但这本身就需要认证,所以我们增加怎么环境变量os_server_token os_service_endpoint
# export OS_SERVICE_TOKEN=9f9c6ce6e5fcc5437443
# export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0
创建一个admin和service的租户
# keystone tenant-create --name=admin --description="Admin Tenant"
# keystone tenant-create --name=service --description="Service Tenant"
创建一个管理员用户为admin并设置一个密码并指定电子邮件,这是第三个密码了。记下来。
# keystone user-create --name=admin --pass=openstack [email protected]
创建一个管理员用记的角色admin,注意默认使用admin角色将允许大多数的服务。创建的角色应该映射到openstack服务的policy.json文件名中指定的角色
# keystone role-create --name=admin
添加角色用户租户的对应关系
# keystone user-role-add --user=admin --tenant=admin --role=admin
我们看下数据库
定义服务与API的端点
创建一个服务,服务ID是随机生成的
# keystone service-create --name=keystone --type=identity --description="Keystone Identity Service"
通过返回的服务ID指定身份证服务的API端点,你应该提供公共的API,内部API和管理API的URL。
煮酒品茶:注意填写你自己的ID号
# keystone endpoint-create --service-id=0bde195742b54963b4478de9232b9465 --publicurl=http://controller:5000/v2.0 --internalurl=http://controller:5000/v2.0 --adminurl=http://controller:35357/v2.0
你安装了其它服务时,通过这个指定你的服务。
验证一下:
# unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
# keystone --os-username=admin --os-password=openstack --os-auth-url=http://controller:35357/v2.0 token-get
---------------------------------------
如果发现500错误
查看日志:
更改配置文件:
好了,需要重启下keystone
====================================
重启下:
# service keystone restart
我们设置环境变量,就不需要每次都填验证参数了。
# export OS_USERNAME=admin
# export OS_PASSWORD=openstack
# export OS_TENANT_NAME=admin
# export OS_AUTH_URL=http://controller:35357/v2.0
查看一下token,事实上他的ID也太长了吧。
查了一下表:
更多可以看用户租户角色:
http://docs.openstack.org/havana/install-guide/install/apt/content/keystone-users.html
本文出自 “煮酒品茶” 博客,请务必保留此出处http://cwtea.blog.51cto.com/4500217/1347938