ページ ツリー

 コンテンツ

Tips

Active Directory(LDAP)で管理されているユーザを、Helix Core(P4D)と連携させ、
Helix Coreアカウントとして使用する際の手順です。

手順

1. LDAP属性値の選定

認証のキーとする情報や、連携時に取得する情報元を選定します。
※本手順では、認証キーに"givenName"、取得元情報に"displayName"、"mail"を利用しています。

一般的に利用される属性値

displayName・givenName・mail・cn・sn・sAMAccountName・name

■Active Directory上のユーザプロパティ

① sn
② givenName
③ displayName,name,cn
④ mail
⑤ sAMAccountName

2. LDAP仕様の作成

Perforce サーバが認証先の LDAP を特定するためのLDAP仕様を作成します。

① コマンドプロンプトから Perforce サーバへ管理者権限でログインします。

コマンド例

p4 -u super login

・super:管理者権限ユーザ

② ldapコマンドを実行し、LDAP仕様を編集します。(テキストエディタが起動します)
  編集後、内容を保存し、テキストエディタを終了します。

LDAP仕様作成コマンド例:"ldap_property"は任意の名称

p4 ldap ldap_property

LDAP仕様記述例:各フィールドについては下表を参照

Name:  ldap_property
Host: 192.168.XXX.XX
Port: 389
Encryption: none
BindMethod: search
Options: nodowncase getattrs norealminusername
SearchBaseDN: CN=test-perforce,DC=co,DC=jp
SearchFilter: sAMAccountName=%user%
SearchScope: subtree
SearchBindDN: CN=administrator,CN=Users,DC=test-perforce,DC=co,DC=jp
SearchPasswd: ********
GroupSearchScope: subtree
AttributeUid: givenName
AttributeName: displayName
AttributeEmail: mail

LDAP仕様フィールド値一覧
Port:LDAP通信用ポート番号"389"(ldap)、
もしくは"636"(ldaps)を指定
Encryption:

暗号化方式(SSL 利用の場合)を指定
・"ssl"と"tls"に対応
暗号化通信を利用しない場合は'none'

BindMethod:検索方式(simple,search,sasl)を指定
※本手順では"search"方式を指定しています
Options:Perforceサーバにおける LDAP 仕様オプションを指定
・downcase:LDAP上に大文字で登録されているユーザ名をPerforceサーバに小文字で登録する
・getattrs:自動的に作成されたユーザに対してLDAPから追加情報(メール、フルネームなど)を取得する
・realminusername:レルムをSASLのユーザ名から取得する
SearchBaseDN:ユーザ検索時に基底となるActive Directoryのドメインを指定
例:DC=test-perforce,DC=co,DC=jp
SearchFilter:検索時のフィルター条件を設定
例:givenName=%user%
SearchScope:ユーザの検索範囲を指定
・baseonly:指定の"BaseDN"に該当するエントリ
・children:指定の"BaseDN"配下のエントリ
・subtree:指定の"BaseDN"とその配下のエントリ
※本手順では、"subtree"を指定しています
SearchBindDN:LDAPを検索できる権限を持ったユーザを指定
例:CN=administrator,CN=Users,DC=test-perforce,DC=co,dc=jp
SearchPasswd:"SearchBindDN"ユーザのパスワードを指定
GroupSearchScope:ユーザの検索範囲を指定
・baseonly:指定の"BaseDN"に該当するエントリ
・children:指定の"BaseDN"配下のエントリ
・subtree:指定の"BaseDN"とその配下のエントリ
※本手順では、"subtree"を指定しています
"Options:"で"getattrs"指定した場合
AttributeUid:ユーザIDの取得元となるLDAP側属性値を指定
AttributeName:フルネームの取得元となるLDAP側属性値を指定
AttributeEmail: メールアドレスの取得元となるLDAP側属性値を指定

3. 認証確認

手順2で作成したLDAP仕様を利用して認証確認を行います。

① コマンドプロンプトから Perforce サーバへ管理者権限でログインします。

コマンド例

p4 -u super login

・super:管理者権限ユーザ

② ldapコマンドを実行し、LDAP認証を確認します。

LDAP認証確認コマンド例

p4 -u super ldap -t bruno ldap_property

・super:管理者権限ユーザ
bruno:LDAP上に存在する任意のユーザ
ldap_property:手順2で作成したLDAP仕様名

実行結果:成功例

Enter password:
Authentication successful.
Discovered FullName: Perforce bruno
Discovered Email: bruno@test-perforce.co.jp

実行結果:失敗例 BaseDNに設定した値が誤っていた場合のエラーメッセージ

Enter password:
User not found by LDAP search "givenName=bruno" starting at cn=User,dc=test-perforce,dc=co,dc=jp
LDAP search failed:

4. Perforce構成可能変数の設定

手順2で作成したLDAP仕様を利用して認証するように、Perforceサーバに対して構成可能変数を設定します

① コマンドプロンプトから Perforce サーバへ管理者権限でログインします。

コマンド例

p4 -u super login

・super:管理者権限ユーザ

② 構成可能変数を設定します。

構成可能変数設定コマンド例:構成可能変数については下表参照

p4 -u super configure set auth.ldap.order.1=ldap_property
p4 -u super configure set auth.default.method=ldap
p4 -u super configure set auth.ldap.userautocreate=1
p4 -u super configure set auth.ldap.timeout=60

LDAPに関連した構成可能変数一覧
auth.ldap.order.N手順2で作成したLDAP仕様の検索順序を指定
デフォルト値:なし。Nが小さいほど優先順位が高くなる
auth.default.method新しいユーザがPerforceサーバで認証を行うか、LDAPを利用して認証行うかを指定
perforce:perforceサーバ(デフォルト値)
ldap:AD/LDAPサーバ
auth.ldap.userautocreateLDAP認証を使用するとき、ログイン時に新しいユーザを自動で作成するか否かを指定
0:作成しない(デフォルト値)
1:作成する
auth.ldap.timeout接続の試行をあきらめるまでの時間を秒単位で指定
デフォルト値:30秒
auth.ldap.cafileLDAPにSSL/TLSが使用される場合、証明書ファイルへのパスを指定
※この手順では利用していません
auth.ldap.ssllevelSSL証明書の検証レベルを指定
※この手順では利用していません
dm.user.noautocreateユーザの自動作成をより詳細に制御する
※LDAP連携によりユーザを作成する場合は、"0"を設定
※この手順では利用していません

③ 設定した構成可能変数を確認するには以下のコマンドを実行します。

確認コマンド

p4 -u super configure show

5. LDAP認証グループの作成

LDAP連携に利用するグループを作成します。

補足情報

手順4までの設定で、Perforceサーバへのログイン認証にLDAP認証を利用できますが、Active Directory(LDAP)上に存在する全てのユーザがPerforceサーバへログイン可能となるため、セキュリティ上好ましくない環境です。
そのため、LDAP上のユーザを事前にPerforceグループへメンバ登録し、プロテクションテーブルの設定と合わせることで、事前登録されたメンバのみがPerforceサーバへアクセスできるように設定します。

① コマンドプロンプトから Perforce サーバへ管理者権限でログインします。

コマンド例

p4 -u super login

・super:管理者権限ユーザ

② groupコマンドを実行し、グループ仕様を編集します。(テキストエディタが起動します)
 編集完了後、内容を保存し、テキストエディタを終了します。

※ADのグループ:Perforceusers が Perforceのグループ:ldapgroup と連携するように編集しています
※グループ名は任意です

グループ作成コマンド例

p4 group ldapgroup

グループ仕様記述例

Group: ldapgroup
MaxResults: unset
MaxScanRows: unset
MaxLockTime: unset
MaxOpenFiles: unset
Timeout: 43200
PasswordTimeout: unset
LdapConfig: ldap_property
LdapSearchQuery: (&(objectClass=user)(memberOf=CN=Perforceusers,CN=Users,DC=test-perforce,DC=co,DC=jp))
LdapUserAttribute: givenName
Owners:
    
super
Users:

LDAP連携に関連するグループ仕様フィールド値一覧
LdapConfig:LDAP検索クエリからグループのメンバリストを作成する際に使用するLDAP仕様を指定
LdapSearchQuery:グループメンバの識別するためのLDAPクエリを指定
LdapUserAttribute:ユーザ登録に使用するLDAP属性値を指定
Owners:グループの所有者を指定

6. LDAP認証メンバ同期

手順5で作成したPerforceグループへユーザを同期します

① コマンドプロンプトから Perforce サーバへ管理者権限でログインします

コマンド例

p4 -u super login

・super:管理者権限ユーザ

② コマンドを実行し、Perforceグループのメンバへ検索クエリの対象となったLDAPユーザを同期します。
  ※"-n"オプションを使用し、実際の同期前に同期結果を確認することができます。

メンバ同期結果確認コマンド例

p4 -u super ldapsync -n-g ldapgroup

コマンド実行結果例

Added user Karl to group ldapgroup
Added user moris to group ldapgroup
Added user perf to group ldapgroup
Added user bruno to group ldapgroup

③ コマンド結果に問題がなければ、実際に同期します。

メンバ同期コマンド例

p4 -u super ldapsync -g ldapgroup

コマンド実行結果例

Added user Karl to group ldapgroup
Added user moris to group ldapgroup
Added user perf to group ldapgroup
Added user bruno to group ldapgroup

④ グループ仕様を確認し、メンバが[Users]フィールドに追加されていることを確認します。

グループ仕様確認コマンド例

p4 group -o ldapgroup

コマンド実行結果例

...
Owners:
    super
Users:
    Karl
    moris
    perf
    bruno

7. LDAP認証メンバ自動同期の設定

グループへのメンバ同期を自動で行うように構成可能変数を設定します。

① コマンドプロンプトから Perforce サーバへ管理者権限でログインします。

コマンド例

p4 -u super login

・super:管理者権限ユーザ

② 構成可能変数を設定します。

プロテクションテーブル編集コマンド例

p4 configure set "server_id#startup.1=ldapsync -g ldapgroup -i 1800"

・30秒間隔で、"ldapgroup"グループにActive Directory上で更新されたメンバ情報が同期される設定

8. プロテクションテーブルの設定

同期されたユーザのみがPerforceサーバへアクセスできるように、プロテクションテーブルを定義します。

① コマンドプロンプトから Perforce サーバへ管理者権限でログインします。

コマンド例

p4 -u super login

・super:管理者権限ユーザ

② コマンドを実行し、プロテクションテーブルを編集します。(テキストエディタが起動します)
編集完了後、内容を保存し、テキストエディタを終了します。

プロテクションテーブル編集コマンド

p4 protect

■ 編集内容
※全てのユーザに対して"write"権限が与えられていた場合の編集例です。

編集前write user * * //...
編集後write group ldapgroup * //...


Helix Core(P4D)とActive Directory(LDAP)との連携手順は、以上となります。