Puncte:1

Proxy invers Apache cu autentificare Kerberos și autorizare LDAP

drapel to

Versiunea serverului: Apache/2.4.37 (Red Hat Enterprise Linux) Apache este lansat ca container în clusterul Openshift.

Folosesc Apache ca proxy direct și invers pentru Kibana.

Cerința obligatorie este utilizarea Kerberos și aveți nevoie de un model pentru a diferenția accesul. Am creat în elasticsearch utilizatori admin și vizualizatori. În funcție de grupul LDAP, Apache trebuie să transmită fie un antet cu numele de utilizator și parola administratorului, fie un vizualizator. Dar nu am cum să o pot obține.

  • Configurația mea:
<AuthnProviderAlias ldap ldap-access>
    AuthLDAPURL "ldap://ldap.example.com:389/dc=example,dc=com?cn?sub?(objectClass=user)"
    AuthLDAPBindDN "CN=ServiceAccount,OU=Users,DC=example,DC=com"
    AuthLDAPBindPassword "password"
</AuthnProviderAlias>

<AuthzProviderAlias ldap-group ldap-group-viewer CN=viewer,OU=Groups,DC=example,DC=com>
    AuthLDAPURL "ldap://ldap.example.com:389/dc=example,dc=com?cn?sub?(objectClass=user)"
    AuthLDAPBindDN "CN=ServiceAccount,OU=Users,DC=example,DC=com"
    AuthLDAPBindPassword "password""
</AuthzProviderAlias>

<AuthzProviderAlias ldap-group ldap-group-admin CN=admin,OU=Groups,DC=example,DC=com>
    AuthLDAPURL "ldap://ldap.example.com:389/dc=example,dc=com?cn?sub?(objectClass=user)"
    AuthLDAPBindDN "CN=ServiceAccount,OU=Users,DC=example,DC=com"
    AuthLDAPBindPassword "password""
</AuthzProviderAlias>


<LocationMatch "/kibana">
    AuthType GSSAPI
    AuthName "Kerberos Auth"

    GssapiSSLonly Off
    GssapiBasicAuth On
    GssapiAllowedMech krb5

    GssapiSessionKey file:/tmp/session.key
    GssapiCredStore keytab:/etc/httpd/krb5.keytab
    GssapiCredStore ccache:FILE:/var/run/httpd/krb5ccache
    GssapiDelegCcacheDir /var/run/httpd/clientcaches
    GssapiImpersonate On
    GssapiLocalName On

    GssapiUseSessions On
    Session On
    SessionExpiryUpdateInterval 300
    SessionInclude /
    SessionCookieName gssapi_session path=/;httponly;secure;
    
    BrowserMatch Windows gssapi-no-negotiate
    LogLevel debug

    AuthBasicProvider ldap-access
    <RequireAll>
      Require ldap-group-viewer
      Require ldap-group-admin
    </RequireAll>

    ProxyPass http://kibana:5601/kibana
    ProxyPassReverse http://kibana:5601/kibana

    RequestHeader set Authorization "Basic dmlld2VyOnZpZXdlcg=="
    
</LocationMatch>

În această configurație, toți utilizatorii din grupuri se conectează cu aceeași autentificare, dar trebuie să partajez drepturile.

  • Pentru spectatori - RequestHeader set Autorizare „Basic dmlld2VyOnZpZXdlcg=="
  • Pentru administratori - RequestHeader set Authorization "Basic YWRtaW46YWRtaW4="

Am încercat să adaug un atribut la adresa URL LDAP și să folosesc o variabilă AUTHORIZATION_Viewer ca aici Apache: Cum să spun cu ce server LDAP a fost autentificat utilizatorul meu:

AuthLDAPURL „ldap://ldap.example.com:389/dc=example,dc=com?cn,Viewer?sub?(objectClass=user)” 

Și apoi:

RequestHeader set Autorizare „Basic dmlld2VyOnZpZXdlcg==" env=AUTHENTICATE_Viewer

Dar în jurnalele Apache o astfel de variabilă nu apare deloc.

Am încercat și varianta cu blocul, dar fără succes.

Există vreo modalitate de a crea o aparență de model în Apache?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.