5.7. AD (Active Directory) バックエンド

5.7.1. 概要

unicornidm.conf, templates/<backendname>.py

5.7.2. 説明

バックエンドセクションのうち、 typead となっているバックエンドは、 Active Directory ドメインコントローラー (AD DC) への接続に関する設定を行います。

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

5.7.3. リファレンス

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

type

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

description

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

バージョン 3.18.7 で追加.

uris

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

bind_user

AD DC へ接続する際に使用するユーザー名を指定します。 DN とユーザープリンシパル名 の両方の形式に対応しています。このユーザーには Account Operators グループ、 あるいは相当する権限が必要です。

bind_password_file

AD DC へ接続するユーザーのパスワード情報を格納したファイルパスを指定します。

domain

接続する AD DC のドメイン名を指定します。

ou_user

接続する AD DC においてユーザーオブジェクトが格納されている OU (組織単位) を 指定します。デフォルトは CN=Users です。

ou_group

接続する AD DC においてグループオブジェクトが格納されている OU (組織単位) を 指定します。デフォルトは CN=Users です。

filter_user

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

filter_group

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

backend_primary_key_user

ユーザーの RDN の値を格納する属性を指定します。 デフォルト値は cn です。

backend_primary_key_group

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

member_keys

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

assign_auto_uid_number

ユーザーの uidNumber を自動生成するかのフラグです。 デフォルト値は no (uidNumber を自動生成しない) です。

assign_auto_uid_number_min

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

assign_auto_uid_number_max

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

assign_auto_gid_number

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

assign_auto_gid_number_min

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

assign_auto_gid_number_max

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

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

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

User = {
    "objectClass": [
        "top",
        "person",
        "organizationalPerson",
        "user",
    ],
    "sAMAccountName": userName,
    "sn": familyName,
    "givenName": givenName,
    "unicodePwd": password,
    "userAccountControl": "512",
    "description": default(description),
    "displayName": default(displayName, "%(familyName)s %(givenName)s"),
}


Group = {
    "objectClass": [
        "top",
        "group",
        ],
    "sAMAccountName": groupName,
    "description": default(description),
}

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

  • User と Group の辞書には必ず、 objectClass を list 型で指定してください

  • User と Group の属性定義では必ず sAMAccountNameuserNamegroupName に紐付けてください

  • User の objectClass には必ず user を含めてください

  • Group の objectClass には必ず group を含めてください

5.7.5. 制限

  • グループの入れ子 (ネスト。グループへのグループの追加) には対応していません。

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

5.7.5.1. AD 由来の制限

AD バックエンドでは userName , groupNamesAMAccountName に紐付ける必要があるため、以下の制限が発生します。 これらはどれも AD の sAMAccountName の仕様に基づくものです。

  • userName , groupName は 20文字以下でなければなりません

  • userName , groupName には以下の文字を含めてはいけません
    • "/ \ [ ] : ; | = , + * ? < >

  • userName, groupName の値は AD 全体で一意でなければいけません。 UIDM 管理外のツリー(所属OU)やユーザー、グループ以外のオブジェクトの sAMAccountName とも被ってはいけません。

AD バックエンド属性名には givenName;lang-ja のような <属性名>;<属性オプション> 形式の属性オプションは使用できません。

UIDM 接続用の AD ドメインユーザーの権限は通常 Account Operators グループ権限だけで充分です。ただし Account Operators 権限では 特権付きユーザー (Administrator など) や特権付きグループ (Domain Admins など) に所属するユーザーのパスワードを変更できません。 Administrators 権限を付与すれば特権付きユーザーとグループの パスワードを変更できますが、UIDM により強い特権を付与するリスクを 考慮するようご注意ください。