基本概念
Keystone的作用:
- 管理用户及其权限
- 维护OpenStack的endpoint
- Authentication(认证)和 Authorization(鉴权)
一个用户(user)可以有多个角色(role),user 可以是用户也可以是其他服务,user 可以属于多个 project,project 用于将 OpenStack 的资源进行隔离。
user 访问 OpenStack 时,Keyston 会对其进行验证,它使用的是密码这个时候,然后 Keystone 会给它发一个 Token 作为后续访问的 Credentials。
Credentials 包括:
- 用户名/密码
- Token
- API Key
- 其他高级方式
Token 是由数字和字母组成的字符串,User 成功 Authentication 后 Keystone 生成 Token 并分配给 User。
- Token 用做访问 Service 的 Credential
- Service 会通过 Keystone 验证 Token 的有效性
- Token 的有效期默认是 24 小时
每个service会提供若干个Endpoint,service通过endpoint暴露自己的API。
使用以下命令查看endpoint:
1 | source devstack/openrc admin admin |
使用以下命令查看角色:
1 | openstack role list |
service通过 /etc/nova/policy.json 对 role 进行访问控制。
Troubleshoot
OpenStack排查问题主要通过日志。
Keystone 主要有两个日志,一个是 keystone.log,一个是 keystone_access.log,在 /var/log/keystone 中。
(在newton版本中,我只看到了第一个日志。)
如果需要得到最详细的日志信息,可以在 /etc/keystone/keystone.conf 中打开 debug 选项。