Играйте с серией корпоративных платформ облачных вычислений (3): Служба аутентификации личности Openstack Keystone
Играйте с серией корпоративных платформ облачных вычислений (3): Служба аутентификации личности Openstack Keystone

Концепция краеугольного камня

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

Keystone аналогичен служебной шине или реестру всей инфраструктуры Openstack. Другие службы используют keystone для регистрации конечной точки своих служб (URL-адрес для доступа к службе). Для получения конечной точки любые вызовы между службами должны быть проверены Keystone. целевая служба, чтобы найти целевую службу.

Расположение сервиса Keystone в архитектуре Openstack:

Функция трапецеидального искажения

В Openstack Ketstone отвечает за реализацию двух основных функций: аутентификацию пользователя и каталог служб. Он эквивалентен центру регистрации и имеет следующие основные функции:

  • 1. Пользователи и аутентификация,Включает разрешения пользователей и отслеживание поведения пользователей.。
    • Аутентификация личности: отвечает за выпуск и проверку токенов.
    • Авторизация пользователя: авторизованные пользователи имеют определенный объем выполняемых действий.
    • Управление пользователями: управление учетными записями пользователей
  • 2、Служить Оглавление,То есть предоставить Служить каталогу.,включить все Служитьпредметы и связанные с нимиAPIконечная точка。
    • Каталог «Служить». Предоставляет расположение конечных точек API, где доступен «Служить».
  • 3. Знания, связанные с SOA.

Базовая архитектура Keystone

Подробнее об услугах облачных вычислений Openstack Серия обучающих статей,Видеть:Корпоративная платформа облачных вычислений Openstack, эта серия постоянно обновляется.

Ключевые объекты управления

Службы Keystone работают по всей архитектуре. Весь процесс служб аутентификации личности включает несколько важных концепций.

  • Пользователь: относится к пользователю, использующему архитектуру openstack.
  • Учетные данные: учетные данные, используемые для подтверждения личности пользователя.,Докажи, что ты сам,Включите имя пользователя и пароль пользователя,Или имя пользователя и ключ API,Или токен аутентификации, предоставленный Identity Management.
  • Аутентификация: процесс определения личности пользователя.
  • Проект: можно понимать как совокупность ресурсов, принадлежащих человеку или Служить.
  • Роль: используется для разделения разрешений. Указав роль для пользователя, пользователь может получить соответствующие разрешения на операции этой роли.
  • Служить (сервис): Служить, компонент архитектуры openstack, такой как nova, Neutron, Cinder, Swift, Glook и т. д.
  • Токен: представленный строкой, он служит учетными данными для доступа к ресурсам и является документом, удостоверяющим личность/полномочия пользователя; токен определяет область полномочий пользователя и действует в пределах указанных полномочий; он также включает период действия токена; Пользователи имеют эти разрешения только в течение указанного диапазона времени.
  • Конечная точка: точка, которую можно использовать для доступа и поиска openstack в сети. Адрес сервиса, то есть расположение каждого ресурса Служить, который нужен пользователю при создании проекта.
Процесс создания виртуальной машины
Рабочий процесс
  • Пользователи входят в систему openstack через командную строку или панель управления Horizon и проверяют подлинность Keystone, используя свои собственные учетные данные.
  • Keystone проверяет сертификат пользователя. Если проверка прошла успешно, пользователю будет выдан токен и конечная точка требуемой для пользователя Служить.
  • После того как пользователь получает конечную точку, он переносит свой собственный токен и инициирует запрос к nova на создание виртуальной машины.
  • Nova будет использовать токен пользователя для аутентификации с помощью Keystone, чтобы узнать, разрешено ли пользователю выполнять такую ​​операцию.
  • После прохождения ключевой аутентификации она возвращается в nova, и nova начинает выполнять запрос на создание виртуальной машины. Во-первых, необходимы зеркальные ресурсы. Nova делает запрос на зеркальные ресурсы для просмотра с помощью токена и необходимого имени зеркала.
  • взгляд перенесет токен в keystone для аутентификации.,Посмотрите, разрешено ли зеркалирование Служить. После успешной аутентификации Keystone,Вернитесь к взгляду. взгляд предоставляет изображение Служить nova.
  • Для создания виртуальной машины также требуется доступ к сети. Nova переносит токен и отправляет запрос на доступ к сети в Neutron.
  • Neutron использует токен, предоставленный Nova, для аутентификации в Keystone.,Посмотрите, разрешено ли ему предоставлять сеть Служить. После успешной аутентификации Keystone,Вернитесь к нуетрону. Nuetron обеспечивает планирование сети для nova.
  • После того как nova получит образ и сеть, она начнет создавать виртуальную машину, а базовые аппаратные ресурсы можно будет вызвать через гипервизор для создания. Создание завершается и возвращается пользователю, а запрос пользователя успешно выполняется.

Установить Кистоун

Установка и настройка базы данных
Язык кода:javascript
копировать
yum install -y mariadb mariadb-server python2-PyMySQL

Завершите установку. После этого мы добавляем конфигурацию базы данных MySQL для Openstack, создаем новый файл openstack.cnf в каталоге /etc/my.cnf.d/ и записываем следующий контент:

Язык кода:javascript
копировать
[mysqld]
bind-address = 192.168.136.101
default-storage-engine = innodb  #Механизм хранения по умолчанию [innodb]
innodb_file_per_table       # Использовать эксклюзивное табличное пространство
max_connections = 4096          #Максимальное количество подключений 4096 (по умолчанию 1024)
collation-server = utf8_general_ci  #база данных Правила корректуры по умолчанию
character-set-server = utf8 #Набор символов по умолчанию

После этого нам нужно создать базу данных, необходимую для запуска Openstack, и предоставить соответствующие разрешения. После входа в MySQL выполните команду:

Язык кода:javascript
копировать
create database keystone;
grant all on keystone.* to 'keystone'@'localhost' identified by 'keystone';
grant all on keystone.* to 'keystone'@'%' identified by 'keystone';

create database glance;
grant all on glance.* to 'glance'@'%' identified by 'glance';
grant all on glance.* to 'glance'@'localhost' identified by 'glance';

create database nova;
grant all on nova.* to 'nova'@'localhost' identified by 'nova';
grant all on nova.* to 'nova'@'%' identified by 'nova';

create database nova_api;
grant all on nova_api.* to 'nova_api'@'localhost' identified by 'nova_api';
grant all on nova_api.* to 'nova_api'@'%' identified by 'nova_api';

create database neutron;
grant all on neutron.* to 'neutron'@'%' identified by 'neutron';
grant all on neutron.* to 'neutron'@'localhost' identified by 'neutron';

flush privileges;

В приведенной выше конфигурации keystone — это база данных службы аутентификации, glance — зеркальная база данных, nova — база данных виртуализации, а Neutron — база данных управления сетевыми ресурсами. Процесс выполнения приведенной выше команды выглядит следующим образом:

Подробнее об услугах облачных вычислений Openstack Серия обучающих статей,Видеть:Корпоративная платформа облачных вычислений Openstack, эта серия постоянно обновляется.

Установите и настройте Keystone.

Установите напрямую с помощью YUM и выполните команду:

Язык кода:javascript
копировать
yum install -y openstack-keystone httpd mod_wsgi
трапецеидальная конфигурация

После установки keystone нам все равно нужно настроить keystone. Но прежде чем настраивать keystone, нам нужно сгенерировать токен и выполнить команду:

Язык кода:javascript
копировать
openssl rand -hex 10

Будет сгенерирована строка строк. Выполнение этой команды происходит следующим образом:

Файл конфигурации keystone — /etc/keystone/keystone.conf. После входа в этот файл нам нужно изменить следующие 4 места:

  • первый,мы нашли[default]модуль,Измените поле admin_token в этом модуле на только что созданную строку.
  • Во-вторых,мы нашли[database]модуль,Добавьте в этот модуль следующий контент:
Язык кода:javascript
копировать
connection = mysql+pymysql://keystone:keystone@192.168.136.101/keystone

В приведенной выше конфигурации keystone:keystone представляет имя пользователя и пароль базы данных MySQL, а последний /keystone представляет базу данных MySQL. Мы можем гибко модифицировать его в соответствии с нашей фактической конфигурацией. снова,мы нашли[token]модуль,Добавьте в этот модуль следующий контент:

Язык кода:javascript
копировать
provider = fernet
driver = memcache

Указывает на использование метода предоставления токенов Fernet и базы memcache. хранилище данных. наконец,мы нашли[memcache]модуль,Добавьте в этот модуль следующий контент:

Язык кода:javascript
копировать
servers = 192.168.136.101:11211

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

Таким образом, наша настройка трапецеидальных искажений завершена.

инициализация базы данных keystone

существоватьтрапецеидальная После завершения модификации нам еще предстоит выполнить keystone базу. инициализация данных Configuration.исполняемая команда:

Язык кода:javascript
копировать
su -s /bin/sh -c "keystone-manage db_sync" keystone

Дождавшись выполнения команды, проверим эффект от инициализации базы данных и выполним команду:

Язык кода:javascript
копировать
mysql -h 192.168.136.101 -ukeystone -pkeystone -e "use keystone;show tables;"

Результат выглядит следующим образом:

Как вы можете видеть на рисунке выше, наша ключевая задача по структуризации базы данных прошла успешно!

Инициализация ключей Fernet

Наконец, нам также необходимо инициализировать ключи Fernet и выполнить команду:

Язык кода:javascript
копировать
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

Вы можете создать каталог Fernets-keys в каталоге /etc/keystone/, и сертификат Fernet линейного канала хранится в этом каталоге.

Openstack Keystone настроить переменные среды

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

Язык кода:javascript
копировать
export OS_TOKEN=e4f523fef7082712e949
export OS_URL=http://192.168.136.101:35357/v3
export OS_IDENTITY_API_VERSION=3

Эти три переменные среды можно установить. Среди них первый OS_TOKEN — это значение admin_token, которое мы установили в файле конфигурации Keystone, а OS_URL — это IP-адрес локального компьютера. Вы можете изменить эти два параметра в соответствии с реальной ситуацией при их использовании.

Уведомление,Только после завершения создания этих трех переменных среды,Только после этого вы сможете перейти к следующему шагу,В противном случае Openstack сообщит об ошибке! Подробнее об услугах облачных вычислений Серия обучающих статей по Openstack,Видеть:Корпоративная платформа облачных вычислений Openstack, эта серия постоянно обновляется.

команда помощи

В openstack используйте параметр --help для отображения справки по команде, например, выполните команду:

Язык кода:javascript
копировать
openstack --help

Может отображать все команды, связанные с OpenStack. Результаты выполнения (части) этой команды следующие:

Конечно, мы также можем просмотреть справку по команде для одного модуля и выполнить команду:

Язык кода:javascript
копировать
openstack user --help

Openstack может отображаться Сопутствующие команды пользовательского модуля, выполняющего Результат выглядит следующим образом:

Аналогично выполняем команду:

Язык кода:javascript
копировать
openstack service --help

Вы также можете отобразить связанные команды сервисного модуля, который выполняет Результат выглядит следующим образом:

так,Когда мы сталкиваемся с неизвестной нам командой openstack,Вы можете использовать параметр –help для просмотра конкретного использования. Следующий,Мы можем официально провести Keystone Создание доменов, проектов,пользователей и ролей Понятно。

Создание доменов, проектов, пользователей и ролей

Сначала мы создаем домен по умолчанию и выполняем команду:

Язык кода:javascript
копировать
openstack domain create --description "Default" Default

Вы можете создать домен по умолчанию. В приведенной выше команде за параметром –description следует описание домена, которое не имеет фактического эффекта. Результаты выполнения этой команды следующие:

Далее создаем административный проект в домене Default и выполняем команду:

Язык кода:javascript
копировать
openstack project create --domain Default --description "admin" admin

Результаты выполнения этой команды следующие:

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

Далее пытаемся создать пользователя-администратора в домене Default и выполнить команду:

Язык кода:javascript
копировать
openstack user create --domain Default --password-prompt admin

Вы можете создать пользователя с именем admin. После выполнения этой команды пароль будет введен дважды в качестве пароля для входа пользователя. Выполнение команды следующее:

Далее нам нужно создать роль администратора и выполнить команду:

Язык кода:javascript
копировать
openstack role create admin

Эта команда выполняет Результат выглядит следующим образом:

После этого нам нужно добавить пользователя-администратора в проект admin и выполнить команду:

Язык кода:javascript
копировать
openstack role add --project admin --user admin admin

В приведенной выше команде параметр –project указывает имя проекта, параметр –user указывает имя пользователя, а последним администратором является роль, которую мы только что создали.

Таким образом настроен наш домен по умолчанию. Далее мы настраиваем демонстрационный домен практически таким же образом.

Сначала мы создаем демонстрационный домен и выполняем команду:

Язык кода:javascript
копировать
openstack project create --domain Default --description "Demo" demo

Выполнение команды следующее:

После этого создаем пользователя-демо в домене Default и выполняем команду:

Язык кода:javascript
копировать
openstacl user create --domain Default --password-prompt user-demo

Эта команда выполняет Результат выглядит следующим образом:

Далее мы создаем роль с именем user и выполняем команду:

Язык кода:javascript
копировать
openstack role create user

Эта команда выполняет Результат выглядит следующим образом:

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

Язык кода:javascript
копировать
openstack role add --project demo --user user-demo user

Таким образом, наше Создание Keystone доменов, проектов, пользователей и ролей Только что закончил Понятно。Подробнее об услугах облачных вычислений Openstack Серия обучающих статей,Видеть:Корпоративная платформа облачных вычислений Openstack, эта серия постоянно обновляется.

Создание и авторизация пользователей Nova, Neutron и Glance в Keystone

Создание проекта сервиса

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

Сначала давайте создадим проект службы сервиса и выполним команду:

Язык кода:javascript
копировать
openstack project create --domain Default --description "Service" service

Эта команда выполняет Результат выглядит следующим образом:

Создание и авторизация пользователей Nova, Neutron и Glance

Далее нам нужно создать пользователей для трех сервисов Glance, Nova и Neutron соответственно и авторизовать их.

Команда создания пользователя Glance выглядит следующим образом:

Язык кода:javascript
копировать
openstack user create --domain Default --password-prompt glance

Эта команда выполняет Результат выглядит следующим образом:

Команда для авторизации пользователя Glance выглядит следующим образом:

Язык кода:javascript
копировать
openstack role add --project service --user glance admin

Команды создания и авторизации пользователей Nova следующие:

Язык кода:javascript
копировать
openstack user create --domain Default --password-prompt nova
openstack role add --project service --user nova admin

Результаты выполнения двух вышеуказанных команд следующие:

Команды создания и авторизации пользователей Neutron следующие:

Язык кода:javascript
копировать
openstack user create --domian Default --password-prompt neutron
openstack role add --project service --user neutron admin

Результаты выполнения двух вышеуказанных команд следующие:

так,Мы сделаем это возможным ПонятноOpenstackиз Создание и авторизация пользователей Nova, Neutron и Glance в Краеугольный камень.

Регистрация услуги Keystone

Создание сервиса Keystone

Сначала мы создаем службу идентификации, чтобы, когда другим службам потребуется зарегистрироваться, им нужно было искать созданную нами службу идентификации. Выполнить команду:

Язык кода:javascript
копировать
openstack service create keystone --description "Openstack Keystone" identity

Вы можете создать удостоверение с именем службы.,Эта команда выполняет Результат выглядит следующим образом:

Создание конечной точки Keystone

Далее нам нужно создать конечную точку Keystone. Нам нужно создать конечные точки с публичными, частными и правами администратора. Команда создания общедоступной конечной точки выглядит следующим образом:

Язык кода:javascript
копировать
openstack endpoint create --region RegionOne identity http://192.168.136.101:5000/v3

Эта команда выполняет Результат выглядит следующим образом:

Команда создания внутренней конечной точки выглядит следующим образом:

Язык кода:javascript
копировать
openstack endpoint create --region RegionOne identity internal http://192.168.136.101:5000/v3

Эта команда выполняет Результат выглядит следующим образом:

Команда создания конечной точки администратора выглядит следующим образом:

Язык кода:javascript
копировать
openstack endpoint create --region RegionOne identity admin http://192.168.136.101:35357/v3

Обратите внимание, что в приведенной выше команде URL-адрес администратора отличается от внутреннего и общедоступного. URLиз Разделение,поэтомусуществовать Вот и портируем Конфигурациядля35357。Эта команда выполняет Результат выглядит следующим образом:

Проверка результатов установки Keystone

После выполнения вышеуказанных шагов наш Keystone был установлен. Далее давайте проверим результаты установки Keystone.

Сначала мы удаляем ранее установленные переменные среды OS_TOKEN и OS_URL. (Примечание: OS_TOKEN необходимо удалить, OS_URL удалять не нужно. Соответственно, в следующей команде параметр –os-auth-url можно опустить) Выполните команду:

Язык кода:javascript
копировать
unset OS_TOKEN OS_URL

Далее мы сначала тестируем пользователя-администратора и выполняем команду:

Язык кода:javascript
копировать
openstack --os-auth-url http://192.168.136.101:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue

Введите пароль во всплывающем диалоговом окне Результат. выглядит следующим образом:

Как видно на рисунке выше, наш администратор успешно установился! Далее мы тестируем пользователя user-demo и выполняем команду:

Язык кода:javascript
копировать
openstack --os-auth-url http://192.168.136.101:5000/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name demo --os-username user-demo token issue

Аналогичным образом введите пароль пользователя-демо-пользователя во всплывающем диалоговом окне Результат. выглядит следующим образом:

Как видно из картинки выше,Нашему пользователю-демо пользователю Установить удалось! Подробнее об услугах облачных вычислений Серия обучающих статей по Openstack,Видеть:Корпоративная платформа облачных вычислений Openstack, эта серия постоянно обновляется.

Использование сценария переменной среды

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

Содержимое файла сценария admin-openstack.sh для администратора следующее:

Язык кода:javascript
копировать
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL=http://192.168.136.101:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

После выполнения скрипта мы выполняем команду:

Язык кода:javascript
копировать
openstack token issue

Результат выглядит следующим образом:

Таким же образом мы также можем настроить файл сценария пользователя demo-openstack.sh, содержимое которого следующее:

Язык кода:javascript
копировать
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=user-demo
export OS_PASSWORD=user-demo
export OS_AUTH_URL=http://192.168.136.101:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

После выполнения файла скрипта выполняем команду:

Язык кода:javascript
копировать
openstack token issue

осуществлять Результат выглядит следующим образом:

Из приведенных выше результатов мы видим, что сценарии нашего пользователя-администратора и пользователя-демо-пользователя успешно настроены!

Справочные статьи: https://blog.csdn.net/KY06_Xxy/article/details/110959473 https://blog.csdn.net/weixin_40228200/article/details/125079572 https://blog.csdn.net/weixin_40228200/article /подробности/125108273

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose