学习openstack的系列文章-keystone
- openstack 架构
- Keystone 基本概念
- Keystone 工作流程
- Keystone Troubleshooting
1. openstack 架构
2. keystone 基本概念
- User: 指代任何使用 openstack 的实体,可以是真正的用户,其他系统或者服务;
- Credentials : User 用来证明自己身份的信息,可以是 用户名/密码 , Token, API Key 等;
- Authentication: 认证,Keystone 验证 User 身份的过程;
- Token: 由数字和字母组成的字符串,User 成功 Authentication 后,由 Keystone 分配给 User;
- Project : 用于将 openstack 的资源(计算、存储和网络)进行分组和隔离;
- Service: 包括Compute (Nova)、Block Storage (Cinder)、Object Storage (Swift) 、 Image Service (Glance)、Networking Service (Neutron) 等;
- Endpoint: 每个 Service 都会提供若干个 Endpoint, User 通过 Endpoint 访问资源和执行操作, Endpoint 是一个网络上可访问的地址,通常是 URL 。命令 openstack catalog list 可查看各Service 的 Endpoint:
- Role:Keystone 借助 Role 来实现 Authorization (鉴权)的,所谓 Authorization 即解决的是“你能干什么?”的问题,Keystone 定义 Role:
可以为 User 分配一个或多个 Role: Horizon Indentity -> Project -> Manage Members
Service 决定每个 Role 能做什么事情,每个Service 通过各自的 policy.json 文件对 Role 进行访问控制,Neutron 服务 /etc/neutron/policy.json 文件的示例:
3. Keystone 工作流程
3.1 登录
openstack dashboard 中输入用户名/密码 , Keystone 验证返回 Token。
3.2 显示操作界面
顶部显示 admin 可访问的 Project 为 “admin” 和 “demo”,其实在此之前发生了一些事情:
同时在 dashboard 中可以访问 Image、Network等各个服务,这是因为 admin 已经从 Keystone 拿到了各 Service 的 Endpoints:
3.3 显示 image 列表
单击 “Images” 会显示 image 列表,这一过程背后发生了一些事:
- admin 将请求发送到 Glance 的 Endpoint:
2. Glance 向 Keystone 询问 admin 身份的有效性:
3. Glance 查看 /etc/glance/policy.json,判断 admin 是否有查看 image 的权限,权限判定通过,Glance 将 image 列表发给 admin:
4. Keystone Troubleshooting
openstack 排查问题的方法主要通过日志。 Keystone 的日志保存在 /var/log/keystone 目录下:
openstack 的日志格式: <时间戳><日志等级><代码模块><Request ID><日志内容><源代码位置>
时间戳:日志记录的时间,包括 年 月 日 时 分 秒 毫秒;
日志等级: INFO WARNING ERROR DEBUG等;
代码模块: 当前运行的模块Request ID 日志会记录连续不同的操作,为了便于区分和增加可读性,每个操作都被分配唯一的Request ID,便于查找;
日志内容: 日志的主体,记录当前正在执行的操作和结果等重要信息;
源代码位置: 日志代码的位置,包括方法名称,源代码文件的目录位置和行号;
上述 log 的意思是 GET 、POST 请求 endpoint 的 token, 具体分析见这篇博文 。
参考文章: