Взаимосвязь между конечными точками, регионами и т. Д. В ключевом камне OpenStack
Я действительно пытаюсь понять скрытый ключ к взаимоотношениям между конечными точками, регионами, арендаторами, службами, пользователями и ролями. Я пытался найти соответствующие документы, но, к сожалению, не удалось.
Кто-нибудь может дать какие-либо указатели или объяснения?
4 ответа
Keystone - это сервис управления идентификацией для OpenStack.
По сути, его роль заключается в предоставлении токенов пользователям, будь то люди, службы или что-то еще.
Если вы выполняете запрос API в любом месте OpenStack, API keystone - это то, как он обнаруживается, если вам разрешено делать этот запрос API.
Давайте проложим наш путь с земли.
Пользователи. Пользователи Keystone сегодня, как правило, люди. На данный момент недостаточно детализированной поддержки ACL, чтобы действительно назвать многих пользователей OpenStack "сервисной" учетной записью в традиционном смысле. Но есть служебная учетная запись, которая используется в качестве транзитного соединения с Keystone API как часть самой инфраструктуры OpenStack. Мы не будем углубляться в этого аномального пользователя.
Когда пользователь проходит аутентификацию в Keystone (вы нажимаете OS_AUTH_URL, чтобы поговорить с keystone... обычно это порт 5000 окна API Keystone), пользователь говорит: "Я пользователь X, у меня есть пароль Y, и я принадлежу арендатору Z",
X может быть именем пользователя или идентификатором пользователя (уникальным uuid пользователя). Y - пароль, но вы также можете аутентифицироваться с помощью токена. Z - имя арендатора или идентификатор арендатора (уникальный идентификатор арендатора). в предыдущих API Keystone вам НЕ НУЖНО было указывать имя арендатора, но ваш токен не был бы очень полезен, если бы вы этого не сделали, поскольку токен не будет связан с вашим арендатором, и тогда вам будет отказано в каких-либо ACL на этом арендатор.
Итак... пользователь - довольно очевидная вещь. Пароль - довольно очевидная вещь. Но что за арендатор?
Ну, арендатор также известен как проект. На самом деле, неоднократно предпринимались попытки сделать имя арендатором или проектом, но в результате неспособности придерживаться только одного термина они оба означают одно и то же. Что касается API, проект является арендатором. Так что если вы войдете в горизонт, вы увидите выпадающий список для ваших проектов. Каждый проект соответствует идентификатору арендатора. Ваши токены также связаны с определенным идентификатором клиента. Таким образом, вам может понадобиться несколько токенов для пользователя, если вы собираетесь работать с несколькими арендаторами, к которым он подключен.
Теперь, скажем, вы добавляете пользователя в идентификатор арендатора admin. Получает ли этот пользователь права администратора? Ответ - нет. Вот где роли вступают в игру. В то время как пользователь в клиенте администратора может иметь доступ к виртуальным машинам администратора и квотам для раскручивания виртуальных машин, пользователь не сможет делать такие вещи, как запрос ключевого слова для списка пользователей. Но если вы добавите роль администратора для этого пользователя, он будет наделен правами ACL для выполнения функций администратора в API Keystone и других API. Так что думайте об арендаторе как о группе ресурсов, а роли - как о списке ACL.
регионы больше похожи на способы географической группировки физических ресурсов в инфраструктуре openstack. скажем, у вас есть два сегментированных центра обработки данных. вы можете поместить один в область A вашей среды openstack, а другой - в область B. области с точки зрения их полезности быстро развиваются, особенно с появлением ячеек и доменов в более поздних выпусках openstack. Возможно, вам не нужно быть хозяином этих знаний, если вы не собираетесь создавать большие облака.
Keystone предоставляет еще одну полезную вещь. каталог. каталог keystone похож на телефонную книгу для API openstack. всякий раз, когда вы используете клиент командной строки, например, когда вы можете вызвать nova list для получения списка своих экземпляров, nova сначала аутентифицируется в keystone и получает токен для использования API, но также сразу запрашивает каталог keystone для списка конечных точек API. Для keystone, cinder, nova, glance, swift... и т. Д. Nova действительно будет использовать только конечную точку nova-api, хотя в зависимости от вашего запроса вы можете использовать конечную точку административного API keystone.... мы вернемся к этому, Но по сути каталог является каноническим источником информации о том, где API находятся в мире. Таким образом, вам нужно всего лишь сообщить клиенту, где находится публичная конечная точка API keystone, и он сможет выяснить остальное из каталога.
Теперь я сделал ссылку на публичный API и административный API для keystone.
Да, у Keystone есть два API... вроде. Он запускает API на порту 5000 и еще один в диапазоне 32000. 5000 является общественным портом. Здесь вы делаете такие вещи, как поиск каталога и запрос токена, чтобы вы могли общаться с другими API. Это очень просто и несколько закалено. Административный API будет использоваться для таких вещей, как изменение пароля пользователя или добавление новой роли для пользователя.
Довольно прямо?
Поздний ответ, но я надеюсь, что он поможет будущим читателям.
конечные точки как точка контакта для вас, чтобы использовать услугу. adminurl, как следует из названия, предназначен только для пользователей с правами администратора. внутренний URL-адрес предназначен для взаимодействия различных служб друг с другом, а публичный URL-адрес предназначен для использования кем-либо еще.
Зачем вам нужен отдельный публичный и внутренний URL, объяснено здесь.
Вам не нужно назначать роль для конечных точек службы. Вы назначаете роли пользователям, которые получают доступ к сервису, и именно так вы это делаете.
Я постараюсь изложить это на языке непрофессионала.
Сервис - Openstack нуждается в большом количестве сервисов для запуска облачной инфраструктуры (Compute,Storage и Network). Чтобы позволить им плавно и одновременно иметь точный контроль, Openstack использует понятие сервисов. Службы позволяют конечным пользователям манипулировать одним из этих трех основных ресурсов. Например: Для хранения используются сервисы cinder и swift. Эти службы могут быть дополнительно настроены для использования Ceph или Gluster в бэкэнде.
Конечная точка - точка, в которой вы "входите" в службу openstack, чтобы сделать что-то полезное или разрушительное. Служба может быть запущена, но для "входа" необходима конечная точка, которая будет выглядеть как http://my-fancy-IP:hard-to-remember-port-number/v3.0. Итак, не созданы ли конечные точки в системе Openstack для конкретной службы openstack? Невозможно получить доступ к этой услуге.
Регион - не имеет ничего общего с географией или местоположением. Термин, используемый для разделения / группировки полных развертываний openstack, если у вас их много. Разделение может быть основано на расположении физических серверов.
Пользователь - Конечный пользователь или Вы.
Проект / Арендатор - Контейнер для разделения ваших ресурсов (вычисления, сеть хранения)
Домен - группа проектов, групп и пользователей. Обеспечивает разделение ресурсов для пользователей и может вместить несколько проектов. Пользователь с ролью администратора домена может создавать / удалять / обновлять любой проект, пользователей, группы и т. Д. В этом конкретном домене.
Роль - Ваши права на выполнение любых операций с сервисами openstack. Думайте о роли, думайте о пользователе.
Токен - это идентификатор (длинная строка), данный вам keystone. Вы можете получить доступ к любой службе openstack в соответствии с ролью, назначенной вам с помощью этого токена.
Например, вы можете запросить nova и сказать: эй, нова, я получил токен1 от keystone. Я хочу удалить сервер "никогда не удаляй меня". Nova берет token1 и говорит: "Эй, keystone, у этого пользователя есть token1, и он хочет удалить сервер" not-ever-delete-me-ever "".Keystone просматривает token1 и в соответствии с ролью, назначенной пользователю, скажет: ok nova разрешить / не разрешить пользователю удалять сервер "никогда не удаляй меня".
Это мой способ понимания арендатора, пользователя, роли, разрешения в openstone-keystone. Вы можете также найти это интересным.