LoginSignup
1
2

More than 3 years have passed since last update.

DockerでOpenLDAPを動かす

Last updated at Posted at 2021-04-20

コンテナイメージの選択

Docker Hubopenldapをキーワードに検索

最も人気のある以下のイメージを使用してみる。

環境

  • ベアメタル
  • Ubuntu 16.04.3
  • Docker CE 19.03.12
  • Docker-compose 1.26.2

構築

Quick Startを参考に、docker-composeを使ってインストールする。

作成したdocker-compose.yml

version: "3.8"
services:
  openldap:
    image: osixia/openldap:1.5.0
    restart: always
    container_name: openldap
    environment:
      LDAP_ORGANISATION: "My Company"
      LDAP_DOMAIN: "my-company.com"
      LDAP_ADMIN_PASSWORD: "JonSn0w"
    ports:
    - "389:389"
    - "636:636"
    volumes:
    - "/srv/openldap/slapd/database:/var/lib/ldap"
    - "/srv/openldap/slapd/config:/etc/ldap/slapd.d"
    - "/srv/openldap/slapd/ldifs:/container/service/slapd/assets/custome" # ldifファイルの置き場として使用

docker-compose.ymlを使ってデプロイ

$ sudo mkdir -p /srv/openldap/slapd/database
$ sudo mkdir -p /srv/openldap/slapd/config
$ sudo mkdir -p /srv/openldap/slapd/ldifs
$ docker-compose up -d
Creating network "openldap_default" with the default driver
Pulling openldap (osixia/openldap:1.5.0)...
1.5.0: Pulling from osixia/openldap
45b42c59be33: Pull complete
ae7fb8f59730: Pull complete
55443d9da5d5: Pull complete
062b29194b6e: Pull complete
613ba832a7d4: Pull complete
48562e0b854d: Pull complete
3731e12f1fa4: Pull complete
b1feb4016881: Pull complete
d2744e887776: Pull complete
Digest: sha256:18742e9c449c9c1afe129d3f2f3ee15fb34cc43e5f940a20f3399728f41d7c28
Status: Downloaded newer image for osixia/openldap:1.5.0
Creating openldap ... done
$ docker-compose ps
  Name           Command         State                     Ports                   
-----------------------------------------------------------------------------------
openldap   /container/tool/run   Up      0.0.0.0:389->389/tcp, 0.0.0.0:636->636/tcp

ldapsearchしてみる。

$ docker exec openldap ldapsearch -x -b dc=my-company,dc=com -D "cn=admin,dc=my-company,dc=com" -w JonSn0w
# extended LDIF
#
# LDAPv3
# base <dc=my-company,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# my-company.com
dn: dc=my-company,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: My Company
dc: my-company

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

サーチ結果が返ったので、LDAPが動いているようである。

LDAPアカウントの追加

ldifファイルの作成

$ docker exec openldap cp container/service/slapd/assets/test/new-user.ldif container/service/slapd/assets/custome/testuser.ldif
$ sudo -i
# cd /srv/openldap/slapd/ldifs/
# ls
testuser.ldif
# vim testuser.ldif
# cat testuser.ldif 
dn: uid=testuser,dc=my-company,dc=com
uid: testuser
cn: User
sn: Test
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
loginShell: /bin/bash
homeDirectory: /home/testuser
uidNumber: 2000
gidNumber: 2000
mail: testuser@my-company.com
gecos: "Test user"

アカウントの作成

$ docker exec openldap ldapadd -x -D "cn=admin,dc=my-company,dc=com" -w JonSn0w -f /container/service/slapd/assets/custome/testuser.ldif -ZZ
adding new entry "uid=testuser,dc=my-company,dc=com"

パスワード設定

$ docker exec openldap ldappasswd -s password -w JonSn0w -D "cn=admin,dc=my-company,dc=com" -x "uid=testuser,dc=my-company,dc=com"

ldapsearchを使って、作成したユーザーを確認

docker exec openldap ldapsearch -x -b "uid=testuser,dc=my-company,dc=com" -D "cn=admin,dc=my-company,dc=com" -w JonSn0w
# extended LDIF
#
# LDAPv3
# base <uid=testuser,dc=my-company,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# testuser, my-company.com
dn: uid=testuser,dc=my-company,dc=com
uid: testuser
cn: User
sn: Test
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
loginShell: /bin/bash
homeDirectory: /home/testuser
uidNumber: 2000
gidNumber: 2000
mail: testuser@my-company.com
gecos: "Test user"
userPassword:: e1NTSEF9a1QxQnU4b0E4TEpjNUF5a0NKUXROcnpMcWs2QlJLbVo=

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

作成したユーザーの情報が返ってきた!

参考

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2