Keystone 组件

本文详细介绍OpenStack中Keystone组件的配置流程,包括修改配置文件、创建数据库、启动服务等步骤,以及如何通过命令行进行用户管理和权限分配,适合初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenStack专题链接


Keystone组件提供统一的完整的OpenStack身份验证,服务目录,令牌和访问策略服务。其数据源可以来自SQL、LDAP、Key/Value。大多数使用者会采用定制化的Keystone认证服务,本博客后续将提供一个定制化开发实例。


Keystone服务的配置流程:

  1. 修改配置文件
    // debug和verbose两项建议设置为True,以便保存更多的详细信息
    # vi /etc/keystone/keystone.conf
    admin_token = <your token>
    debug = True
    verbose = True
    connection = mysql://<dbuser>:<passwd>@<dblink>/keystone
  1. 创建Keystone数据库,并建立表结构
    # mysql -uroot -p -e "CREATE TABLE keystone"
    # mysql -uroot -p -e "GRANT ALL PRIVILEGES ON keystone.* TO '<dbuser>' @ '<dblink>' IDENTIFIED BY '<passwd>';"
    // 初始化表结构
    # keystone-manage db_sync
  1. 启动服务并验证其运行正常
    # service keystone restart
    # service keystone status
    // 有时候配置选项参数不同,服务也可以正常运行,但是使用Keystone的时候会报错,故进一步确认
    # export OS_SERVICE_TOKEN=<your token> // /etc/keystone/keystone.conf中制定的token
    # export OS_SERVICE_ENDPOINT=http://<ip>:<port>/<version>/
    # keystone user-list

    上述最后一行命令未报错即标识Keystone服务启动正常。
4. 创建Keystone管理员用户
    Openstack的权限认证采用的是RBAC,所以我们需要分别建立用户组、用户组权限及用户,同时将三者关联起来。

    // 创建一个角色 admin
    keystone role-create --name=admin
    // 创建一个具有管理权限的租户 admin
    keystone tenant-create --name=admin
    // 创建一个用户admin,并设置密码
    keystone user-create --name=admin --pass="<passwd>"
    // 将上述三者关联起来
    keystone user-role-add --user admin --role admin --tenant admin
  1. 定义Keystone使用的Services和API Endpoints
        Openstack中所有的组件都需要对外提供一个API Endpoints,不同组件之间利用此Endpoint完成服务交互。既然Keystone承担了认证授权的功能,则任何组件都需要将自身提供的服务及对应的Endpoints注册到Keystone中。故,Keystone服务自身也需要注册,参考如下流程:
    // 创建一个Keystone服务
    # keystone service-create --name keystone --type identity --description 'Openstack Identity'
    // 创建一个Keystone API Endpoint
    # keystone endpoint-create --service-id <id obtained from above step> --publicurl '<different types of url>'
  1. 使用Keystone客户端命令行
    a. token认证 – 适用于Keystone中暂时还未创建管理员权限用户的情况
   // 环境变量
   # export OS_SERVICE_TOKEN=<yout token>
   # export OS_SERVICE_ENDPOINT=<endpoint_url>

b. 用户名密码认证 – 一旦建立了管理员权限用户,建议使用此种认证方式

   // 环境变量
   # export OS_TENANT_NAME=admin
   # export OS_USERNAME=admin
   # export OS_PASSWORD=<passwd>
   # export OS_AUTH_URL="<auth_url>"

    可以将上述需要导入的变量写入一个文件,然后每次使用source file来导入系统环境变量中。

<think>我们正在讨论OpenStack的Keystone组件。根据用户提供的引用,Keystone是OpenStack的身份认证服务,负责管理身份验证、服务规则和服务令牌。用户的问题是想了解Keystone组件的主要功能。我们将结合引用内容来回答。 引用[1]提到Keystone是OpenStack框架中负责管理身份验证、服务规则和服务令牌的模块。它处理用户访问资源的身份和权限验证,以及服务执行操作的权限检测。Keystone像一个服务总线或注册表,其他服务通过它注册自己的Endpoint(服务访问的URL),任何服务之间的调用都需要经过Keystone的身份验证来获取目标服务的Endpoint。 引用[2]指出Keystone是OpenStack的身份认证与服务目录组件,提供统一的认证、授权和服务发现功能。它确保所有用户和服务之间的交互受到严格的身份验证和权限控制。 引用[3]详细说明了Keystone的验证流程,包括Role(角色)和Policy(策略)的概念。Role代表不同的权限级别,而Policy则定义了用户对资源的访问权限,与Role关联。验证流程描述了用户登录管理页面时,Keystone验证权限,然后用户操作时,Keystone颁发token,其他服务在收到请求时会验证token的合法性。 综合以上引用,Keystone的主要功能可以归纳为以下几点: 1. **身份认证(Authentication)**:验证用户和服务的身份。 2. **授权(Authorization)**:通过角色(Role)和策略(Policy)管理权限,控制用户和服务对资源的访问。 3. **服务目录(Service Catalog)**:注册和发现服务的Endpoint(访问地址)。 4. **令牌管理(Token Management)**:颁发和验证令牌(Token),用于服务间调用的身份验证。 此外,引用[3]还详细描述了验证流程,这进一步说明了Keystone如何在实际操作中实现这些功能。 因此,我们可以这样组织回答: - 首先介绍Keystone的核心功能(身份认证、授权、服务目录、令牌管理)。 - 然后简要说明这些功能如何协同工作(如验证流程)。 同时,我们需要按照用户要求,在回答中自然地添加引用标识。例如,在提到身份认证时,可以引用[1]和[2];在说明验证流程时,引用[3]。 最后,生成相关问题。相关问题应围绕Keystone的功能展开,比如深入探讨某个功能、与其他组件的集成、实际配置等。 下面开始构建回答:</think>Keystone 是 OpenStack 的核心身份认证服务,其核心功能架构如下: ### 一、核心功能模块 1. **统一身份认证(Authentication)** - 验证用户/服务身份凭证(用户名密码、Token、证书等)的真实性 - 支持多因素认证(MFA)增强安全性 - 作为所有 OpenStack 服务的统一登录入口 [^1][^2] 2. **细粒度授权管理(Authorization)** - **角色(Role)管理**:定义不同职能的权限级别(如管理员、运维员、普通用户) - **策略(Policy)引擎**:通过 `/etc/keystone/policy.json` 配置资源访问规则 - 实现基于角色的访问控制(RBAC),例如: ```json // 示例策略:仅管理员可创建网络 "create_network": "role:admin" ```[^3] 3. **服务目录(Service Catalog)** - 注册所有 OpenStack 服务的 **Endpoint**(服务访问地址) - 提供动态服务发现机制,例如: ```yaml nova: publicURL: https://compute.example.com adminURL: https://compute-admin.example.com ```[^1][^2] 4. **令牌(Token)管理** - 颁发访问令牌(JWT 或 UUID 格式)作为临时访问凭证 - 验证令牌有效性并关联用户权限 - 令牌生命周期管理(默认有效期 1 小时)[^2][^3] ### 二、关键工作流程(以创建虚拟机为例) ```mermaid sequenceDiagram participant 用户 participant Keystone participant Nova participant Glance participant Neutron 用户->>Keystone: 提交认证请求 Keystone-->>用户: 颁发Token(T1) 用户->>Nova: 创建虚拟机请求(携带T1) Nova->>Keystone: 验证T1有效性 Keystone-->>Nova: 返回用户权限 Nova->>Glance: 获取镜像(携带T1) Glance->>Keystone: 验证T1 Keystone-->>Glance: 返回验证结果 Nova->>Neutron: 创建网络(携带T1) Neutron->>Keystone: 验证T1 Keystone-->>Neutron: 授权结果 Neutron-->>Nova: 返回网络 Nova-->>用户: 虚拟机创建成功 ``` > 注:所有服务间的调用都需通过 Keystone 令牌验证 [^3] ### 三、安全增强机制 1. **信任链(Trust Chains)** 允许用户委托临时权限给其他服务(如自动化工具) 2. **联邦认证(Federation)** 集成外部身份源(LDAP、AD、SAML 2.0) 3. **凭证加密** 使用 Fernet 轻量级加密保护令牌安全[^2] ### 四、系统级价值 1. **单点控制**:统一管理所有云服务的访问入口 2. **审计追踪**:记录所有身份验证和授权操作日志 3. **横向扩展**:无状态设计支持多节点部署[^1][^2] > 典型应用:当用户通过 Horizon 仪表板操作时,每次点击都会触发 Keystone 的认证和授权验证流程 [^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值