OKD/OpenshiftクラスタのOpenLDAP認証の構成


前言


Linuxオペレーティングシステムのインストールが完了した後、管理者がアプリケーションのために異なるユーザーを作成する必要があるように、K 8 S/OKD/Openshiftクラスタも同様に必要ですが、OKD/Openshiftクラスタでは、以下に示すようにOpenLDAPディレクトリシステムを統合できます.

OpenLDAPインストール


この文書ではhelmを使用してopenldapをインストールし、まずcharsをダウンロードして表示します.
git clone https://github.com/helm/charts

オプション.ミラーリングはまず私有倉庫に送ることができる(PS:テストでlatestミラーリングに問題があることを発見した):
docker pull osixia/openldap:1.2.1
docker tag docker.io/osixia/openldap:1.2.1 okd-lr.zyl.io:5001/osixia/openldap:1.2.1
docker push okd-lr.zyl.io:5001/osixia/openldap:1.2.1

ミラーはrootユーザーで実行し(gosudo切り替え)、権限を付与します.
oc new-project auth-openshift
oc adm policy add-scc-to-user anyuid -z default

Openldap charパラメータをカスタマイズします.
cd charts/stable/openldap
cp values.yaml values_cs.yaml
vi values_cs.yaml
...

env:
  # LDAP   dc=zyl,dc=io ,     Zyl Inc.
  LDAP_ORGANISATION: "Zyl Inc."
  LDAP_DOMAIN: "zyl.io"
...

# Ldap    (cn=admin,dc=zyl,dc=io) config   (cn=admin,cn=config)  
adminPassword: admin
configPassword: config

#      ,         glusterfs    ,       。
persistence:
  enabled: true
  storageClass: "glusterfs-app"
  accessMode: ReadWriteOnce
  size: 8Gi

helmコマンドのインストールを実行します.
helm install --name openldap -f values_cs.yaml .

Ldapが起動すると、ドメインdc=zyl、dc=ioおよびhdb管理者アカウントcn=admin、dc=zyl、dc=ioが作成されます.次のように、このドメインの下にユーザーとグループ情報を作成します.
% oc rsh deploy/openldap
% cat > users.ldif <

Masterの構成Ldap認証の使用


OKD初期インストール時にopenshift_が設定されていない場合master_identity_providersの場合、OKDはデフォルトで次の認証を使用します.この認証方式では、任意のユーザーがクラスタにログインできます.
% vi /etc/origin/master/master-config.yaml 
...
oauthConfig:
...
  identityProviders:
  - challenge: true
    login: true
    mappingMethod: claim
    name: allow_all
    provider:
      apiVersion: v1
      kind: AllowAllPasswordIdentityProvider
...

すべてのMaster構成の次のセグメントを削除します.
  - challenge: true
    login: true
    mappingMethod: claim
    name: allow_all
    provider:
      apiVersion: v1
      kind: AllowAllPasswordIdentityProvider

次のように置き換えます.
  - challenge: true
    login: true
    mappingMethod: claim
    name: ldap_auth
    provider:
      apiVersion: v1
      attributes:
        email:
        - mail
        id:
        - dn
        name:
        - cn
        preferredUsername:
        - uid
      bindDN: cn=admin,dc=zyl,dc=io
      bindPassword: admin
      insecure: true
      kind: LDAPPasswordIdentityProvider
      url: ldap://openldap.auth-openshift.svc.cluster.local./ou=People,dc=zyl,dc=io?uid

注意:TLS、すなわちinsecure:falseを有効にするには、ca:my-ldap-ca.crtを追加し、Master:/etc/origin/master/my-ldap-ca.crtにコピーするなど、OpenLDAPの証明書を提供する必要があります.
AnsibleプロファイルのOSEv 3.yamlは以下のセグメントを加えて、アップグレード時に復元されないようにします.
##### Auth
openshift_master_identity_providers:
- name: ldap_auth
  challenge: true
  login: true
  kind: LDAPPasswordIdentityProvider
  bindDN: cn=admin,dc=zyl,dc=io
  bindPassword: admin
  url: ldap://openldap.auth-openshift.svc.cluster.local./ou=People,dc=zyl,dc=io?uid
  attributes:
    id: ['dn']
    email: ['mail']
    name: ['cn']
    preferredUsername: ['uid']
  insecure: true

その後、Masterノードをそれぞれ再起動します.
master-restart api
master-restart controllers
oc get pod -n kube-system  
master-logs api api                   #     
master-logs controllers controllers

LDAPグループ情報をOKDに同期する


次のファイルを作成します.
cat > rfc2307_config_user_defined.yaml <

次のコマンドを実行して同期します.
% oc adm groups sync --sync-config=rfc2307_config_user_defined.yaml --confirm
group/zyl
group/admin
group/openshift_user
group/openshift_admin

openshift_adminは管理者グループとしてopenshift_userは通常のユーザーグループであり、権限を付与します.
oc adm policy add-cluster-role-to-group cluster-admin openshift_admin
oc adm policy add-cluster-role-to-group basic-user openshift_user

ログインユーザー:
oc login -uadmin -pchangeme

ユーザーがログインすると、OKDは自分のユーザーとLDAPの対応を生成します.
% oc get groups
NAME              USERS
admin             admin
openshift_admin   admin
openshift_user    zyl
zyl               zyl                

% oc get users
NAME      UID                                    FULL NAME   IDENTITIES
admin     3c4ae0bf-338c-11e9-b2f8-52540042814f   admin       ldap_auth:uid=admin,ou=People,dc=zyl,dc=io

% oc get identities
NAME                                         IDP NAME    IDP USER NAME                      USER NAME   USER UID
ldap_auth:uid=admin,ou=People,dc=zyl,dc=io   ldap_auth   uid=admin,ou=People,dc=zyl,dc=io   admin       3c4ae0bf-338c-11e9-b2f8-52540042814f

リファレンスドキュメント

  • OpenLDAP Helm Chart: https://github.com/helm/chart... ;
  • osixia/openldap: https://github.com/osixia/doc... ;