目次

LADPサーバとは

簡単な説明

簡単にいうと、社内用のシステムのアカウントを一元管理できるサーバ

丁寧な説明

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

LDAPサーバのdockerコンテナのメリット

環境の統一

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

スケーラビリティ

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

移植性

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

バージョン管理とロールバック

Dockerイメージはバージョン管理が可能で、問題が発生した場合に前のバージョンに戻すことができます。

簡易的な導入と管理

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

docker-compose.ymlの例

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:
      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:
      local-network:
        aliases:
          - ldap_admin

volumes:
  ldap_data:
  ldap_config:

networks:
  local-network:

もし、

PHPLDAPADMIN_HTTPS: "false"

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

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

ローカル環境専用の自己署名証明書でSSHする場合

1年間有効の自己署名証明書を作成

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

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:
      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:
      local-network:
        aliases:
          - ldap_admin

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

参考記事

【Docker】phpLDAPadminで「Forbidden You don’t have permission to access / on this server.」

https://non-programmer-lab.com/phpldapadmin-forbidden-you-dont-have-permission-to-access-on-this-server/

Spring Security(Spring Boot) + OpenLDAPでLDAP認証してみる

https://qiita.com/kazuki43zoo/items/6bef663e2a885d8a0f16

OpenSSHの公開鍵をLDAPで管理

https://gihyo.jp/admin/serial/01/ldap/0006

ユーザの追加

例:billyというユーザを追加する例

vi new-user.ldif

new-user.ldifファイルの内容

パスワードは、平文で入れたとしても登録後はそのままでは見れなくなる

dn: uid=billy,dc=my-company,dc=com
uid: billy
cn: billy
sn: 3
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
loginShell: /bin/bash
homeDirectory: /home/billy
uidNumber: 14583102
gidNumber: 14564100
# userPassword: {SSHA}j3lBh1Seqe4rqF1+NuWmjhvtAni1JC5A
userPassword: xxx
mail: billy@my-company.com
gecos: Billy User

dockerのコンテナに登録用のファイルをコピーして登録

ldapのコンテナの名前がopenldapだとすると、以下のようになる。

以下のコマンドでも確認

slapcat

ユーザの削除

削除ファイルの例

参考にしたサイト

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-05-15 (月) 17:03:29 (346d)