LDAP (Lightweight Directory Access Protocol)は、情報サービスやディレクトリサービスを提供するためのプロトコルです。LDAPは、ユーザーやグループ、その他の情報を格納し、検索し、管理するための効率的な手段を提供します。一般的に、LDAPはユーザーアカウント情報、グループメンバーシップ、そして多数のアプリケーションに対するアクセス権限などを管理するために使用されます。
シングルサインオンができる。
Dockerを使用すると、開発、テスト、本番環境など、どの環境でも同じ設定でLDAPサーバを立ち上げることができます。これにより、環境間の設定の違いによる問題を避けることができます。
Dockerコンテナは軽量で、必要に応じて迅速にスケーリングすることが可能です。したがって、需要が増えたときに迅速にLDAPサーバをスケールアウトすることが可能です。
DockerコンテナはどのホストOS上でも動作します。これにより、LDAPサーバを異なるOSやクラウドプロバイダ間で移動することが容易になります。
Dockerイメージはバージョン管理が可能で、問題が発生した場合に前のバージョンに戻すことができます。
Dockerを使用すると、LDAPサーバのインストールや設定が容易になり、また管理も簡単になります。Docker Composeファイルを使用すると、サービスの設定をコードとして管理することができ、この設定を再利用することが可能です。
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
mkdir -p certs && openssl req -x509 -newkey rsa:4096 -keyout certs/key.pem -out certs/cert.pem -days 365 -nodes -subj '/CN=localhost'
生成したファイルをブラウザに登録すると、認証することになるので、テスト時には便利だが、取り扱い厳重注意のものです。
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