unicornidm.template.ldap(5)
============================

概要
-----

::

    unicornidm.conf, templates/<name>.py

説明
------

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

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

パラメーター
--------------

type
    バックエンドのタイプを指定します。

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 を自動生成する) です。

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

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

assign_auto_gid_number
    グループの gidNumber を自動生成するかのフラグです。
    デフォルト値は yes (gidNumber を自動生成する) です。

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

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

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

    ::

        MD5             パスワードを md5 でハッシュ化
        SHA             パスワードを sha1 でハッシュ化
        SHA256          パスワードを sha256 でハッシュ化
        SHA384          パスワードを sha384 でハッシュ化
        SHA512          パスワードを sha512 でハッシュ化
        SSHA            パスワードを salt sha1 でハッシュ化
        SSHA256         パスワードを salt sha256 でハッシュ化
        SSHA384         パスワードを salt sha384 でハッシュ化
        SSHA512         パスワードを salt sha512 でハッシュ化
        CRYPT           パスワードを crypt でハッシュ化
        CRYPT-MD5       パスワードを md5 crypt でハッシュ化
        CRYPT-SHA256    パスワードを sha256 crypt でハッシュ化
        CRYPT-SHA512    パスワードを sha512 crypt でハッシュ化
        PBKDF2          パスワードを sha1 PBKDF2 でハッシュ化
        PBKDF2-SHA256   パスワードを sha256 PBKDF2 でハッシュ化
        PBKDF2-SHA512   パスワードを sha512 PBKDF2 でハッシュ化

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

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

テンプレート
-------------

以下は、 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* で必須のバックエンド属性を必ず含めること

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

parentOu
    *parentOu* バックエンド属性はユーザーやグループの所属 OU を指定するための
    バックエンド属性です。この値がセットされた場合、 *parentOu* と
    *suffix* パラメーターを結合したサフィックスが適用されます。
    *parentOu* が存在しない場合 *suffix_user* か *suffix_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"

.. versionadded::
     v3.3.0

     parentOu で所属 OU を変更できるようになりました。


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

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

.. versionadded::
    v3.10.10
    

