OpenStack 每日学习课程 — 2026-04-02
今日主题:Keystone — 身份认证与授权中心
一、核心概念(生活化比喻)
想象 Keystone 是一个大型游乐园的票务中心 🎫:
- 游客 = 用户(User)
- 年卡/门票 = 凭证(Credentials,密码或 API Key)
- 门票验证 = 身份认证(Authentication)
- 游乐项目权限 = 授权(Authorization,你能玩什么项目)
- 项目分区 = 项目/租户(Project/Tenant,不同的游乐区域)
- 角色卡 = 角色(Role,VIP 会员、普通游客、工作人员)
没有 Keystone,OpenStack 就像没有门禁的游乐园——谁都能进,谁都能操作,一片混乱。
二、工作原理
核心组件
| 组件 | 功能 | 类比 |
|---|---|---|
| Identity | 管理用户、组、凭证 | 游客登记系统 |
| Token | 签发临时访问令牌 | 当日有效门票 |
| Catalog | 记录所有服务地址 | 园区导览地图 |
| Policy | 定义权限规则 | 各项目的游玩规则 |
| Assignment | 角色与项目的绑定 | 年卡权限分配 |
协作流程(用户登录创建虚拟机)
1. 用户带着用户名/密码 → Keystone
2. Keystone 验证身份 → 发放 Token(门票)
3. 用户持 Token 请求 Nova(创建 VM)
4. Nova 拿着 Token 问 Keystone:这人能创建 VM 吗?
5. Keystone 确认权限 → Nova 执行操作
关键点:Token 是"临时通行证",默认 1 小时过期,避免长期凭证泄露风险。
三、实际应用场景
场景 1:多租户云环境
公司 A 和公司 B 共用一套 OpenStack 集群。Keystone 通过 Project 隔离资源,确保 A 看不到 B 的虚拟机,B 也碰不到 A 的网络。
场景 2:分级权限管理
- 云管理员:能创建项目、分配配额
- 项目管理员:管理自己项目的资源
- 普通用户:只能操作自己的虚拟机
- 审计员:只读权限,查看日志
场景 3:与外部系统集成
Keystone 支持 LDAP/AD 对接,企业员工用公司统一账号登录 OpenStack,无需额外创建账户。
四、动手练习
练习 1:查看当前用户和项目
# 加载环境变量后执行
openstack token issue # 获取 Token
openstack project list # 查看项目列表
openstack user list # 查看用户列表
练习 2:创建新用户并分配角色
# 创建项目
openstack project create --description "开发测试环境" dev-project
# 创建用户
openstack user create --password-prompt dev-user
# 分配角色(将 dev-user 设为 dev-project 的管理员)
openstack role add --project dev-project --user dev-user admin
思考题 💭
- 为什么 Token 要设置过期时间?如果 Token 永久有效会有什么风险?
- 在多租户场景下,如何让两个项目共享同一个镜像(Glance)但网络(Neutron)保持隔离?
五、今日总结
| 项目 | 内容 |
|---|---|
| 组件名称 | Keystone |
| 核心职责 | 身份认证(Authentication)+ 授权(Authorization) |
| 关键概念 | User、Project、Role、Token、Service Catalog |
| 类比记忆 | 游乐园票务中心 |
| 明日预告 | Nova — 计算服务(虚拟机的"生产车间") |
📚 学习提示:Keystone 是 OpenStack 的"大门",理解它后再学其他组件会事半功倍。建议动手实验创建用户和分配权限,加深理解。