- 追加された行はこの色です。
- 削除された行はこの色です。
* 目次 [#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:
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:
aliases:
- ldap_admin
volumes:
ldap_data:
ldap_config:
networks:
mailcow-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:
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:
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