Active Directory(LDAP)によるユーザ同期の方法について
はじめに
用途
この文書には、下記の情報が記載されています:
- Active Directory(以下 AD)を利用した TeamFile ユーザアカウントの同期方法
対象者
TeamFile のサーバ管理者(TeamFile の管理者ではありません)。
Active Directory 及び LDAP に関しての知識が必要です。
概要
Active Directory(LDAP)連携概要
TeamFile のユーザ管理の方式として、Active Directory(以下 AD)のユーザ情報を元に自動で管理運用を行う事が可能となります。
実現する事
AD との連携により以下の事が可能となります。
- ログインユーザの認証同期
- ログインユーザの自動作成(TeamFile 側に自動で作成されます)
- ユーザ情報の同期 ユーザ名とパスワードメールアドレスが同期されるようになります。
- AD 接続障害によるフェイルオーバー機能
AD 障害時に自動的に TeamFile がローカルで持っているユーザ情報を元に接続を行います。
AD が復帰した場合には自動的に復帰を行います。
できない事
AD の連携でも以下の行為は手動で行う必要があります。
- グループへの所属(共有スペース割り当て動作)
事前準備
ログインアカウントの確認(重要)
TeamFile サーバでは Windows のログインアカウントとして利用可能な「全角文字」が利用できません。
ログインアカウントは半角にする必要があります。名前は関係ありません。
AD のホスト情報取得
TeamFile は、AD に接続要求を出すために、以下の接続情報が必要です。
- AD サーバの IP アドレス
- AD が待ち受けしているポート番号
通常は389番ですが AD 側としてこの389への外部からの接続の許可を行ってください。
匿名接続ユーザの確認と作成
TeamFile は、初回に AD に対して匿名接続を行います。一般的な AD の設定では不要な為、このユーザを作成する必要があります。
このユーザでは、情報の取得は不要ですので、以下の方法で閲覧させないようにしてセキュリティを高めてください。
「Active Directory ユーザーとコンピュータ」のメニュー「表示」→「拡張機能」を選択。
OUやユーザー毎に全拒否の設定を行う。
また、このユーザは TeamFile サーバで静的に設定されますので、パスワードの変更は行わないようにしてください。
こちらで作成したユーザは、TeamFile の「TfLDAPBindDN」に利用します。
こちらで作成したユーザのパスワードは TeamFile の「TfLDAPBindPW」に利用します。
AD スキーマの確認
GUI では確認が取れませんのでコマンドプロンプトを起動して以下のコマンドで確認してください。
このコマンドは AD サーバ上で行った場合です。
C:> dsquery * cn=users, <ドメイン名> scope onelevel
表示されましたらこの情報を元に設定していきます。
表示されなかった場合は、cn の部分が異なる可能性がありますので AD で利用したいユーザが所属している。場所を指定してください。ou である場合もあります。環境によって様々ですので御確認ください。
こちらで表示された項目は TeamFile の「TfLDAPBaseDN」で利用します。
Openldap のコマンドによる確認 (最重要)
実際に TeamFile サーバに存在するコマンド(openldap)を利用して対象の AD への接続を試みてください。
ここで接続が成功して一覧が取得できれば接続に問題は全くありません。
改行していますが、全て一行で入力してください。
/usr/local/teamfile/bin/ldapsearch
- v
- h 対象のホストアドレスorホスト名
- s one
- w "匿名ユーザのパスワード"
- x
- D "cn=TFUser,ou=XXX,dc=XXXX,dc=XXX"
- b "ou=XXXX,dc=XXXX,dc=XXXX"
"(&(objectclass=user)(sAMAccountName=*))"
サーバ情報チェックリスト
以下の項目を全て埋める必要があります。
| TeamFile ディレクティブ名 | 値 | 備考 | |
|---|---|---|---|
| 1 | TfLDAPBaseDN(3.4 を参照) | ||
| 2 | TfLDAPBindDN(3.3 を参照) | ||
| 3 | TfLDAPBindPW(3.3 を参照) | ||
| 4 | TfLDAPAttr | sAMAccountName | 固定値 |
| 5 | TfLDAPHost(3.1 を参照) | ||
| 6 | TfLDAPHostPort(3.1 を参照) | ||
| 7 | TfLDAPfilter | ||
| 8 | TfLDAPScope | ||
| 9 | TfLDAPMapUserAttr | sAMAccountName | 固定値 |
| 10 | TfLDAPMapPasswordAttr | UserPassword | 固定値 |
| 11 | TfLDAPMapFullNameAttr | displayName | 任意 |
| 12 | TfLDAPMapMailAddAttr | 任意 | |
| 13 | TfLDAPMapCommentAttr | Description | 任意 |
| 14 | TfLDAPSyncProperty | On | 固定値 |
| 15 | TfLDAPFoundCreate | On | 固定値 |
| 16 | TfLDAPAllowUser | - | - |
| 17 | TfLDAPAllowUserRegEx | - | - |
| 18 | TfLDAPOptions | - | - |
補足説明
7. TfLDAPfilter はフィルタを指定します。特に不明であれば objectclass=*にしても構いません。 ただしユーザ数が多い場合はパフォーマンスの劣化につながりますのでフィルタによってこの劣化を防ぐ事ができます。
8. TfLDAPScope は検索パスのスコープを指定します。「sub」と指定すると対象ノードを全て検索します。こちらもパフォーマンスの影響を受けます。
14.TfLDAPSyncProperty は AD の情報と同期を取る場合は On と設定してください。特に不要であれば Off にしてください。
15.TfLDAPFoundCreate は AD へ認証が成功したあとに TeamFile にアカウントがいない場合自動的に作成する場合は On となります。Off にした場合は、TeamFile に事前にアカウントを作成しておく必要があります。
16.TfLDAPAllowUser は AD 管理対象外ユーザをスペース区切りで指定します。AD として管理されない管理者などはこちらを指定しておくと、AD にユーザが存在していなくても接続が可能となります。
17.TfLDAPAllowUser は AD 管理対象外ユーザを正規表現として表現が行えます。
11.TfLDAPMapFullNameAttr と 12.TfLDAPMapMailAddAttr と 13. TfLDAPMapCommentAttr は、任意項目です。この設定を行わない場合は、LDAP からの同期は行われません。つまり TeamFile へ直接入力して管理が行うことができます。
TeamFile への適用
サーバへのログイン
4.が全て整いましたら TeamFile サーバへ適用します。
TeamFile サーバに ssh などでログインして、以下のディレクトリに移動します。
> cd /usr/local/teamfile/www/conf/conf.d
管理対象ロケーションの決定
5.1 にはお客様と同じロケーション名のファイルが存在しています。その中でどれを AD 連携として利用するか選択します。ファイル名は以下の規則になっております。
ロケーションがteamfileであればファイルは「new_teamfile.conf」となっています。
TeamFile サーバの停止
TeamFile サーバを停止して作業を行ってください。
#> /etc/init.d/teamfile stop
ファイルの編集
vi などを利用して対象コンフィグファイルを編集します。4. と同じ内容が既にサンプルとして存在しておりますので修正してください。
TeamFile サーバの再起動
TeamFile サーバを起動してください
#> /etc/init.d/teamfile start
TeamFile サーバへの接続テスト
正常に起動した場合は、AD に登録されているユーザを利用して TeamFile サーバへログインしてみてください。正常にログインできれば成功です。
失敗した場合は、TeamFile サーバのエラーログをブラウザかもしくは ssh でログインして確認してください。