* 目次 [#l1cfab9e]
#contents

* LADPサーバとは [#t813739b]


** 簡単な説明 [#i9c1d80a]
簡単にいうと、社内用のシステムのアカウントを一元管理できるサーバ

** 丁寧な説明 [#jbf8312a]
LDAP (Lightweight Directory Access Protocol)は、情報サービスやディレクトリサービスを提供するためのプロトコルです。LDAPは、ユーザーやグループ、その他の情報を格納し、検索し、管理するための効率的な手段を提供します。一般的に、LDAPはユーザーアカウント情報、グループメンバーシップ、そして多数のアプリケーションに対するアクセス権限などを管理するために使用されます。

。

** LDAPサーバのdockerコンテナのメリット [#bb107e76]

*** 環境の統一 [#ae575bc5]
Dockerを使用すると、開発、テスト、本番環境など、どの環境でも同じ設定でLDAPサーバを立ち上げることができます。これにより、環境間の設定の違いによる問題を避けることができます。

*** スケーラビリティ [#ofbb3912]
Dockerコンテナは軽量で、必要に応じて迅速にスケーリングすることが可能です。したがって、需要が増えたときに迅速にLDAPサーバをスケールアウトすることが可能です。

*** 移植性 [#q8fb9360]
DockerコンテナはどのホストOS上でも動作します。これにより、LDAPサーバを異なるOSやクラウドプロバイダ間で移動することが容易になります。

*** バージョン管理とロールバック [#fd859ab9]
Dockerイメージはバージョン管理が可能で、問題が発生した場合に前のバージョンに戻すことができます。

*** 簡易的な導入と管理 [#gf8120fa]
Dockerを使用すると、LDAPサーバのインストールや設定が容易になり、また管理も簡単になります。Docker Composeファイルを使用すると、サービスの設定をコードとして管理することができ、この設定を再利用することが可能です。


* docker-compose.ymlの例 [#eb690b2e]

mailcowと同じネットワーク上になるような想定で、docker-compose.ymlを作成してみた

 version: '3.8'
 
 services:
   ldap_server:
     image: osixia/openldap:1.5.0
     container_name: openldap
     environment:
       LDAP_ORGANISATION: "Example Organization"
       LDAP_DOMAIN: "example.com"
       LDAP_ADMIN_PASSWORD: "admin_password"
       LDAP_BASE_DN: "dc=example,dc=com"
       LDAP_TLS: "false"
     volumes:
       - ldap_data:/var/lib/ldap
       - ldap_config:/etc/ldap/slapd.d
     ports:
       - "389:389"
       - "636:636"
     networks:
       mailcow-network:
       local-network:
         aliases:
           - ldap_server
 
   ldap_admin:
     image: osixia/phpldapadmin:0.9.0
     container_name: phpldapadmin
     environment:
       PHPLDAPADMIN_LDAP_HOSTS: "ldap_server"
       # 403エラーを防ぐ用の設定だが、外部のサーバからは行わないようにする
       PHPLDAPADMIN_HTTPS: "false"
     ports:
       - "8095:80"
     networks:
       mailcow-network:
       local-network:
         aliases:
           - ldap_admin
 
 volumes:
   ldap_data:
   ldap_config:
 
 networks:
   mailcow-network:
   local-network:

もし、
 PHPLDAPADMIN_HTTPS: "false"
の指定が無いと、docker-compose up -dしてから、localhost:8095 にアクセスしたら403エラーになる

上記の場合だと、ログインとパスワードは以下のようになる。admin/admin_password

* ローカル環境専用の自己署名証明書でSSHする場合 [#g48d7030]
** 1年間有効の自己署名証明書を作成 [#r99fb860]

 mkdir -p certs && openssl req -x509 -newkey rsa:4096 -keyout certs/key.pem -out certs/cert.pem -days 365 -nodes -subj '/CN=localhost'

生成したファイルをブラウザに登録すると、認証することになるので、テスト時には便利だが、取り扱い厳重注意のものです。
 
*** docker-compose.yml [#g385907d]

 version: '3.8'
 
 services:
   ldap_server:
     image: osixia/openldap:1.5.0
     container_name: openldap
     environment:
       LDAP_ORGANISATION: "Example Organization"
       LDAP_DOMAIN: "example.com"
       LDAP_ADMIN_PASSWORD: "admin_password"
       LDAP_BASE_DN: "dc=example,dc=com"
       LDAP_TLS: "false"
     volumes:
       - ldap_data:/var/lib/ldap
       - ldap_config:/etc/ldap/slapd.d
     ports:
       - "389:389"
       - "636:636"
     networks:
       mailcow-network:
       local-network:
         aliases:
           - ldap_server
 
   ldap_admin:
     image: osixia/phpldapadmin:0.9.0
     container_name: phpldapadmin
     environment:
       PHPLDAPADMIN_LDAP_HOSTS: ldap_server
       PHPLDAPADMIN_HTTPS: "true"
     volumes:
       - ./certs:/container/service/phpldapadmin/assets/certs
     ports:
       - "8095:443"
     networks:
       mailcow-network:
       local-network:
         aliases:
           - ldap_admin

*** 自己署名証明書をChromeにインストールする手順 [#i50df420]

- Chromeの設定に移動します(右上の三つの点をクリックして、「設定」を選択)。

- 下にスクロールして「詳細設定」をクリックします。

- 「プライバシーとセキュリティ」セクションに移動し、「セキュリティ」をクリックします。

- 「詳細設定」をクリックして、「証明書の管理」を選択します。

- 「信頼済みルート認証局」タブを開き、「インポート」をクリックします。

- 証明書インポートウィザードが表示されたら、「次へ」をクリックします。

- 「ファイルを参照」をクリックし、先ほど作成した自己署名証明書(.pem形式)を選択し、「開く」をクリックします。

- 「次へ」をクリックし、明書ストアとして「信頼されたルート証明機関」を選択し、「次へ」をクリックします。


- 「完了」をクリックして証明書のインポートを完了します。

- インポートが成功したら、ウィザードを閉じてChromeを再起動します。

* 参考記事 [#x02e641b]
** 【Docker】phpLDAPadminで「Forbidden You don’t have permission to access / on this server.」 [#efe4cafe]
https://non-programmer-lab.com/phpldapadmin-forbidden-you-dont-have-permission-to-access-on-this-server/

** Spring Security(Spring Boot) + OpenLDAPでLDAP認証してみる [#cdef7df7]
https://qiita.com/kazuki43zoo/items/6bef663e2a885d8a0f16


** OpenSSHの公開鍵をLDAPで管理 [#p5c1287f]
https://gihyo.jp/admin/serial/01/ldap/0006


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS