Nakon instalacije OpenShift okruženja (opisano ovdje) logičan korak bi bio dodati korisničke račune za pristup OpenShift web konzoli. Kako je prilikom instalacije u inventory datoteci definirano da se inicijalno korisničkim računima upravlja iz OpenShifta, a posredstvom /etc/origin/master/htpasswd datoteke moguće je dodati korisničke račune OpenShift CLI naredbama. Detaljnije o dodavanju i mapiranju identiteta korisnika možete pronaći na ovoj poveznici.
Ručno kreiranje svakog novog korisničkog računa, ako je veće okruženje u kojem se radi, može biti zamoran posao a većina organizacija koristi Active Directory ovaj post opisati će kako koristiti Active Directory za autentifikaciju korisnika za OpenShift okruženje. Ukoliko u vašoj organizaciji Active Directory nije opcija, OpenShift podržava impozantan broj autentifikacijkih servisa a detalje možete pronaći ovdje.
Bitne napomene
Kripitiranje lozinke – ne pohranjujte lozinku u konfiguracijskoj datoteci u plan tekstu. OpenShift vam omogućava da lozinku kripirano pohranite u vanjskoj daoteci. Iskoristite tu mogućnost.
Višestruki autentifikacijki mehanizmi – OpenShift podržava paralelno korištenje autentifikacijkih mehanizama. Bitno je obratiti pozornost na atribut “mappingMethod” prilikom korištenja više od jednog (ili prilikom zamjene) autentifikacijskog mehanizma. Detalje možete pronaći ovdje.
Filteri korisničkih računa – obratite pozornost na filtere korisničkih računa ako se koristi mappingMethod: add. Naime, time se svakom korisniku automatizmom omogućava prijava u OpenShift (doduše s vrlo limitiranim pravima, ali svejedno)
Preduvjeti
Active Directory korisnički račun – nadam se da Active Directory u vašem okruženju ne dopušta anonymous binding. Ako anonymous binding nije moguć potrebno je u konfiguraciji OpenShifta definirati korisnički račun koji će se koristit za bind. Nikakv posebna prava nisu potrebna te će u većini slučajeva biti dovoljno samo kreirati korisnički račun. Za potrebe laba ja sam kreirao LAB\svcOSLDAP sa lozinkom: “1-Bind-Lozinka-1” u OU=Users.
Active Directory grupa – kako bi se ograničilo koji korisnici imaju pravo prijaviti se na OpenShift potrebno je definirati filter koji će po nekom ključu dozvoliti samo određenim korisnicima mogućnost prijave na OpenShift. Za tu potrebu ja sam kreirao grupu OpenShift_All_Users grupu u OU=Users u koju sam dodao korisničke račune kojima želim omogućiti prijavu na OpenShift. Tu grupu ću iskoristit za filtriranje korisničkih računa.
Kriptiranje lozinke za bind
Lozinku za AD bind ne želimo pohraniti u plan tekst formatu u konfiguraciji OpenShifta. Da bi to izbjegli kreirati ćemo kriptiranu lozinku i ključ u dvije datoteke koje će se koristiti u konfiguracijskoj datoteci.
[root@lab-os-master01 ~]# cd /etc/origin/master [root@lab-os-master01 ~]# oc adm ca encrypt --genkey=lab_ldap_bind.key --out=lab_ldap_bind.encrypted Data to encrypt: 1-Bind-Lozinka-1
Kada se pojavi “Data to encrypt” potrebno je unijeti lozinku koja je korištena za kreiranje “LAB\svcOSLDAP” korisničkog računa. Navedeno će u /etc/origin/master folderu spremiti dvije datoteke: lab_ldap_bind.key i lab_ldap_bind.encrypted.
Omogućavanje Active Directory identity providera
Nakon što su kreirane datoteke sa kriptiranom lozinkom za Active Directory bind potrebno je dodati u master-conf.yaml datoteku novi identity provider.
[root@lab-os-master01 master]# nano master-config.yaml
Ispod “identityProviders” u “oauthConfig:” potrebno je dodati
oauthConfig: ... identityProviders: ... - name: 'LAB_ActiveDirectory' challenge: true login: true mappingMethod: add provider: apiVersion: v1 kind: LDAPPasswordIdentityProvider attributes: id: - sAMAccountName email: - mail name: - cn prefferedUsername: - sAMAccountName bindDN: 'cn=svcOSLDAP,ou=Users,dc=lab,dc=local' bindPassword: file: '/etc/origin/master/lab_ldap_bind.encrypted' keyFile: '/etc/origin/master/lab_ldap_bind.key' insecure: true url: 'ldap://lab.local:389/ou=users,dc=lab,dc=local?sAMAccountName?sub?(&(objectclass=organizationalPerson)(memberOf=CN=OpenShift_All_Users,OU=Users,DC=lab,DC=local))
Detalje o atributima mogu se pronaći ovdje. Bitno je napomenuti:
– mappingMethod: add – OpenShift će kreirati identitete da admin OpenShift sustava ne mora svaki identitet kreirati ručno
– id i preferredUsername: sAMAccountName – uid koji je specificiran u službenoj dokumentaciji u Active Directory se ne popunjava automatski prilikom kreiranja korisničkog računa te u tom slučaju OpenShift autentifikacija ne radi
– insecure: true- preporučam da izvan demo/lap okruženja koristite LDAPS te je u tom slučaju ovo potrebno promijeniti na false, port definiran u url atributu na 636 te dodati atribut “ca”.
– url: obratite pozornost na LDAP filter “(&(objectclass=organizationalPerson)(memberOf=CN=OpenShift_All_Users,OU=Users,DC=lab,DC=local))” čime se ograničava koji korisnički računi će se moći prijaviti u OpenShift (samo članovi OpenShift_All_Users AD grupe).
Promjene je potrebno pohraniti te nakon toga restartati api i controller naredbama
[root@lab-os-master01 master]# restart api [root@lab-os-master01 master]# master-restart controller
Na OpenShift konzoli (https://console.lab.local) prilikom pristupanja pojaviti će se odabir autentifikacijskog mehanizma s nazivom koji je definiran atributom “name”. U ovom primjeru to će biti “htpasswd_auth” i “LAB_ActiveDirectory”. Odabirom “LAB_ActiveDirectory” korisnici će moći unijeti svoje AD korisničko ime i lozinku za prijavu u OpenShift. Prava koja su im dodijeljena su minimalna te im je potrebno dodijeliti role ali to će se obraditi u blog postovima koji slijede.
Da li je OpenShift ispravno kreirao identity i identity mapping može se provjeriti naredbama:
[root@lab-os-master01 master]# oc get users [root@lab-os-master01 master]# oc get identity
Svi komentari, kritike, želje i pozdravi su dobrodošli :)