5.5. LDAP バックエンド

5.5.1. 概要

unicornidm.conf, templates/<backendname>.py

5.5.2. 説明

バックエンドセクションのうち、 typeldap となっているバックエンドは、 LDAP サーバーへの接続に関する設定を行います。

各バックエンドには必ずテンプレートファイルを用意する必要があります。 テンプレートファイルとは Unicorn ID Manager の任意属性 (フロントエンド属性) を バックエンド固有の属性 (バックエンド属性) にマッピングするためのものです。

5.5.3. リファレンス

5.5.3.1. unicornidm.conf のパラメーター

type

バックエンドのタイプを指定します。 ldap に設定してください。

uris

LDAP URI を指定します。カンマ区切りで複数の URI を指定できます。 URI が複数ある場合、通常先頭の URI への接続が実行され、失敗すれば、 次の URI への接続を試みます。

bind_user

LDAP サーバーへ接続する際に使用する BIND DN を指定します。

bind_password_file

LDAP サーバーへ接続する BIND DN のパスワード情報を格納したファイルパスを指定します。

suffix

接続する LDAP サーバーの DIT (Directory Information Tree) の suffix を指定します。

suffix_user

接続する LDAP サーバーでユーザー情報が格納されているツリーを指定します。 例えば、 ou=Users,%(suffix)s と指定します。なお、ここで利用している %(...)s という形式は別のパラメーターの値を変数として利用することを意味します。ここでは suffix パラメーターの値に置き換えられます。

suffix_group

接続する LDAP サーバーでグループ情報が格納されているツリーを指定します。

filter_user

ユーザー検索時に使用するフィルターを指定します。 デフォルト値は (&(objectClass=posixAccount)(uid=*)) です。

filter_group

グループ検索時に使用するフィルターを指定します。 デフォルト値は (&(objectClass=posixGroup)(cn=*)) です。

backend_primary_key_user

ユーザーの RDN を指定します。 デフォルト値は uid です。

backend_primary_key_group

グループの RDN を指定します。 デフォルト値は cn です。

member_keys

グループのメンバーに該当するバックエンド属性名を指定します。 カンマ区切りで複数指定することもできます。 デフォルト値は memberUid です。

assign_auto_uid_number

ユーザーの uidNumber を自動生成するかのフラグです。 デフォルト値は yes (uidNumber を自動生成する) です。 自動生成される番号は Unicorn ID Manager が最後に割り当てた uidNumber の次に大きな番号で、LDAP サーバー上でまだ使われていない番号です。

assign_auto_uid_number_min

ユーザーの uidNumber を自動生成する際、 uidNumber に割り当てる最小値 を指定します。デフォルト値はありません。

assign_auto_uid_number_max

ユーザーの uidNumber を自動生成する際、 uidNumber に割り当てる最大値 を指定します。デフォルト値はありません。

assign_auto_gid_number

グループの gidNumber を自動生成するかのフラグです。 デフォルト値は yes (gidNumber を自動生成する) です。 自動生成される番号は Unicorn ID Manager が最後に割り当てた gidNumber の次に大きな番号で、LDAP サーバー上でまだ使われていない番号です。

assign_auto_gid_number_min

グループの gidNumber を自動生成する際、 gidNumber に割り当てる最小値 を指定します。デフォルト値はありません。

assign_auto_gid_number_max

グループの gidNumber を自動生成する際、 gidNumber に割り当てる最大値 を指定します。デフォルト値はありません。

uid_number_must_unique
gid_number_must_unique

追加、更新操作時に uidNumbergidNumber ) が同じユーザー(グループ)がバックエンドに既に存在しないことを確認します。 存在していた場合追加、更新操作が失敗します。

password_hash

パスワードのハッシュアルゴリズムを指定します。 指定可能な値は以下です。

MD5             MD5 でハッシュ化
SHA             SHA-1 でハッシュ化
SHA256          SHA-2 256-bit でハッシュ化
SHA384          SHA-2 384-bit でハッシュ化
SHA512          SHA-2 512-bit でハッシュ化
SSHA            SHA-1、salt 付きでハッシュ化
SSHA256         SHA-2 256-bit、salt 付きでハッシュ化
SSHA384         SHA-2 384-bit、salt 付きでハッシュ化
SSHA512         SHA-2 512-bit、salt 付きでハッシュ化
CRYPT           crypt(3) DES、salt 付きでハッシュ化
CRYPT-MD5       crypt(3) MD5、salt 付き、1000 回でハッシュ化
CRYPT-SHA256    crypt(3) SHA-2 256-bit、salt 付き、5000 回でハッシュ化
CRYPT-SHA512    crypt(3) SHA-2 512-bit、salt 付き、5000 回でハッシュ化
PBKDF2          PBKDF2 SHA-1、salt 付き 10000 回でハッシュ化
PBKDF2-SHA256   PBKDF2 SHA-2 256-bit、salt 付き 10000 回でハッシュ化
PBKDF2-SHA512   PBKDF2 SHA-2 512-bit、salt 付き 10000 回でハッシュ化
PASSMOD         LDAP サーバーでハッシュ化

デフォルト値は CRYPT-SHA512 です。

注釈

パスワード変更リクエストでは、仕様上パスワードが平文で送信されます。 PASSMODを利用する際は、LDAPサーバーへの接続にLDAPSを用いた暗号化通信を利用するようにしてください。

バージョン 3.17.9 で追加: PASSMOD が追加されました。

password_hash_iteration

パスワードハッシュアルゴリズムを PBKDF2 シリーズのどれかに指定した時に 有効なパラメーターです。このパラメーターにより、ハッシュ回数を指定できます。 デフォルト値は 10000 です。

enable_ppolicy

ユーザーの認証の際に以下のメッセージをログに出力するかどうかを指定します。 ppolicy オーバーレイを利用していない場合、ユーザーの認証の際に以下の ログが出力されます。この値を no とすることで、メッセージが出力されなくなります。 デフォルト値は yes (メッセージを出力する) です。

slap_global_control: unrecognized control: 1.3.6.1.4.1.42.2.27.8.5.1

5.5.3.2. テンプレートファイル

以下は、 ldap バックエンドのテンプレートファイルの例です。

User = {
    "objectClass": [
        "top",
        "person",
        "organizationalPerson",
        "inetOrgPerson",
        "posixAccount",
    ],
    "uid": userName,
    "cn": userName,
    "uidNumber": default(uidNumber),
    "gidNumber": default(gidNumber, 100),
    "loginShell": default(loginShell, "/bin/bash"),
    "homeDirectory": default(unixHomeDirectory, "/home/%(userName)s"),
    "sn": familyName,
    "givenName": givenName,
    "userPassword": password,
    "mail": mail,
    "description": default(description),
    "displayName": default(displayName, "%(familyName)s %(givenName)s"),
}


Group = {
    "objectClass": [
        "top",
        "posixGroup",
        ],
    "cn": groupName,
    "gidNumber": default(gidNumber),
    "description": default(description),
}

注意すべき点は以下のとおりです。

  • User と Group の辞書には必ず、 objectClass を list 型で指定する必要があること
  • objectClass で必須のバックエンド属性を必ず含めること

5.5.4. ldap バックエンド特有のバックエンド属性

parentOu

parentOu バックエンド属性はユーザーやグループの所属 OU を指定するための バックエンド属性です。この値がセットされた場合、 parentOusuffix パラメーターを結合したサフィックスが適用されます。 parentOu が存在しない場合 suffix_usersuffix_group が適用されます。

例:

backend_primary_key_user = "uid"
userName = "user1
parentOu = "ou=org1"
suffix = "dc=example,dc=com"
suffix_user = "ou=Users,%(suffix)s"

    ===> "uid=user1,ou=org1,dc=example,dc=com"

backend_primary_key_user = "uid"
userName = "user1
parentOu = None
suffix = "dc=example,dc=com"
suffix_user = "ou=Users,%(suffix)s"

    ===> "uid=user1,ou=Users,dc=example,dc=com"

CSVファイルで所属 OU を suffix 直下に変更したい場合には、 --- 接頭辞を利用してください。

例えば以下の CSV では user1, user2 の 所属 OU を suffix 直下に 変更しています。

例:

userName,--parentOu
user1,
user2

CSV の parentOu カラムを空文字にした場合には、所属 OU は 変更されません。

以下では user1 の所属 OU は変更されますが、 user2 の所属 OU は 変わりません。

例:

userName,parentOu
user1,ou=Org1
user2,

上記の、カラムを空文字にした場合の挙動は期待する動作と異なるかも しれません。 つまり、1つの CSV ファイルで あるユーザーの所属 OU を suffix 以外に変え、別のユーザーの 所属 OU を suffix に変更したい場合に、上記のような CSV ファイルでは user2 の所属OUは変更されません。

このような動作を1つのCSVファイルで実現するには、 -+ 接頭辞を 併用してください。 この場合、対象ユーザーの現在の所属 OU を CSV ファイルに書く必要があります。

以下の CSV では、 user1 の所属 OU は ou=Org2 に、 user2 の所属 OU は suffix に変更されます。 どちらのユーザーも元々の所属OU は ou=Org1 であると仮定しています。

例:

userName,-parentOu,+parentOu
user1,ou=Org1,ou=Org2
user2,ou=Org1,

ブラウザからの GUI 操作の場合には、 parentOu のインプットフォームを 空にすると 所属OU は suffix に変わります。

バージョン 3.3.0 で追加: parentOu で所属 OU を変更できるようになりました。

LDAPPrimaryGroup

LDAPPrimaryGroup はユーザーの gidNumber を数値ではなく グループ名で設定するためのバックエンド属性です。 ユーザーを追加、更新するときにこの属性を指定すると、 Unicorn ID Manager は操作対象のターゲットの中から groupName が この属性の値と一致するグループを探し、そのグループの gidNumber を ユーザーの gidNumber 属性に設定します。

gidNumberLDAPPrimaryGroup の両方に値が設定された場合、 gidNumber の値が優先されます。 従って、テンプレートファイルで gidNumber: default(gidNumber, 100) のように gidNumber のデフォルト値が指定されている場合には、 LDAPPrimaryGroup 属性は使われません ( gidNumber のデフォルト値が LDAPPrimaryGroup の値よりも 優先されてしまう)。

バージョン 3.10.10 で追加.

5.5.5. 制限

  • 組織単位 (OU) の管理には対応していません。 ユーザーに所属させたい組織単位は別途 LDAP DIT の管理ツールで作成しておいてください。