{"id":70867,"date":"2020-02-22T06:40:58","date_gmt":"2020-02-22T03:40:58","guid":{"rendered":"https:\/\/prohoster.info\/blog\/prikruchivaem-ldap-avtorizacziyu-k-kubernetes"},"modified":"2020-03-03T16:14:36","modified_gmt":"2020-03-03T13:14:36","slug":"prikruchivaem-ldap-avtorizacziyu-k-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/prikruchivaem-ldap-avtorizacziyu-k-kubernetes","title":{"rendered":"Integrerer LDAP-godkendelse med Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Integrerer LDAP-godkendelse med Kubernetes\" src=\"\/wp-content\/uploads\/2020\/02\/2b0f0a4921e049a78a015e7693d697cf.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>En kort vejledning til, hvordan du kan forbinde Kubernetes med din LDAP-server ved hj\u00e6lp af Keycloak og konfigurere import af brugere og grupper. Dette vil g\u00f8re det muligt at konfigurere RBAC for dine brugere og bruge auth-proxy til at beskytte Kubernetes Dashboard og andre applikationer, der ikke kan autentificere sig selv.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"ustanovka-keycloak\">Installation af Keycloak<\/h2>\n<p><\/p>\n<p>Lad os antage, at du allerede har en LDAP-server. Det kan v\u00e6re Active Directory, FreeIPA, OpenLDAP eller noget andet. Hvis du ikke har en LDAP-server, kan du grundl\u00e6ggende oprette brugere direkte i Keycloak-interfacet eller bruge offentlige oidc-udbydere (Google, Github, Gitlab), resultatet vil blive n\u00e6sten det samme.<\/p>\n<p><\/p>\n<p>F\u00f8rst skal vi installere selve Keycloak; installationen kan udf\u00f8res separat eller direkte i Kubernetes-klyngen. Hvis du har flere Kubernetes-klynger, vil det typisk v\u00e6re lettere at installere det separat. P\u00e5 den anden side kan du altid bruge <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/helm\/charts\/tree\/master\/stable\/keycloak\">den officielle helm-chart<\/a><\/noindex> og installere den direkte i din klynge.<\/p>\n<p><\/p>\n<p>For at gemme data i Keycloak har du brug for en database. Som standard bruges <code>h2<\/code> (alle data gemmes lokalt), men det er ogs\u00e5 muligt at bruge <code>postgres<\/code>, <code>mysql<\/code> eller <code>mariadb<\/code>.<br \/>\nHvis du alligevel har besluttet at installere Keycloak separat, finder du mere detaljerede instruktioner i <noindex><a rel=\"nofollow\" href=\"https:\/\/www.keycloak.org\/docs\/latest\/getting_started\/index.html\">den officielle dokumentation<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h2 id=\"nastroyka-federacii\">Konfiguration af federation<\/h2>\n<p><\/p>\n<p>F\u00f8rst opretter vi et nyt realm. Et realm er et rum for vores applikation. Hver applikation kan have sit eget realm med forskellige brugere og autentifikationsindstillinger. Master realm bruges af Keycloak selv, og det er forkert at bruge det til andet.<\/p>\n<p><\/p>\n<p>Klik p\u00e5 <strong>Tilf\u00f8j realm<\/strong><\/p>\n<p><\/p>\n<p>Mulighed<br \/>\nV\u00e6rdi<\/p>\n<p><strong>Navn<\/strong><br \/>\n<code>kubernetes<\/code><\/p>\n<p><strong>Visningsnavn<\/strong><br \/>\n<code>Kubernetes<\/code><\/p>\n<p><strong>HTML Visningsnavn<\/strong><br \/>\n<code>&lt;img src=&quot;https:\/\/kubernetes.io\/images\/nav_logo.svg&quot; width=&quot;400&quot; &gt;<\/code><\/p>\n<p><\/p>\n<p>Kubernetes tjekker som standard, om en brugers e-mail er bekr\u00e6ftet eller ej. Da vi bruger vores egen LDAP-server, vil denne kontrol n\u00e6sten altid returnere <code>false<\/code>. Lad os deaktivere visningen af denne parameter i Kubernetes:<\/p>\n<p><\/p>\n<p><strong>Klientomfang<\/strong> \u2192 <strong>E-mail<\/strong> \u2192 <strong>Mapper<\/strong> \u2192 <strong>E-mail bekr\u00e6ftet<\/strong> (Slet)<\/p>\n<p><\/p>\n<p>Nu konfigurerer vi federation, for dette g\u00e5r vi til:<\/p>\n<p><\/p>\n<p><strong>Brugerfederation<\/strong> \u2192 <strong>Tilf\u00f8j udbyder\u2026<\/strong> \u2192 <strong>ldap<\/strong><\/p>\n<p><\/p>\n<p>Her er et eksempel p\u00e5 konfiguration for FreeIPA:<\/p>\n<p><\/p>\n<p>Mulighed<br \/>\nV\u00e6rdi<\/p>\n<p><strong>Konsol Visningsnavn<\/strong><br \/>\n<code>freeipa.example.org<\/code><\/p>\n<p><strong>Leverand\u00f8r<\/strong><br \/>\n<code>Red Hat Directory Server<\/code><\/p>\n<p><strong>UUID LDAP-attribut<\/strong><br \/>\n<code>ipauniqueid<\/code><\/p>\n<p><strong>Forbindelses-URL<\/strong><br \/>\n<code>ldaps:\/\/freeipa.example.org<\/code><\/p>\n<p><strong>Brugere DN<\/strong><br \/>\n<code>cn=users,cn=accounts,dc=example,dc=org<\/code><\/p>\n<p><strong>Bind DN<\/strong><br \/>\n<code>uid=keycloak-svc,cn=users,cn=accounts,dc=example,dc=org<\/code><\/p>\n<p><strong>Bind Credential<\/strong><br \/>\n<code>&lt;password&gt;<\/code><\/p>\n<p><strong>Tillad Kerberos autentifikation:<\/strong><br \/>\n<code>on<\/code><\/p>\n<p><strong>Kerberos Realm:<\/strong><br \/>\n<code>EXAMPLE.ORG<\/code><\/p>\n<p><strong>Server Principal:<\/strong><br \/>\n<code>HTTP\/freeipa.example.org@EXAMPLE.ORG<\/code><\/p>\n<p><strong>KeyTab:<\/strong><br \/>\n<code>\/etc\/krb5.keytab<\/code><\/p>\n<p><\/p>\n<p>Brugeren <code>keycloak-svc<\/code> skal oprettes p\u00e5 forh\u00e5nd p\u00e5 vores LDAP-server.<\/p>\n<p><\/p>\n<p>I tilf\u00e6lde af Active Directory er det tilstr\u00e6kkeligt blot at v\u00e6lge <strong>Leverand\u00f8r: Active Directory<\/strong> og de n\u00f8dvendige indstillinger vil automatisk blive indsat i formen.<\/p>\n<p><\/p>\n<p>Klik p\u00e5 <strong>Gem<\/strong><\/p>\n<p><\/p>\n<p>Nu g\u00e5r vi videre til:<\/p>\n<p><\/p>\n<p><strong>Brugerfederation<\/strong> \u2192 <strong>freeipa.example.org<\/strong> \u2192 <strong>Mapper<\/strong> \u2192 <strong>Fornavn<\/strong><\/p>\n<p><\/p>\n<p>Mulighed<br \/>\nV\u00e6rdi<\/p>\n<p><strong>LDAP-attribut<\/strong><br \/>\n<code>givenName<\/code><\/p>\n<p><\/p>\n<p>Lad os nu aktivere gruppe-mapping:<\/p>\n<p><\/p>\n<p><strong>Brugerfederation<\/strong> \u2192 <strong>freeipa.example.org<\/strong> \u2192 <strong>Mapper<\/strong> \u2192 <strong>Opret<\/strong><\/p>\n<p><\/p>\n<p>Mulighed<br \/>\nV\u00e6rdi<\/p>\n<p><strong>Navn<\/strong><br \/>\n<code>groups<\/code><\/p>\n<p><strong>Mapper type<\/strong><br \/>\n<code>group-ldap-mapper<\/code><\/p>\n<p><strong>LDAP Grupper DN<\/strong><br \/>\n<code>cn=groups,cn=accounts,dc=example,dc=org<\/code><\/p>\n<p><strong>Brugergrupper Hentningsstrategi<\/strong><br \/>\n<code>GET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE<\/code><\/p>\n<p><\/p>\n<p>Nu er konfigurationen af federation afsluttet, lad os g\u00e5 videre til klientkonfigurationen.<\/p>\n<p><\/p>\n<h2 id=\"nastroyka-klienta\">Klientkonfiguration<\/h2>\n<p><\/p>\n<p>Vi opretter en ny klient (applikation, der vil hente brugere fra Keycloak). G\u00e5 til:<\/p>\n<p><\/p>\n<p><strong>Klienter<\/strong> \u2192 <strong>Opret<\/strong><\/p>\n<p><\/p>\n<p>Mulighed<br \/>\nV\u00e6rdi<\/p>\n<p><strong>Denne ID bruges til at identificere<\/strong><br \/>\n<code>kubernetes<\/code><\/p>\n<p><strong>Adgangstype<\/strong><br \/>\n<code>confidenrial<\/code><\/p>\n<p><strong>Rod URL<\/strong><br \/>\n<code>http:\/\/kubernetes.example.org\/<\/code><\/p>\n<p><strong>Gyldige omdirigerings-URIs<\/strong><br \/>\n<code>http:\/\/kubernetes.example.org\/*<\/code><\/p>\n<p><strong>Admin URL<\/strong><br \/>\n<code>http:\/\/kubernetes.example.org\/<\/code><\/p>\n<p><\/p>\n<p>Vi opretter ogs\u00e5 et scope for grupper:<\/p>\n<p><\/p>\n<p><strong>Klient Scopes<\/strong> \u2192 <strong>Opret<\/strong><\/p>\n<p><\/p>\n<p>Mulighed<br \/>\nV\u00e6rdi<\/p>\n<p><strong>Skabelon<\/strong><br \/>\n<code>Ingen skabelon<\/code><\/p>\n<p><strong>Navn<\/strong><br \/>\n<code>groups<\/code><\/p>\n<p><strong>Fuld gruppevej<\/strong><br \/>\n<code>false<\/code><\/p>\n<p><\/p>\n<p>Og vi konfigurerer mapper til dem:<\/p>\n<p><\/p>\n<p><strong>Klient Scopes<\/strong> \u2192 <strong>groups<\/strong> \u2192 <strong>Mapper<\/strong> \u2192 <strong>Opret<\/strong><\/p>\n<p><\/p>\n<p>Mulighed<br \/>\nV\u00e6rdi<\/p>\n<p><strong>Navn<\/strong><br \/>\n<code>groups<\/code><\/p>\n<p><strong>Mapper Type<\/strong><br \/>\n<code>Gruppemedlemskab<\/code><\/p>\n<p><strong>Token Claim Navn<\/strong><br \/>\n<code>groups<\/code><\/p>\n<p><\/p>\n<p>Nu skal vi aktivere gruppering i vores klient scope:<\/p>\n<p><\/p>\n<p><strong>Klienter<\/strong> \u2192 <strong>kubernetes<\/strong> \u2192 <strong>Klient Scopes<\/strong> \u2192 <strong>Standard Klient Scopes<\/strong><\/p>\n<p><\/p>\n<p>Vi v\u00e6lger <strong>groups<\/strong> i <strong>Tilg\u00e6ngelige Client Scopes<\/strong>, klik p\u00e5 <strong>Tilf\u00f8j valgte<\/strong><\/p>\n<p><\/p>\n<p>Lad os nu konfigurere godkendelse af vores applikation, g\u00e5 til:<\/p>\n<p><\/p>\n<p><strong>Klienter<\/strong> \u2192 <strong>kubernetes<\/strong><\/p>\n<p><\/p>\n<p>Mulighed<br \/>\nV\u00e6rdi<\/p>\n<p><strong>Autorisation Aktiveret<\/strong><br \/>\n<code>TIL<\/code><\/p>\n<p><\/p>\n<p>Klik p\u00e5 <strong>gem<\/strong> og hermed er oprettelsen af klienten f\u00e6rdig, nu p\u00e5 fanen<\/p>\n<p><\/p>\n<p><strong>Klienter<\/strong> \u2192 <strong>kubernetes<\/strong> \u2192 <strong>Oplysninger<\/strong><\/p>\n<p><\/p>\n<p>vil du kunne f\u00e5 <strong>Secret<\/strong> som vi vil bruge fremadrettet.<\/p>\n<p><\/p>\n<h2 id=\"nastroyka-kubernetes\">Kubernetes konfiguration<\/h2>\n<p><\/p>\n<p>Konfiguration af Kubernetes til OIDC-godkendelse er ganske triviel og ikke s\u00e6rlig kompleks. Alt, hvad du beh\u00f8ver, er at placere CA-certifikatet fra din OIDC-server i <code>\/etc\/kubernetes\/pki\/oidc-ca.pem<\/code> og tilf\u00f8je de n\u00f8dvendige indstillinger til kube-apiserver.<br \/>\nFor at g\u00f8re dette, opdater <code>\/etc\/kubernetes\/manifests\/kube-apiserver.yaml<\/code> p\u00e5 alle dine mastere:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">...\nspec:\n  containere:\n  - kommando:\n    - kube-apiserver\n...\n    - --oidc-ca-file=\\\/etc\\\/kubernetes\\\/pki\\\/oidc-ca.pem\n    - --oidc-client-id=kubernetes\n    - --oidc-groups-claim=groups\n    - --oidc-issuer-url=https:\\\/\\\/keycloak.example.org\\\/auth\\\/realms\\\/kubernetes\n    - --oidc-username-claim=email\n...<\/code><\/pre>\n<p><\/p>\n<p>Opdater ogs\u00e5 kubeadm-konfigurationen i klyngen, s\u00e5 du ikke mister disse indstillinger ved opdatering:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">kubectl edit -n kube-system configmaps kubeadm-config<\/code><\/pre>\n<p><\/p>\n<pre><code class=\"plaintext\">...\ndata:\n  ClusterConfiguration: |\n    apiServer:\n      extraArgs:\n        oidc-ca-file: \\\/etc\\\/kubernetes\\\/pki\\\/oidc-ca.pem\n        oidc-client-id: kubernetes\n        oidc-groups-claim: groups\n        oidc-issuer-url: https:\\\/\\\/keycloak.example.org\\\/auth\\\/realms\\\/kubernetes\n        oidc-username-claim: email\n...<\/code><\/pre>\n<p><\/p>\n<p>Nu er konfigurationen af Kubernetes afsluttet. Du kan gentage disse handlinger i alle dine Kubernetes-klynger.<\/p>\n<p><\/p>\n<h2 id=\"nachalnaya-avtorizaciya\">Indledende godkendelse<\/h2>\n<p><\/p>\n<p>Efter disse handlinger vil du have en Kubernetes-klynge med konfigureret OIDC-godkendelse. Den eneste ting er, at dine brugere endnu ikke har konfigureret en klient eller deres egen kubeconfig. For at l\u00f8se dette problem skal du konfigurere automatisk udstedelse af kubeconfig til brugerne efter en succesfuld godkendelse.<\/p>\n<p><\/p>\n<p>Til dette kan du bruge specielle webapplikationer, der muligg\u00f8r brugerautentifikation og derefter muligg\u00f8r download af en klar kubeconfig. En af de mest bekvemme er <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/negz\/kuberos\">Kuberos<\/a><\/noindex>, som g\u00f8r det muligt at beskrive alle Kubernetes-klynger i \u00e9n konfigurationsfil og nemt skifte imellem dem.<\/p>\n<p><\/p>\n<p>For at konfigurere Kuberos er det nok at beskrive en skabelon til kubeconfig og starte med f\u00f8lgende parametre:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">kuberos https:\/\/keycloak.example.org\/auth\/realms\/kubernetes kubernetes \/cfg\/secret \/cfg\/template<\/code><\/pre>\n<p><\/p>\n<p>For more detailed information, see <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/negz\/kuberos#usage\">Brug<\/a><\/noindex> on Github.<\/p>\n<p><\/p>\n<p>It is also possible to use <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/int128\/kubelogin\">kubelogin<\/a><\/noindex> if you want to perform authentication directly on the user's computer. In this case, a browser will open for the user with an authentication form on localhost.<\/p>\n<p><\/p>\n<p>The obtained kubeconfig can be verified on the site <noindex><a rel=\"nofollow\" href=\"https:\/\/jwt.io\/#debugger-io\">jwt.io<\/a><\/noindex>. Just copy the value <code>users[].user.auth-provider.config.id-token<\/code> from your kubeconfig into the form on the site and immediately get the decryption.<\/p>\n<p><\/p>\n<h2 id=\"nastroyka-rbac\">Setting up RBAC<\/h2>\n<p><\/p>\n<p>When configuring RBAC, you can refer to either the username (the field <code>name<\/code> in the jwt token) or to the user group (the field <code>groups<\/code> in the jwt token). Here is an example of rights configuration for the group <code>kubernetes-default-namespace-admins<\/code>:<\/p>\n<p>\n<b class=\"spoiler_title\">kubernetes-default-namespace-admins.yaml<\/b><\/p>\n<pre><code class=\"plaintext\">apiVersion: rbac.authorization.k8s.io\/v1\nkind: Role\nmetadata:\n  name: default-admins\n  namespace: default\nrules:\n- apiGroups:\n  - '*'\n  resources:\n  - '*'\n  verbs:\n  - '*'\n---\napiVersion: rbac.authorization.k8s.io\/v1\nkind: RoleBinding\nmetadata:\n  name: kubernetes-default-namespace-admins\n  namespace: default\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: default-admins\nsubjects:\n- apiGroup: rbac.authorization.k8s.io\n  kind: Group\n  name: kubernetes-default-namespace-admins<\/code><\/pre>\n<p><\/p>\n<p>More examples for RBAC can be found in <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/rbac\/\">den officielle dokumentation fra Kubernetes<\/a><\/noindex><\/p>\n<p><\/p>\n<h2 id=\"nastroyka-auth-proxy\">Konfiguration af auth-proxy<\/h2>\n<p><\/p>\n<p>There is a wonderful project <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/keycloak\/keycloak-gatekeeper\">keycloak-gatekeeper<\/a><\/noindex>, which allows securing any application, giving the user the ability to authenticate on an OIDC server. I will show how to set it up using the example of Kubernetes Dashboard:<\/p>\n<p>\n<b class=\"spoiler_title\">dashboard-proxy.yaml<\/b><\/p>\n<pre><code class=\"plaintext\">apiVersion: extensions\/v1beta1\nkind: Deployment\nmetadata:\n  name: kubernetes-dashboard-proxy\nspec:\n  replicas: 1\n  template:\n    metadata:\n      labels:\n        app: kubernetes-dashboard-proxy\n    spec:\n      containers:\n      - args:\n        - --listen=0.0.0.0:80\n        - --discovery-url=https:\/\/keycloak.example.org\/auth\/realms\/kubernetes\n        - --client-id=kubernetes\n        - --client-secret=\n        - --redirection-url=https:\/\/kubernetes-dashboard.example.org\n        - --enable-refresh-tokens=true\n        - --encryption-key=ooTh6Chei1eefooyovai5ohwienuquoh\n        - --upstream-url=https:\/\/kubernetes-dashboard.kube-system\n        - --resources=uri=\/*\n        image: keycloak\/keycloak-gatekeeper\n        name: kubernetes-dashboard-proxy\n        ports:\n        - containerPort: 80\n          livenessProbe:\n            httpGet:\n              path: \/oauth\/health\n              port: 80\n            initialDelaySeconds: 3\n            timeoutSeconds: 2\n          readinessProbe:\n            httpGet:\n              path: \/oauth\/health\n              port: 80\n            initialDelaySeconds: 3\n            timeoutSeconds: 2\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: kubernetes-dashboard-proxy\nspec:\n  ports:\n  - port: 80\n    protocol: TCP\n    targetPort: 80\n  selector:\n    app: kubernetes-dashboard-proxy\n  type: ClusterIP<\/code><\/pre>\n<p>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/441112\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Keycloak \u043c\u043e\u0436\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c Kubernetes \u0441 \u0432\u0430\u0448\u0438\u043c LDAP-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043c\u043f\u043e\u0440\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0433\u0440\u0443\u043f\u043f. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c RBAC \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c auth-proxy \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c Kubernetes Dashboard \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0443\u043c\u0435\u044e\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Keycloak \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c LDAP-\u0441\u0435\u0440\u0432\u0435\u0440. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c Active [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":70868,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-70867","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/prikruchivaem-ldap-avtorizacziyu-k-kubernetes\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u043c LDAP-\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043a Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/prikruchivaem-ldap-avtorizacziyu-k-kubernetes\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-22T03:40:58+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:36+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Attaching LDAP authentication to Kubernetes | ProHoster","description":"A brief guide on how to do it.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/prikruchivaem-ldap-avtorizacziyu-k-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u043c LDAP-\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043a Kubernetes | ProHoster","og:description":"\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a.","og:url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/prikruchivaem-ldap-avtorizacziyu-k-kubernetes","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-22T03:40:58+00:00","article:modified_time":"2020-03-03T13:14:36+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"70867","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:12:23","updated":"2022-09-28 01:58:51","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/70867","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=70867"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/70867\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/70868"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=70867"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=70867"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=70867"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}