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

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 とも被ってはいけません。

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