使用 Keystone 中间件与 Barbican

先决条件

要启用 Barbican 与 Keystone 的集成,您需要一个相对较新版本的 Keystone。 如果您正在安装一个 OpenStack 云,其中所有服务(包括 Keystone 和 Barbican)都来自同一版本,则这已经足够了。 如果您没有可用的 Keystone 实例,可以使用以下方法之一设置您自己的实例。

  1. 简单的 Dockerized Keystone

  2. 安装 Keystone

  3. 一个带有 Keystone 的 OpenStack 云(最简单的情况是 Devstack)

将 Barbican 挂接到 Keystone

假设您已经设置了 Keystone 实例,将 Barbican 连接到 Keystone 非常简单。 完成后,Barbican 应该要求在所有 API 调用(获取版本调用除外)中提供有效的 X-Auth-Token。

  1. 关闭所有活动的 Barbican 实例

  2. 编辑 /etc/barbican/barbican-api-paste.ini

    1. 将 pipeline /v1 值从未认证的 barbican_api 更改为已认证的 barbican-api-keystone。 此步骤对于来自 OpenStack Newton 或更高版本的 barbican 来说是不必要的,因为从 OpenStack Newton 开始,barbican 默认使用 Keystone 认证。

      [composite:main]
      use = egg:Paste#urlmap
      /: barbican_version
      /v1: barbican-api-keystone
      
    2. 替换 authtoken 过滤器值以匹配您的 Keystone 设置

      [filter:authtoken]
      paste.filter_factory = keystonemiddleware.auth_token:filter_factory
      auth_plugin = password
      username = {YOUR_KEYSTONE_USERNAME}
      password = {YOUR_KEYSTONE_PASSWORD}
      user_domain_id = {YOUR_KEYSTONE_USER_DOMAIN}
      project_name = {YOUR_KEYSTONE_PROJECT}
      project_domain_id = {YOUR_KEYSTONE_PROJECT_DOMAIN}
      www_authenticate_uri = http://{YOUR_KEYSTONE_ENDPOINT}:5000/v3
      auth_url = http://{YOUR_KEYSTONE_ENDPOINT}:5000/v3
      

      或者,您可以将其缩短为

      [filter:authtoken]
      paste.filter_factory = keystonemiddleware.auth_token:filter_factory
      

      并将 Barbican 的 Keystone 凭据存储在 [keystone_authtoken] 部分的 /etc/barbican/barbican.conf

      [keystone_authtoken]
      auth_plugin = password
      username = {YOUR_KEYSTONE_USERNAME}
      password = {YOUR_KEYSTONE_PASSWORD}
      user_domain_id = {YOUR_KEYSTONE_USER_DOMAIN}
      project_name = {YOUR_KEYSTONE_PROJECT}
      project_domain_id = {YOUR_KEYSTONE_PROJECT_DOMAIN}
      www_authenticate_uri = http://{YOUR_KEYSTONE_ENDPOINT}:5000/v3
      auth_url = http://{YOUR_KEYSTONE_ENDPOINT}:5000/v3
      
  3. 启动 Barbican {barbican_home}/bin/barbican.sh start