Merhabalar! Bir önceki makalede yer alan OpenStack Victoria Sürümü: Temel Bileşenler ve Kurulum Adımları‘nın devamındayız. Bu makaleyi okumaya başladığınıza göre OpenStack için gereklilikleri yüklediğiniz varsayıyorum.

Öncelikle Keystone nedir?

Keystone, OpenStack’in kimlik doğrulama ve yetkilendirme hizmetlerini sağlayan bileşenidir. OpenStack ekosisteminde yer alan diğer bileşenlerin güvenli bir şekilde kullanıcı ve hizmet taleplerini yönetmesi için merkezi bir kimlik yönetim sistemi sunar.

Keystone, OpenStack bileşenlerinin birbirleriyle iletişim kurabilmesi ve yetkilendirme işlemlerini gerçekleştirebilmesi için kullanıcıları, projeleri ve rollerini yönetir. Aynı zamanda, çeşitli kimlik doğrulama protokollerini (LDAP, OAuth, SAML gibi) destekleyerek, esnek bir yapı sunar.

Keystone’un ana işlevleri şunlardır:

Kimlik Yönetimi: Kullanıcıların ve hizmetlerin kimlik doğrulamasını sağlar. Her kullanıcı veya hizmet için benzersiz bir kimlik belirler ve bu kimlik üzerinden işlemleri yürütür.

Yetkilendirme: Kullanıcıların ve hizmetlerin hangi kaynaklara erişebileceğini ve bu kaynaklar üzerinde ne tür işlemler gerçekleştirebileceğini yönetir.

Token Yönetimi: Kullanıcı ve hizmetlerin erişim taleplerini yönetmek için zaman sınırlı token’lar oluşturur. Bu token’lar, diğer OpenStack bileşenlerine kimlik doğrulama ve yetkilendirme işlemlerinde sunulur.

Proje ve Rol Yönetimi: Kullanıcıların projeler içinde farklı roller almasını sağlar. Bu roller, kullanıcıların hangi kaynaklara erişebileceğini ve hangi işlemleri gerçekleştirebileceğini belirler.

Keystone, OpenStack platformunun güvenlik ve erişim yönetimi açısından kritik bir bileşenidir. Güçlü bir kimlik yönetim sistemi olarak, hem kullanıcı deneyimini iyileştirir hem de sistem güvenliğini üst düzeyde tutar.

Keystone İçin MariaDB’de Kullanıcı ve Veritabanı Oluşturma Adımları

mysql
#Database oluşturma
MariaDB [(none)]> create database keystone;
Query OK, 1 row affected (0.00 sec)
#keystone db’sindeki tüm objelere(tables vs.), keystone kullanıcısına localhost izin verilmesi 
MariaDB [(none)]> grant all privileges on keystone.* to keystone@'localhost' identified by 'password';
Query OK, 0 rows affected (0.00 sec)
#keystone db’sindeki tüm objelere(tableS), keystone kullanıcısıyla ‘%’ demek Network’teki herhangi bir yerden erişim izin verilmesi 
MariaDB [(none)]> grant all privileges on keystone.* to keystone@'%' identified by 'password';
Query OK, 0 rows affected (0.00 sec)
#Yapılan işlemlerin kaydeilmesi
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye

Keystone Bileşenin ve Yardımcı Paketlerin Kurulması

apt -y install keystone python3-openstackclient apache2 libapache2-mod-wsgi-py3 python3-oauth2client

Keystone’un Konfigurasyonun Yapılması

nano /etc/keystone/keystone.conf
#  440.Satır:  Memcache Server IP’sini gir “:440”.satırı bulabilirsiniz.Default’u #memcache_servers = localhost:11211
memcache_servers = controlnode01_:11211
# 598.Satır:  MariaDB connection bilgisiyle değiştir.Default’u “connection = sqlite:////var/lib/keystone/keystone.db”
connection = mysql+pymysql://keystone:password@controlnode01_IP/keystone
# 2508.Satır: uncomment(# kaldır) provider = fernet
su -s /bin/bash keystone -c "keystone-manage db_sync"
# initialize Fernet key (Fernet key’i başlatma)
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
# define keystone API Host (Keystone API host’u tanımlama)
export controller=controlnode01_IP
# bootstrap keystone  (Keystone API’lerin önyüklenmesi)
# set any password for [adminpassword] section
keystone-manage bootstrap --bootstrap-password adminpassword \
--bootstrap-admin-url http://$controller:5000/v3/ \
--bootstrap-internal-url http://$controller:5000/v3/ \
--bootstrap-public-url http://$controller:5000/v3/ \
--bootstrap-region-id RegionOne

Apache httpd Konfigurasyonu

nano /etc/apache2/apache2.conf
# 70.satır: specify server name(Server ismini tanımlama)
ServerName controlnode01.example.com
systemctl restart apache2
systemctl enable apache2

OpenStack Victoria: Keystone Konfigürasyonu

1. Enviroment Variable(ortam değişkenlerini)’larını Ayarlama

nano ~/keystonerc
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
# [OS_PASSWORD] değeri,  keystone bootstrap yapılandırılırken verilen password girilir.Biz “adminpassword” girmiştik.
export OS_PASSWORD=adminpassword
# [OS_AUTH_URL] değeri için, keystone hostname(controlnode01.example.local)’i veya IP addresi girilir.
export OS_AUTH_URL=http://controlnode01_IP:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
export PS1='\u@\h \W(keystone)\$ '
chmod 600 ~/keystonerc
. ~/keystonerc
echo "source ~/keystonerc" >> ~/.bash_profile
source ~/keystonerc
>> ~/.bash_profile

2. Proje Ekleme

# create [service] project , [service] projesini oluştur.
~(keystone)# openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 37197271a1954ddb90207a95d5f46488 |
| is_domain   | False                            |
| name        | service                          |
| options     | {}                               |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+
# confirm settings  ayarları onayla
~(keystone)# openstack project list
+----------------------------------+---------+
| ID                               | Name    |
+----------------------------------+---------+
| 37197271a1954ddb90207a95d5f46488 | service |
| b573c9e160864f028fc2d681a929f5af | admin   |
+----------------------------------+---------+