Costruiamo un cloud con OpenStack: Keystone - The Identity Service #2

Costruiamo un cloud con OpenStack: Keystone - The Identity Service #2

A cura di: Alessio Mario
Security, Authentication and Access Management

1: Introduzione a Keystone

Keystone fornisce il servizio per la gestione dell’autenticazione, dell’autorizzazione e di un catalogo di servizi.

Il servizio di Identity è il primo servizio con cui un utente interagisce. Una volta autenticato, un utente finale può utilizzare la propria identità per accedere ad altri servizi OpenStack. Allo stesso modo, altri servizi OpenStack sfruttano il servizio Identity per garantire che gli utenti siano coloro che dicono di essere e scoprire dove si trovano altri servizi all’interno dello stack. Il servizio Identity può anche integrarsi con alcuni sistemi di gestione degli utenti esterni (come LDAP).

Utenti e servizi possono individuare altri servizi utilizzando il catalogo dei servizi, che è gestito sempre dal servizio Identity. Come suggerisce il nome, un catalogo di servizi è una raccolta di servizi disponibili in una distribuzione OpenStack. Ogni servizio può avere uno o più endpoint e ciascun endpoint può essere di tre tipi: amministrativo, interno o pubblico. In un ambiente di produzione, diversi tipi di endpoint potrebbero risiedere su reti separate esposte a diversi tipi di utenti per motivi di sicurezza. Ad esempio, la rete pubblica API potrebbe essere visibile da Internet in modo che i clienti possano gestire i propri servizi sul cloud. La rete dell’API di amministrazione potrebbe essere limitata agli operatori all’interno dell’organizzazione che gestisce l’infrastruttura cloud. La rete API interna potrebbe essere limitata agli host che contengono i servizi OpenStack. Inoltre, OpenStack supporta più Region per un fattore di scalabilità. Per semplicità, in questa guida utilizzo la rete di Management per tutti i tipi di endpoint e la regione RegionOne predefinita. Insieme, le region, i servizi e gli endpoint creati all’interno del servizio Identity comprendono il catalogo dei servizi per una distribuzione OpenStack. Ogni servizio OpenStack nella distribuzione richiede una “Service Entry” con endpoint corrispondenti memorizzati nel servizio Identity. Questo può essere fatto solo dopo che il servizio Identity è stato installato e configurato correttamente.

Vediamo quindi come implementare l’Identity Service di OpenStack, code-name Keystone!

0

2: SQL Database

I seguenti passi vanno eseguiti sul Controller Node

Colleghiamoci per prima cosa con utenza root al nostro database:

0 (1)

Creiamo il database “keystone“:

0 (2)

Assegnamo delle Grant appropriate al database keystone:

0 (3)

Possiamo uscire dal DB.

3: Installazione e Configurazione

Andiamo ad installare i pacchetti di Keystone:

0 (4)

Una volta terminata l’installazione, modifichiamo il file /etc/keystone/keystone.conf ed inseriamo le seguenti direttive:

0 (5)

Andiamo quindi a popolare il database creato in precedenza:

0 (6)

Andiamo a verificare che il DB sia stato popolato:

0 (7)

Andiamo quindi ad inizializzare il nostro Fernet Key Repositories:

0 (8)

Effettuiamo infine il Bootstrap del nostro Identity Service con il comando:

0 (10)

3: Configurazione HTTP Server

Modifichiamo il file “/etc/httpd/conf/httpd.conf” configurando il ServerName

0 (9)

Creiamo infine un Symlink al file /usr/share/keystone/wsgi-keystone.conf

0 (11)

Startiamo Apache e impostiamo lo start automatico al boot.

0 (12)

4: Creazione di Domain, Projects, Users, e Roles

Le sezioni successive utilizzano una combinazione di variabili di ambiente e opzioni di comando per interagire con il servizio Identity tramite il client openstack. Per aumentare l’efficienza delle operazioni client, OpenStack supporta semplici script noti anche come file OpenRC.

Prima di procedere andiamo a creare 2 di questi script (admin-openrc e demo-openrc) e posizioniamolo nella directory /root/keystone-scripts

screenshot-www.linkedin.com-2019.12 (1)
screenshot-www.linkedin.com-2019.12 (2)

Per attivarli possiamo lanciare:

0 (13)

Una volta attivato lo script admin-openrc andiamo a creare un Domain di esempio

0 (14)

e un Project che chiameremo “service”

0 (15)

I Task normali (non di amministrazione) devono utilizzare un Project e un utente non privilegiato. Creiamo per questo proposito ad esempio, il Project “myproject” e l’utente “myuser“.

0 (16)

Creiamo anche un ruolo chiamato “myrole

0 (18)

E associamo il ruolo appena creato, al progetto myproject e all’utente myuser

0 (19)

5: Verifica del servizio

Prima di procedere con l’installazione degli altri servizi, dobbiamo assicurarci che Keystone sia perfettamente funzionante.

Andiamo quindi a rimuovere temporaneamente le 2 variabile d’ambiente impostate in precedenza

0 (20)

Con l’utente “admin” andiamo a richiedere un AuthToken, inseriamo quando richiesta la password di admin e otterremo il nostro token:

screenshot-www.linkedin.com-2019.12 (3)
0 (21)

Facciamo la stessa cosa con l’utente “myuser” creato in precedenza:

screenshot-www.linkedin.com-2019.12 (4)
0 (22)

Perfetto! Keystone funziona senza problemi.

Nel prossimo tutorial continueremo la costruzione del nostro Cloud andando ad installare il servizio di Image, code-name Glance!