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 に設定してください。

description

バックエンドの説明文を指定します。

バージョン 3.18.7 で追加.

uris

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

tls_require_certificate

LDAPS接続時のサーバー証明書検証ルールを指定します。 指定可能な値は以下です。

NEVER       サーバー証明書を検証しない
ALLOW       サーバー証明書の検証をし、失敗した場合警告文をログに出力する(接続は行われる)
DEMAND      サーバー証明書の検証をし、検証に失敗した場合は接続しない
HARD        DEMANDと同等

デフォルト値は NEVER です。大文字小文字は区別せず、上記以外の文字列が指定された場合は NEVER がセットされます。

バージョン 3.20.2 で追加.

tls_ca_certificate_file

LDAPS接続時のサーバー証明書検証の際に利用するCA証明書ファイルを指定します。

バージョン 3.20.2 で追加.

tls_ca_certificate_dir

LDAPS接続時のサーバー証明書検証の際に利用するCA証明書ディレクトリを指定します。

バージョン 3.20.2 で追加.

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

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

uid_number_must_unique_suffix

uidNumber の重複を確認する際に、検索するツリーのサフィックスを指定します。 デフォルトは suffix_user の値になります。

uid_number_must_unique_filter

uidNumber の重複を確認する際に、検索するエントリーのフィルターを指定します。 デフォルトは filter_user の値になります。

gid_number_must_unique

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

gid_number_must_unique_suffix

gidNumber の重複を確認する際に、検索するツリーのサフィックスを指定します。 デフォルトは suffix_group の値になります。

gid_number_must_unique_filter

gidNumber の重複を確認する際に、検索するエントリーのフィルターを指定します。 デフォルトは filter_group の値になります。

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 の管理ツールで作成しておいてください。