Вы находитесь на странице: 1из 12

Знакомство с OpenStack : Компонент Identity

(Keystone)
Джон Ротон 05.03.2015
специалист по стратегиям в области облачных
вычислений
независимый специалист

В статье рассматривается проект OpenStack Identity (Keystone), объясняется его место в


общей архитектуре OpenStack и демонстрируется его функционирование. Описываются
установка, конфигурирование и применение элементов, входящих в состав этого проекта.

Больше статей из этой серии

В статье описывается компонент OpenStack Identity, который предоставляет общие средства


аутентификации для всех остальных проектов платформы OpenStack.

Каждому многопользовательскому сервису требуется механизм, который позволял бы


управлять правами пользователей на обращение к этому сервису и действиями, которые
разрешается выполнять таким пользователям. Частное облако не является исключением,
— платформа OpenStack поддерживает все необходимые функции этой категории, которые
выделены в отдельный проект под названием Keystone.

Keystone — это кодовое имя проекта (сервиса) OpenStack Identity, который при посредстве
API-интерфейса OpenStack предоставляет такую функциональность, как токены, политики
и каталоги. Как и остальные проекты платформы OpenStack, компонент Keystone
представляет собой уровень абстрагирования. Он не осуществляет фактической реализации
функций управления пользователями; вместо этого он предоставляет подключаемые
интерфейсы, что позволяет организации задействовать имеющиеся у нее сервисы
аутентификации или выбрать любую из множества различных систем управления
идентификацией, доступных на сегодняшнем рынке.

Keystone интегрирует функции OpenStack для аутентификации, для управления


политиками и для обслуживания каталогов (включая регистрацию всех арендаторов
и пользователей, аутентификацию пользователей и предоставление токенов для
авторизации пользователей, создание политик, охватывающих всех пользователей
и все сервисы, а также управление каталогом оконечных точек сервисов). Базовым
объектом системы управления идентификацией является т. н. "пользователь" — в данном

© Copyright IBM Corporation 2015 Торговые марки


Знакомство с OpenStack: Компонент Identity (Keystone) Страница 1 из 12
developerWorks® ibm.com/developerWorks/ru/

случае это цифровое представление человека, системы или сервиса, использующего


какие-либо сервисы OpenStack. Нередко пользователь сопоставляется контейнеру под
названием "арендатор" (tenant). Такой контейнер заключает в себе ресурсы и объекты
идентифицируемой сущности. Арендатор может представлять собой клиента, учетную
запись, подразделение организации и т. д.

Аутентификация — это процесс подтверждения личности пользователь. Компонент Keystone


должен убедиться в том, что каждый входящий функциональный вызов исходит именно от
того пользователя, который был заявлен в качестве источника соответствующего запроса.
Keystone выполняет такую проверку посредством тестирования набора "заявлений", которые
реализуются в форме мандатов (credentials). Отличительный признак мандата – он должен
быть доступен только тому пользователю, которому принадлежат данные. Мандат может
представлять собой данные, которые знает только пользователь (имя пользователя и
пароль или ключ); физический объект, которым обладает пользователь (аппаратный ключ),
или биометрическую характеристику пользователя (результаты сканирования радужной
оболочки глаза или отпечатка пальца).

После того, как компонент OpenStack Identity подтвердил идентичность пользователя, он


предоставляют этому пользователю токен (token), который подтверждает эту идентичность
и может использоваться при последующем обращении к ресурсам. Каждый токен
имеет определенную область действия, в которой перечислены ресурсы, к которым
применяется этот токен. Токен имеет конечный срок действия и может быть аннулирован при
необходимости прекращения доступа соответствующего пользователя.

Принудительное применение политики безопасности осуществляется с помощью механизма


авторизации на основе правил. Когда пользователь успешно прошел аутентификацию,
следующий шаг состоит в определении его уровня авторизации. Keystone инкапсулирует
набор прав и полномочия в виде т. н. "роли" (role). Токен, предоставляемый сервисом
идентификации, содержит список ролей, которые может принимать аутентифицированный
пользователь. После этого сервис ресурса сопоставляет набор ролей пользователя с
запрашиваемым набором операций с этим ресурсом и по результатам этого сопоставления
разрешает или запрещает доступ.

Одним из дополнительных сервисов Keystone является каталог сервисов, который


используется для обнаружения оконечных точек. Этот каталог предоставляет список
доступных сервисов вместе с оконечными точками их API-интерфейсов. Оконечная точка —
это доступный через сеть адрес, такой как URL, посредством которого пользователь может
использовать сервис. Все сервисы платформы OpenStack, в том числе OpenStack Compute
(Nova) и OpenStack Object Storage (Swift), предоставляют свои оконечные точки сервису
Keystone, при посредстве которого пользователи могут запрашивать ресурсы и выполнять
операции.

Архитектура
С архитектурной точки зрения сервис Keystone достаточно прост. Он обрабатывает все
API-запросы и предоставляет такие сервисы, как Identity, Token, Catalog, Policy. Keystone

Знакомство с OpenStack: Компонент Identity (Keystone) Страница 2 из 12


ibm.com/developerWorks/ru/ developerWorks®

организован как группа фронтальных сервисов, представляемых посредством сетевого API-


интерфейса.

• Сервис Identity осуществляет валидацию аутентификационных мандатов и


предоставляет все связанные с ними метаданные.
• Сервис Token верифицирует и администрирует токены, используемые для
аутентификации запросов после верификации мандатов пользователя.
• Сервис Catalog предоставляет реестр сервисов, которые могут использоваться для
обнаружения соответствующих оконечных точек.
• Сервис Policy представляет основанный на правилах механизм авторизации.

Каждая функция Keystone поддерживает внутренние плагины для интеграции в


гетерогенные среды и для представления разнообразной функциональности. К числу
наиболее распространенных внутренних плагинов относятся следующие.

• Key Value Store. Интерфейс с поддержкой поиска значения по ключу, например, для
резидентного словаря.
• Memcached. Распределенная система кэширования в оперативной памяти.
• Structured Query Language (SQL). Обеспечивает персистентное хранение данных
с помощью SQLAlchemy (SQL-инструментарий на языке Python и Object Relational
Mapper).
• Pluggable Authentication Module (PAM). Служит для аутентификации через PAM-
сервис локальной системы.
• Lightweight Directory Access Protocol (LDAP). Обеспечивает подключение при
посредстве LDAP к внутреннему каталогу, например, к Active Directory®, с целью
аутентификации пользователей и получения информации о роли.

Установка и настройка
Инструкции по установке в конкретной ситуации существенно зависят от дистрибутивов и
от релиза OpenStack. Как правило, инструкции предоставляются в составе дистрибутива.
Однако вне зависимости от дистрибутива/релиза вам придется выполнять одни и те же
основные задачи, которые рассматриваются в этом разделе.

Системные требования
Платформа OpenStack ориентирована на 64-разрядную x86-архитектуру; другими словами,
она рассчитана на применение массовых аппаратных средств, поэтому минимальные
системные требования весьма скромны. Весь пакет проектов OpenStack способен
исполняться на одной системе с оперативной памятью объемом 8 ГБ. В случае более
крупных развертываний сервис Keystone можно установить вместе с другими проектами,
например, на Controller-узле вместе с Nova. Однако для реализаций с высокой степенью
масштабируемости рекомендуется задействовать для управления идентификацией
выделенную систему. Хорошей отправной точкой для простой системы являются
четырехъядерный процессор, 32 ГБ оперативной памяти и 2 гигабитных сетевых адаптера.

Знакомство с OpenStack: Компонент Identity (Keystone) Страница 3 из 12


developerWorks® ibm.com/developerWorks/ru/

Установка
Инструкции по установке зависят от дистрибутива, в частности, от выбранной вами утилиты
управления пакетами. Во многих случаях при установке необходимо объявить репозитарий.
Так, например, в случае утилиты Zypper необходимо объявлять libzypp с параметром zypper
ar:

# zypper ar -f http://download.opensuse.org/repositories/Cloud:/OpenStack:/Grizzly/SLE_11_SP3/
Cloud:OpenStack:Grizzly.repo

Затем нужно установить требуемые пакеты Keystone. Утилита управления пакетами


автоматически установит все нужные зависимости. Окончательный вид процедуры
установки зависит от требуемой конфигурации и от конкретного релиза OpenStack,
используемого при установке. Необходимо ознакомиться с соответствующими инструкциями,
изложенными в Руководстве по установке. В качестве иллюстрации я показал основные
команды для следующих ОС: Debian (например, Ubuntu), Red Hat (Red Hat Enterprise Linux®,
CentOS, Fedora) и openSUSE:

• Debian. Чтобы установить Keystone на Debian-системе (например, Ubuntu) выполните


следующие команды:
sudo apt-get install keystone
sudo apt-get install python-keystone
sudo apt-get install python-keystoneclient
• Red Hat. Выполните следующие команды:
sudo yum install openstack-keystone
sudo yum install python-keystone
sudo yum install python-keystoneclient
• openSUSE. Выполните следующие команды:
sudo zypper install openstack-keystone
sudo zypper install python-keystoneclient

Конфигурация
Основная конфигурация Keystone описывается в файле keystone.conf, который находится в
каталоге /etc/keystone/. В этом файле указаны все аутентификационные плагины (указаны в
разделе [auth]):

• methods. Перечисление имен всех аутентификационных плагинов.


• <plugin name>. Спецификация класса для каждого метода аутентификации.
Примеры.
[auth]
methods = password,token,oauth1
password = keystone.auth.plugins.password.Password
token = keystone.auth.plugins.token.Token
oauth1 = keystone.auth.plugins.oauth1.OAuth

Никакого стандартного механизма для регистрации собственных конфигурационных опций


плагина не предусмотрено, однако обычно плагин имеет свой собственный раздел в
конфигурационном файле.

Знакомство с OpenStack: Компонент Identity (Keystone) Страница 4 из 12


ibm.com/developerWorks/ru/ developerWorks®

Сертификаты
Многие организации переходят на технологию Public Key Infrastructure по причине ее
хорошей масштабируемости и ее соответствия стандартам. Одно из преимуществ этой
технологии заключается в том, что она позволяет делегировать доверие, что жизненно
важно для федерированной идентификации. Однако при этом необходимо демонстрировать
аутентичность при посредстве защищенного от прослушивания канала к признанному и
пользующемуся доверием центру сертификации (certification authority).

На практике это означает, что открытый ключ должен быть подписан с помощью
сертификата X.509, сертифицированного каким-либо центром сертификации. В случае
чисто внутренней реализации можно использовать сервис keystone-manage для генерации
самоподписанного сертификата, однако в федерированной среде может требоваться
сертификат от внешнего центра сертификации.

Процедура установки сертификата, выпущенного внешним центром сертификации, включает


следующие этапы.

• Запрос подписанного сертификата у внешнего центра сертификации.


• Преобразование этого сертификата и секретного ключа в формат PEM (Privacy
Enhanced Email).
• Установка подписанного внешним центром сертификата посредством копирования pem-
файлов в каталог сертификата.
Сценарии использования
Управление идентификацией — это вспомогательная функция, результаты которой заметны
в меньшей степени, чем у большинства остальных проектов платформы OpenStack. Эта
функция должна рассматриваться как обеспечивающий механизм, который упрощает
отыскание сервисов и предоставляет унифицированные средства для принудительного
применения политик безопасности.

Простейший способ визуализации сценария использования Keystone — разделить его


на две части: администрирование и аутентификация. Административные функции в
Keystone определяют пользователей и проекты, а также назначают им соответствующую
авторизацию. После того как конфигурирование среды будет выполнено, проекты и
приложения смогут взаимодействовать с Keystone, выполняя запросы и проверяя
разрешения на доступ.

Администрирование
Мы начнем с первой части. Она проще в освоении, поскольку отображается на
информационной панели Horizon. Администратор может создавать проекты и
пользователей. Этим пользователям могут быть назначены роли; кроме того, с целью
упрощения управления эти пользователи могут быть агрегированы в группы.

1. Как правило, первый шаг состоит в создании проекта. Войдите в OpenStack Dashboard
как администратор. В навигационной панели под заголовком Identify Panel нажмите
Projects > Create Project.

Знакомство с OpenStack: Компонент Identity (Keystone) Страница 5 из 12


developerWorks® ibm.com/developerWorks/ru/

Рисунок 1. Создание нового проекта

2. На этом этапе достаточно ввести только имя проекта (Name) и его описание
(Description). Кроме того, вам потребуется хотя бы один пользователь. Под заголовком
Identity Panel нажмите Users > Create User.

Знакомство с OpenStack: Компонент Identity (Keystone) Страница 6 из 12


ibm.com/developerWorks/ru/ developerWorks®

Рисунок 2. Создание пользователя

3. Отредактируйте свой проект. Под заголовком Identity Panel нажмите Projects > Edit
Project.

Знакомство с OpenStack: Компонент Identity (Keystone) Страница 7 из 12


developerWorks® ibm.com/developerWorks/ru/

Рисунок 3. Редактирование проекта

4. В окне Edit Project, на вкладке Project Members, вы сможете отредактировать участников


проекта (Project Members) и изменить их роли.

Знакомство с OpenStack: Компонент Identity (Keystone) Страница 8 из 12


ibm.com/developerWorks/ru/ developerWorks®

Рисунок 4. Редактирование участников проекта и их ролей

5. Кроме того, на вкладке Quota можно указать предельные значения для своего проекта.
Это особенно полезно в среде с несколькими арендаторами, поскольку позволяет
гарантировать, что ни один из проектов не займет слишком много ресурсов и не лишит
тем самым ресурсов другие важные сервисы, исполняющиеся в той же инфраструктуре.

Знакомство с OpenStack: Компонент Identity (Keystone) Страница 9 из 12


developerWorks® ibm.com/developerWorks/ru/

Рисунок 5. Указание предельных значений для проекта

Аутентификация
Вторая часть сценария — аутентификация сервисов в процессе исполнения. В качестве
примера рассмотрим приложение, которое использует компонент OpenStack Swift для
хранения объектов. Вне зависимости от того, исполняется ли оно как часть экземпляра
OpenStack Compute или нет, оно должно быть в состоянии осуществлять аутентификацию.
Другими словами, этому приложению нужен доступ к действительным мандатам.

Сначала это приложение должно подключиться к сервису аутентификации и предоставить


свои мандаты. После этого оно получает аутентификационный токен, который сможет

Знакомство с OpenStack: Компонент Identity (Keystone) Страница 10 из 12


ibm.com/developerWorks/ru/ developerWorks®

передавать компоненту OpenStack Object Storage при выполнении любых операций с


контейнерами и объектами. В некоторых случаях конфигурация такого приложения может
не иметь всех параметров соединения. В этих случаях оно также сможет получить эти
параметры из Keystone. Например, приложение может послать в Keystone запрос о том,
к каким проектам оно имеет право обращаться, и подать заявку на URL-адрес нужного
сервиса.

Заключение
Веб-интерфейс Horizon существенно упрощает управление пользователями. Он скрывает
внутренние процессы, а также всю необходимую интеграцию с другими репозитариями
пользователей, такими как Active Directory или LDAP-каталог.

Знакомство с OpenStack: Компонент Identity (Keystone) Страница 11 из 12


developerWorks® ibm.com/developerWorks/ru/

Об авторе
Джон Ротон

Джон Ротон (John Rhoton) — разработчик технологических стратегий,


специализируется на консультировании глобальных корпоративных клиентов по
вопросам публичных, частных и гибридных облачных решений. Он регулярно
выступает на отраслевых мероприятиях по передовым технологиям, таким как
мобильность, социальные сети и виртуализация. Д. Ротон является автором
семи книг, включая Cloud Computing Explained (2009) и Cloud Computing
Architected (2011).

© Copyright IBM Corporation 2015


(www.ibm.com/legal/copytrade.shtml)
Торговые марки
(www.ibm.com/developerworks/ru/ibm/trademarks/)

Знакомство с OpenStack: Компонент Identity (Keystone) Страница 12 из 12