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

思考题 💭

  1. 为什么 Token 要设置过期时间?如果 Token 永久有效会有什么风险?
  2. 在多租户场景下,如何让两个项目共享同一个镜像(Glance)但网络(Neutron)保持隔离?

五、今日总结

项目 内容
组件名称 Keystone
核心职责 身份认证(Authentication)+ 授权(Authorization)
关键概念 User、Project、Role、Token、Service Catalog
类比记忆 游乐园票务中心
明日预告 Nova — 计算服务(虚拟机的"生产车间")

📚 学习提示:Keystone 是 OpenStack 的"大门",理解它后再学其他组件会事半功倍。建议动手实验创建用户和分配权限,加深理解。

results matching ""

    No results matching ""