07 May 2019 ~ 0 Comments

Integracija OpenShift i Active Directory

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.

[[email protected] ~]# cd /etc/origin/master
[[email protected] ~]# 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.

[[email protected] 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

[[email protected] master]# restart api 
[[email protected] 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:

[[email protected] master]# oc get users
[[email protected] master]# oc get identity

Svi komentari, kritike, želje i pozdravi su dobrodošli :)

Tags: ,

Leave a Reply